changeset ec5ebfb65440 in /home/hg/repos/gajim details:http://hg.gajim.org/gajim?cmd=changeset;node=ec5ebfb65440 description: fix receiving long messages in several parts with BOSH. see #5401
diffstat: src/common/xmpp/transports_nb.py | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diffs (32 lines): diff -r 1c864180b75a -r ec5ebfb65440 src/common/xmpp/transports_nb.py --- a/src/common/xmpp/transports_nb.py Thu Nov 12 21:42:20 2009 +0100 +++ b/src/common/xmpp/transports_nb.py Thu Nov 12 22:13:11 2009 +0100 @@ -648,7 +648,8 @@ # append currently received data to HTTP msg in buffer self.recvbuff = '%s%s' % (self.recvbuff or '', data) - statusline, headers, httpbody, self.recvbuff = self.parse_http_message(self.recvbuff) + statusline, headers, httpbody, buffer_rest = self.parse_http_message( + self.recvbuff) if not (statusline and headers and httpbody): log.debug('Received incomplete HTTP response') @@ -668,6 +669,10 @@ log.info('not enough bytes in HTTP response - %d expected, %d got' % (self.expected_length, len(self.recvbuff))) else: + # First part of buffer has been extraced and is going to be handled, + # remove it from buffer + self.recvbuff = buffer_rest + # everything was received self.expected_length = 0 @@ -711,6 +716,7 @@ headers - dictionary of headers e.g. {'Content-Length': '604', 'Content-Type': 'text/xml; charset=utf-8'}, httpbody - string with http body) + http_rest - what is left in the message after a full HTTP header + body ''' message = message.replace('\r','') splitted = message.split('\n\n') _______________________________________________ Commits mailing list Commits@gajim.org http://lists.gajim.org/cgi-bin/listinfo/commits