From 0b5846d17aa7fab557cb61861869c0a7826c3ca7 Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Wed, 4 May 2011 22:47:38 +0200
Subject: [PATCH] improve bosh connection to ejabberd 3.0

---
 src/common/xmpp/bosh.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/common/xmpp/bosh.py b/src/common/xmpp/bosh.py
index 08796c4fe5..353e798261 100644
--- a/src/common/xmpp/bosh.py
+++ b/src/common/xmpp/bosh.py
@@ -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)
 
-- 
GitLab