diff --git a/Cargo.lock b/Cargo.lock index 4a524b1b..c3e8f904 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2314,7 +2314,7 @@ dependencies = [ [[package]] name = "socketioxide-redis" -version = "0.3.0" +version = "0.4.0" dependencies = [ "bytes", "fred", diff --git a/crates/socketioxide/src/ns.rs b/crates/socketioxide/src/ns.rs index 51365cc6..e39f5504 100644 --- a/crates/socketioxide/src/ns.rs +++ b/crates/socketioxide/src/ns.rs @@ -114,7 +114,11 @@ impl Namespace { let data = e.to_string(); if let Err(_e) = socket.send(Packet::connect_error(self.path.clone(), data)) { #[cfg(feature = "tracing")] - tracing::debug!("error sending connect_error packet: {:?}, closing conn", _e); + tracing::debug!(%sid, "error sending connect_error packet: {_e}, closing conn"); + + // user middleware code might have made the socket join some + // room in the local/remote adapter. + self.remove_socket(sid); esocket.close(engineioxide::DisconnectReason::PacketParsingError); } return Err(ConnectFail); @@ -132,8 +136,10 @@ impl Namespace { }; if let Err(_e) = socket.send(Packet::connect(self.path.clone(), payload)) { #[cfg(feature = "tracing")] - tracing::debug!("error sending connect packet: {:?}, closing conn", _e); - esocket.close(engineioxide::DisconnectReason::PacketParsingError); + tracing::debug!(%sid, "error sending connect packet: {_e}, closing conn"); + + self.remove_socket(sid); + esocket.close(engineioxide::DisconnectReason::TransportError); return Err(ConnectFail); }