diff options
Diffstat (limited to 'crates/tor-proto/src/circuit.rs')
| -rw-r--r-- | crates/tor-proto/src/circuit.rs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/crates/tor-proto/src/circuit.rs b/crates/tor-proto/src/circuit.rs index f3dae893e..0868bac23 100644 --- a/crates/tor-proto/src/circuit.rs +++ b/crates/tor-proto/src/circuit.rs @@ -56,7 +56,10 @@ use crate::circuit::reactor::{ }; pub use crate::circuit::unique_id::UniqId; use crate::crypto::cell::{HopNum, InboundClientCrypt, OutboundClientCrypt}; -use crate::stream::{DataStream, ResolveStream, StreamParameters, StreamReader}; +use crate::stream::{ + AnyCmdChecker, DataCmdChecker, DataStream, ResolveCmdChecker, ResolveStream, StreamParameters, + StreamReader, +}; use crate::{Error, ResolveError, Result}; use tor_cell::{ chancell::{self, msg::AnyChanMsg, CircId}, @@ -404,6 +407,7 @@ impl ClientCirc { async fn begin_stream_impl( &self, begin_msg: AnyRelayMsg, + cmd_checker: AnyCmdChecker, ) -> Result<(StreamReader, StreamTarget)> { // TODO: Possibly this should take a hop, rather than just // assuming it's the last hop. @@ -428,6 +432,7 @@ impl ClientCirc { sender, rx: msg_rx, done: tx, + cmd_checker, }) .map_err(|_| Error::CircuitClosed)?; @@ -453,7 +458,9 @@ impl ClientCirc { /// Start a DataStream (anonymized connection) to the given /// address and port, using a BEGIN cell. async fn begin_data_stream(&self, msg: AnyRelayMsg, optimistic: bool) -> Result<DataStream> { - let (reader, target) = self.begin_stream_impl(msg).await?; + let (reader, target) = self + .begin_stream_impl(msg, DataCmdChecker::new_any()) + .await?; let mut stream = DataStream::new(reader, target); if !optimistic { stream.wait_for_connection().await?; @@ -539,7 +546,9 @@ impl ClientCirc { /// Helper: Send the resolve message, and read resolved message from /// resolve stream. async fn try_resolve(&self, msg: Resolve) -> Result<Resolved> { - let (reader, _) = self.begin_stream_impl(msg.into()).await?; + let (reader, _) = self + .begin_stream_impl(msg.into(), ResolveCmdChecker::new_any()) + .await?; let mut resolve_stream = ResolveStream::new(reader); resolve_stream.read_msg().await } |
