]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixes parsing of multiple push messages in streaming mode (#12197)
authorFabian Lange <lange.fabian@gmail.com>
Wed, 17 Jul 2013 09:44:57 +0000 (11:44 +0200)
committerVaadin Code Review <review@vaadin.com>
Thu, 1 Aug 2013 10:03:34 +0000 (10:03 +0000)
The current atmosphere code can handle messages split up using the message
length header. But it does not handle the case where the header is actually
split up itself.
This patch solves it by making sure the length header stays intact.
Corresponding atmosphere ticket:
https://github.com/Atmosphere/atmosphere/issues/1199

Change-Id: If22c42ea63b0749c68df19c869b316f9b69f4317

WebContent/VAADIN/jquery.atmosphere.js

index 28a7d033bd944424d08281f00b921e4071a8effc..b2dd99f5d2bb276aff72437d763e5b7b1b4a39d1 100644 (file)
@@ -1219,8 +1219,15 @@ jQuery.atmosphere = function() {
                         messages.push(message.substring(0, messageLength));
                     }
 
-                    if (messages.length == 0 || (messageStart != -1 && message.length != 0 && messageLength != message.length)){
-                        response.partialMessage = messageLength + request.messageDelimiter + message ;
+                    if (messages.length == 0 || (message.length != 0 && messageLength != message.length)){
+                        if (messageStart == -1) {
+                            // http://dev.vaadin.com/ticket/12197
+                            // partialMessage must contain length header of next message
+                            // it starts at the end of the last message
+                            response.partialMessage = message.substring(messageLength);
+                        } else {
+                            response.partialMessage = messageLength + request.messageDelimiter + message ;
+                        }
                     } else {
                         response.partialMessage = "";
                     }