From e6ced5545217a74569020fad3a0fe4374e31ed00 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 2 Nov 2017 10:32:38 +0300 Subject: [PATCH 1/4] Update README.md --- README.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index de4caf9..8d03320 100644 --- a/README.md +++ b/README.md @@ -50,11 +50,16 @@ Recent Releases ================================ #### Please Note: trunk is current development branch. +#### 20-Sep-2917 - version 1.7.13 released +Feature - Added option to change the SSL KeyFactoryAlgorithm using Configuration (thanks to @robymus) +Improvement - Binary ack handling improvements (thanks to Sergey Bushik) +Fixed - Failed to mark a promise as success because it has succeeded already (thanks to @robymus) + #### 27-Aug-2016 - version 1.7.12 released -Feature - `SocketIOServer.removeAllListeners` method added -Feature - `BroadcastOperations.sendEvent` method with `excludedClient` param added -Improvement - Redisson updated to 2.4.0 -Fixed - memory leak in Namespace object (thanks to @CrazyIvan007) +Feature - `SocketIOServer.removeAllListeners` method added +Feature - `BroadcastOperations.sendEvent` method with `excludedClient` param added +Improvement - Redisson updated to 2.4.0 +Fixed - memory leak in Namespace object (thanks to @CrazyIvan007) #### 13-Jul-2016 - version 1.7.11 released From 0c4764e93c7ec35fb46d925e2b4c92be4091460d Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 2 Nov 2017 10:34:11 +0300 Subject: [PATCH 2/4] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8d03320..cca0507 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Recent Releases ================================ #### Please Note: trunk is current development branch. -#### 20-Sep-2917 - version 1.7.13 released +#### 20-Sep-2017 - version 1.7.13 released Feature - Added option to change the SSL KeyFactoryAlgorithm using Configuration (thanks to @robymus) Improvement - Binary ack handling improvements (thanks to Sergey Bushik) Fixed - Failed to mark a promise as success because it has succeeded already (thanks to @robymus) From 34bf4d7541f81f6a6b60532594de657e2ef9f006 Mon Sep 17 00:00:00 2001 From: xudong82113 Date: Wed, 13 Dec 2017 22:49:20 +0800 Subject: [PATCH 3/4] restore sessionId from io Cookie. #505 --- .../socketio/handler/AuthorizeHandler.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/corundumstudio/socketio/handler/AuthorizeHandler.java b/src/main/java/com/corundumstudio/socketio/handler/AuthorizeHandler.java index 264db7c..3caeca9 100644 --- a/src/main/java/com/corundumstudio/socketio/handler/AuthorizeHandler.java +++ b/src/main/java/com/corundumstudio/socketio/handler/AuthorizeHandler.java @@ -22,6 +22,7 @@ import java.net.InetSocketAddress; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.UUID; import java.util.concurrent.TimeUnit; @@ -60,6 +61,8 @@ import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpResponse; import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.codec.http.QueryStringDecoder; +import io.netty.handler.codec.http.cookie.Cookie; +import io.netty.handler.codec.http.cookie.ServerCookieDecoder; @Sharable public class AuthorizeHandler extends ChannelInboundHandlerAdapter implements Disconnectable { @@ -178,12 +181,12 @@ public class AuthorizeHandler extends ChannelInboundHandlerAdapter implements Di Map errorData = new HashMap(); errorData.put("code", 0); errorData.put("message", "Transport unknown"); - + channel.attr(EncoderHandler.ORIGIN).set(origin); channel.writeAndFlush(new HttpErrorMessage(errorData)); return false; } - + ClientHead client = new ClientHead(sessionId, ackManager, disconnectable, storeFactory, data, clientsBox, transport, disconnectScheduler, configuration); channel.attr(ClientHead.CLIENT).set(client); clientsBox.addClient(client); @@ -210,12 +213,17 @@ public class AuthorizeHandler extends ChannelInboundHandlerAdapter implements Di random uuid to be generated instead (same as not passing a cookie in the first place). */ private UUID generateOrGetSessionIdFromRequest(HttpHeaders headers) { - List values = headers.getAll("io"); - if (values.size() == 1) { - try { - return UUID.fromString(values.get(0)); - } catch ( IllegalArgumentException iaex ) { - log.warn("Malformed UUID received for session! io=" + values.get(0)); + for (String cookieHeader: headers.getAll(HttpHeaderNames.COOKIE)) { + Set cookies = ServerCookieDecoder.LAX.decode(cookieHeader); + + for (Cookie cookie : cookies) { + if (cookie.name().equals("io")) { + try { + return UUID.fromString(cookie.value()); + } catch ( IllegalArgumentException iaex ) { + log.warn("Malformed UUID received for session! io=" + cookie.value()); + } + } } } return UUID.randomUUID(); From c7782760aa0869c93f7b1fd7aa42b0730feae99f Mon Sep 17 00:00:00 2001 From: vonway Date: Sat, 20 Jan 2018 13:27:30 +0800 Subject: [PATCH 4/4] Fix NumberFormatException when b64 is bool value. Cause: - when the b64 is set as bool value like "http:///socket.io/1/?EIO=2&transport=polling&b64=true", Exception [java.lang.NumberFormatException: For input string: "true"] will throw. Because it try to parse a string "true" to Integer. Fix: - take true as 1 and take false as 0 --- .../socketio/transport/PollingTransport.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/corundumstudio/socketio/transport/PollingTransport.java b/src/main/java/com/corundumstudio/socketio/transport/PollingTransport.java index 2f70ce2..50e6427 100644 --- a/src/main/java/com/corundumstudio/socketio/transport/PollingTransport.java +++ b/src/main/java/com/corundumstudio/socketio/transport/PollingTransport.java @@ -88,7 +88,13 @@ public class PollingTransport extends ChannelInboundHandlerAdapter { ctx.channel().attr(EncoderHandler.JSONP_INDEX).set(index); } if (b64 != null && b64.get(0) != null) { - Integer enable = Integer.valueOf(b64.get(0)); + String flag = b64.get(0); + if ("true".equals(flag)) { + flag = "1"; + } else if ("false".equals(flag)) { + flag = "0"; + } + Integer enable = Integer.valueOf(flag); ctx.channel().attr(EncoderHandler.B64).set(enable == 1); }