From 4cb9f7119c1970ed52b69fedfab89468a3375e5f Mon Sep 17 00:00:00 2001 From: Nikita Date: Sat, 28 Sep 2013 14:27:05 +0400 Subject: [PATCH] Fix client not found bug. --- .../socketio/transport/WebSocketTransport.java | 7 +++++++ .../socketio/transport/XHRPollingTransport.java | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java b/src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java index 46eeaad..e6495bb 100644 --- a/src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java +++ b/src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java @@ -83,6 +83,13 @@ public class WebSocketTransport extends BaseTransport { } else if (msg instanceof TextWebSocketFrame) { TextWebSocketFrame frame = (TextWebSocketFrame) msg; WebSocketClient client = channelId2Client.get(ctx.channel()); + if (client == null) { + log.debug("Client with was already disconnected. Channel closed!"); + ctx.channel().close(); + frame.release(); + return; + } + ctx.pipeline().fireChannelRead(new PacketsMessage(client, frame.content())); frame.release(); } else if (msg instanceof FullHttpRequest) { diff --git a/src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java b/src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java index f4d8af0..737ae79 100644 --- a/src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java +++ b/src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java @@ -87,8 +87,11 @@ public class XHRPollingTransport extends BaseTransport { QueryStringDecoder queryDecoder = new QueryStringDecoder(req.getUri()); if (queryDecoder.path().startsWith(path)) { - handleMessage(req, queryDecoder, ctx); - req.release(); + try { + handleMessage(req, queryDecoder, ctx); + } finally { + req.release(); + } return; } }