improve bosh connection to ejabberd 3.0

This commit is contained in:
Yann Leboulanger 2011-05-04 22:47:38 +02:00
parent 4c624a5287
commit 0b5846d17a
1 changed files with 7 additions and 2 deletions

View File

@ -23,7 +23,7 @@ from hashlib import sha1
from transports_nb import NonBlockingTransport, NonBlockingHTTPBOSH,\
CONNECTED, CONNECTING, DISCONNECTED, DISCONNECTING,\
urisplit, DISCONNECT_TIMEOUT_SECONDS
from protocol import BOSHBody
from protocol import BOSHBody, Protocol, NS_CLIENT
from simplexml import Node
import logging
@ -190,13 +190,18 @@ class NonBlockingBOSH(NonBlockingTransport):
# when called after HTTP response (Payload=None) and when there are already
# some pending requests and no data to send, or when the socket is
# disconnected, we do nothing
if payload is None and \
if payload is None and \
total_pending_reqs > 0 and \
self.stanza_buffer == [] and \
self.prio_bosh_stanzas == [] or \
self.get_state()==DISCONNECTED:
return
# Add xmlns to stanza to help ejabberd server
if payload and isinstance(payload, Protocol):
if not payload.getNamespace():
payload.setNamespace(NS_CLIENT)
# now the payload is put to buffer and will be sent at some point
self.append_stanza(payload)