File tree Expand file tree Collapse file tree 2 files changed +17
-2
lines changed
main/java/io/socket/engineio/server/parser
test/java/io/socket/engineio/server/parser Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -114,7 +114,12 @@ public Packet<?> decodePacket(Object data) {
114114 final String stringData = (String ) data ;
115115 if (stringData .charAt (0 ) == 'b' ) {
116116 final Packet <byte []> packet = new Packet <>(Packet .MESSAGE );
117- packet .data = java .util .Base64 .getDecoder ().decode (stringData .substring (1 ));
117+ // Ignore line breaks, added by engine.io-client-java during base64 encode
118+ if (stringData .endsWith ("\n " )) {
119+ packet .data = java .util .Base64 .getDecoder ().decode (stringData .substring (1 , stringData .length () - 1 ));
120+ } else {
121+ packet .data = java .util .Base64 .getDecoder ().decode (stringData .substring (1 ));
122+ }
118123 return packet ;
119124 } else {
120125 final Packet <String > packet = new Packet <>(PACKETS_REVERSE .get (
Original file line number Diff line number Diff line change @@ -204,6 +204,16 @@ public void testDecodePacket_base64() {
204204 assertEquals (byte [].class , packetDecoded .data .getClass ());
205205 assertArrayEquals (packetOriginal .data , (byte []) packetDecoded .data );
206206 });
207+
208+ // Other socket.io libraries may add a line break to their base64 encoded output
209+ final Packet <byte []> packetOriginalLineBreak = new Packet <>(Packet .MESSAGE , "Engine.IO" .getBytes (StandardCharsets .UTF_8 ));
210+ Parser .PROTOCOL_V4 .encodePacket (packetOriginalLineBreak , false , data -> {
211+ data += "\n " ;
212+ Packet <?> packetDecoded = Parser .PROTOCOL_V4 .decodePacket (data );
213+ assertEquals (Packet .MESSAGE , packetDecoded .type );
214+ assertEquals (byte [].class , packetDecoded .data .getClass ());
215+ assertArrayEquals (packetOriginal .data , (byte []) packetDecoded .data );
216+ });
207217 }
208218
209219 @ Test (expected = IllegalArgumentException .class )
@@ -301,4 +311,4 @@ public void testDecodePayload_exit() {
301311 });
302312 });
303313 }
304- }
314+ }
You can’t perform that action at this time.
0 commit comments