diff --git a/async-ssh2-lite/src/agent.rs b/async-ssh2-lite/src/agent.rs index 9aa6ca3..0da497d 100644 --- a/async-ssh2-lite/src/agent.rs +++ b/async-ssh2-lite/src/agent.rs @@ -44,7 +44,7 @@ where { pub fn new(stream: S) -> Result { let mut session = get_session(None)?; - session.set_tcp_stream(stream.as_raw_socket()); + session.set_tcp_stream(crate::util::RawSocketWrapper(stream.as_raw_socket())); let stream = Arc::new(stream); diff --git a/async-ssh2-lite/src/session.rs b/async-ssh2-lite/src/session.rs index ccf23ef..3473967 100644 --- a/async-ssh2-lite/src/session.rs +++ b/async-ssh2-lite/src/session.rs @@ -62,7 +62,7 @@ where configuration: impl Into>, ) -> Result { let mut session = get_session(configuration)?; - session.set_tcp_stream(stream.as_raw_socket()); + session.set_tcp_stream(crate::util::RawSocketWrapper(stream.as_raw_socket())); let stream = Arc::new(stream); diff --git a/async-ssh2-lite/src/util.rs b/async-ssh2-lite/src/util.rs index ff2e1d3..924ad56 100644 --- a/async-ssh2-lite/src/util.rs +++ b/async-ssh2-lite/src/util.rs @@ -29,3 +29,14 @@ impl ConnectInfo { Self::Unix(path.as_ref().into()) } } + +#[cfg(windows)] +pub struct RawSocketWrapper(pub std::os::windows::io::RawSocket); + +#[cfg(windows)] +impl std::os::windows::io::AsRawSocket for RawSocketWrapper { + #[inline] + fn as_raw_socket(&self) -> std::os::windows::io::RawSocket { + self.0 + } +}