diff --git a/src/main/java/io/socket/engineio/parser/Parser.java b/src/main/java/io/socket/engineio/parser/Parser.java index 010ba9c..c34dce5 100644 --- a/src/main/java/io/socket/engineio/parser/Parser.java +++ b/src/main/java/io/socket/engineio/parser/Parser.java @@ -76,6 +76,10 @@ public class Parser { } public static Packet decodePacket(String data, boolean utf8decode) { + if (data == null) { + return err; + } + int type; try { type = Character.getNumericValue(data.charAt(0)); diff --git a/src/test/java/io/socket/engineio/parser/ParserTest.java b/src/test/java/io/socket/engineio/parser/ParserTest.java index a904312..86b7c7f 100644 --- a/src/test/java/io/socket/engineio/parser/ParserTest.java +++ b/src/test/java/io/socket/engineio/parser/ParserTest.java @@ -156,6 +156,13 @@ public class ParserTest { }); } + @Test + public void decodeEmptyPayload() { + Packet p = decodePacket((String)null); + assertThat(p.type, is(Packet.ERROR)); + assertThat(p.data, is(ERROR_DATA)); + } + @Test public void decodeBadFormat() { Packet p = decodePacket(":::");