From a31da6080fbe2fe48473fa5af20e32f575e81240 Mon Sep 17 00:00:00 2001 From: Sergey Bushik Date: Sun, 23 Jul 2017 17:08:48 +0300 Subject: [PATCH 1/2] Fixed regression introduced after BINARY_ACK change --- .../socketio/protocol/PacketDecoder.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java b/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java index 4473bff..c2e101b 100644 --- a/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java +++ b/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java @@ -302,10 +302,12 @@ public class PacketDecoder { if (packet.getSubType() == PacketType.EVENT || packet.getSubType() == PacketType.BINARY_EVENT) { - ByteBufInputStream in = new ByteBufInputStream(frame); - Event event = jsonSupport.readValue(packet.getNsp(), in, Event.class); - packet.setName(event.getName()); - packet.setData(event.getArgs()); + if (!packet.hasAttachments() || packet.isAttachmentsLoaded()) { + ByteBufInputStream in = new ByteBufInputStream(frame); + Event event = jsonSupport.readValue(packet.getNsp(), in, Event.class); + packet.setName(event.getName()); + packet.setData(event.getArgs()); + } } } } From 28a7fb833160e7aa772ad2681c710920b6dc59fb Mon Sep 17 00:00:00 2001 From: Sergey Bushik Date: Sun, 23 Jul 2017 17:18:04 +0300 Subject: [PATCH 2/2] Skip body parsing if attachments aren't loaded --- .../socketio/protocol/PacketDecoder.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java b/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java index c2e101b..c3e838c 100644 --- a/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java +++ b/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java @@ -292,6 +292,10 @@ public class PacketDecoder { head.setLastBinaryPacket(packet); } + if (packet.hasAttachments() && !packet.isAttachmentsLoaded()) { + return; + } + if (packet.getSubType() == PacketType.ACK || packet.getSubType() == PacketType.BINARY_ACK) { ByteBufInputStream in = new ByteBufInputStream(frame); @@ -302,12 +306,10 @@ public class PacketDecoder { if (packet.getSubType() == PacketType.EVENT || packet.getSubType() == PacketType.BINARY_EVENT) { - if (!packet.hasAttachments() || packet.isAttachmentsLoaded()) { - ByteBufInputStream in = new ByteBufInputStream(frame); - Event event = jsonSupport.readValue(packet.getNsp(), in, Event.class); - packet.setName(event.getName()); - packet.setData(event.getArgs()); - } + ByteBufInputStream in = new ByteBufInputStream(frame); + Event event = jsonSupport.readValue(packet.getNsp(), in, Event.class); + packet.setName(event.getName()); + packet.setData(event.getArgs()); } } }