diff --git a/src/websocket.rs b/src/websocket.rs index dc3deedf5..af797acc1 100644 --- a/src/websocket.rs +++ b/src/websocket.rs @@ -213,8 +213,8 @@ impl WsFramedStream { match stream { Either::Left(stream) => { // MaybeTlsStream::get_ref() handles Plain, NativeTls and Rustls, - // returning the underlying TcpStream for peer_addr(). - let addr = stream.get_ref().get_ref().peer_addr()?; + // returning the underlying TcpStream for local_addr(). + let addr = stream.get_ref().get_ref().local_addr()?; Ok((Either::Left(stream), addr)) } Either::Right((stream, addr)) => Ok((Either::Right(stream), addr)), diff --git a/tests/websocket_proxy.rs b/tests/websocket_proxy.rs index 5d4a15ab9..2f3f29763 100644 --- a/tests/websocket_proxy.rs +++ b/tests/websocket_proxy.rs @@ -243,19 +243,22 @@ async fn direct_round_trip(wss: bool) { let url = format!("{}://{addr}/ws/id", if wss { "wss" } else { "ws" }); upsert_tls_cache(&url, TlsType::Rustls, true); let server = tokio::spawn(async move { - let (stream, _) = listener.accept().await.unwrap(); + let (stream, client_addr) = listener.accept().await.unwrap(); let mut stream = DynTcpStream(Box::new(stream)); if wss { stream = DynTcpStream(Box::new(tls_acceptor().accept(stream).await.unwrap())); } echo(stream, "/ws/id", &addr.to_string()).await; + client_addr }); let stream = socket_client::connect_tcp(url, TIMEOUT).await.unwrap(); + let local_addr = stream.local_addr(); exchange(stream).await; - timeout(Duration::from_millis(TIMEOUT), server) + let client_addr = timeout(Duration::from_millis(TIMEOUT), server) .await .unwrap() .unwrap(); + assert_eq!(local_addr, client_addr); } async fn tcp_proxy_round_trip() {