diff --git a/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java b/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java index c3bd95a..016ea5a 100644 --- a/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java +++ b/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java @@ -300,22 +300,27 @@ public class PacketDecoder { } } } - - private String readNamespace(ByteBuf frame){ + + private String readNamespace(ByteBuf frame) { + /** * namespace post request with url queryString, like * /message?a=1, * /message, */ - int endIndex = frame.bytesBefore((byte)'?'); - if(endIndex > 0){ - return readString(frame,endIndex); + ByteBuf buffer = frame.slice(); + // skip this frame + frame.readerIndex(frame.readerIndex() + frame.readableBytes()); + + int endIndex = buffer.bytesBefore((byte) '?'); + if (endIndex > 0) { + return readString(buffer, endIndex); } - endIndex = frame.bytesBefore((byte)','); - if(endIndex > 0){ - return readString(frame,endIndex); + endIndex = buffer.bytesBefore((byte) ','); + if (endIndex > 0) { + return readString(buffer, endIndex); } - return readString(frame); + return readString(buffer); } }