From 25248bb964328c1dc5685f5eda04d465d857b7ae Mon Sep 17 00:00:00 2001 From: totodore Date: Sat, 24 Jan 2026 12:31:30 +0100 Subject: [PATCH 1/3] fix(socketio/ns): remove socket in case of ns connect failure --- Cargo.lock | 2 +- crates/socketioxide/src/ns.rs | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) 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..37003b4a 100644 --- a/crates/socketioxide/src/ns.rs +++ b/crates/socketioxide/src/ns.rs @@ -132,8 +132,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); } From 2df6a1492962acc01af3d6a9a279112a96890748 Mon Sep 17 00:00:00 2001 From: totodore Date: Sat, 24 Jan 2026 12:39:12 +0100 Subject: [PATCH 2/3] fix(socketio/ns): remove socket in case of ns connect failure --- crates/socketioxide/src/ns.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/socketioxide/src/ns.rs b/crates/socketioxide/src/ns.rs index 37003b4a..44cb15e9 100644 --- a/crates/socketioxide/src/ns.rs +++ b/crates/socketioxide/src/ns.rs @@ -114,7 +114,7 @@ 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"); esocket.close(engineioxide::DisconnectReason::PacketParsingError); } return Err(ConnectFail); From e8b61bd50302e6049384194626310d49b9064e80 Mon Sep 17 00:00:00 2001 From: totodore Date: Sat, 24 Jan 2026 12:42:27 +0100 Subject: [PATCH 3/3] fix(socketio/ns): remove socket in case of ns connect failure --- crates/socketioxide/src/ns.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crates/socketioxide/src/ns.rs b/crates/socketioxide/src/ns.rs index 44cb15e9..e39f5504 100644 --- a/crates/socketioxide/src/ns.rs +++ b/crates/socketioxide/src/ns.rs @@ -115,6 +115,10 @@ impl Namespace { if let Err(_e) = socket.send(Packet::connect_error(self.path.clone(), data)) { #[cfg(feature = "tracing")] 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);