From 326bbb5e91564a39553b13f5a3a00b7ff5dd40ec Mon Sep 17 00:00:00 2001 From: Fabian Lange Date: Wed, 17 Jul 2013 11:44:57 +0200 Subject: Fixes parsing of multiple push messages in streaming mode (#12197) 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 | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/WebContent/VAADIN/jquery.atmosphere.js b/WebContent/VAADIN/jquery.atmosphere.js index 28a7d033bd..b2dd99f5d2 100644 --- a/WebContent/VAADIN/jquery.atmosphere.js +++ b/WebContent/VAADIN/jquery.atmosphere.js @@ -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 = ""; } -- cgit v1.2.3