Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/python-nbxmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFedor Brunner <fedor.brunner@azet.sk>2014-03-31 18:54:20 +0400
committerFedor Brunner <fedor.brunner@azet.sk>2014-03-31 18:54:20 +0400
commit765fdf616403010a06dca59c84ddd2732c7cd1b8 (patch)
treea3757d8d025cb819f8b51140713b6b80f09f7d96
parent135984414a9393e6331e74310a285e13c6f4c464 (diff)
BOSH doesn't support channel binding.python3
BOSH (XEP-0124) uses short lived HTTPS connections for encryption. Channel binding requires long lived TLS connection, therefor doesn't work with XMPP over BOSH. Fixes #22
-rw-r--r--nbxmpp/client_nb.py7
-rw-r--r--nbxmpp/tls_nb.py7
-rw-r--r--nbxmpp/transports_nb.py2
3 files changed, 10 insertions, 6 deletions
diff --git a/nbxmpp/client_nb.py b/nbxmpp/client_nb.py
index c4b1ed2..556321c 100644
--- a/nbxmpp/client_nb.py
+++ b/nbxmpp/client_nb.py
@@ -495,9 +495,10 @@ class NonBlockingClient:
self._channel_binding = None
if self.connected in ('ssl', 'tls'):
try:
- self._channel_binding = self.Connection.NonBlockingTLS.get_channel_binding()
- # TLS handshake is finished so channel binding data muss exist
- assert (self._channel_binding != None)
+ if self.protocol_type != 'BOSH':
+ self._channel_binding = self.Connection.NonBlockingTLS.get_channel_binding()
+ # TLS handshake is finished so channel binding data muss exist
+ assert (self._channel_binding != None)
except NotImplementedError:
pass
if auth_mechs == None:
diff --git a/nbxmpp/tls_nb.py b/nbxmpp/tls_nb.py
index 25be057..f7cb63e 100644
--- a/nbxmpp/tls_nb.py
+++ b/nbxmpp/tls_nb.py
@@ -508,7 +508,10 @@ class NonBlockingTLS(PlugIn):
Get channel binding data. RFC 5929
"""
sslObj = self._owner._sslObj
- try:
- return sslObj.get_channel_binding()
+ try:
+ if USE_PYOPENSSL:
+ return sslObj.get_finished()
+ else:
+ return sslObj.get_channel_binding()
except AttributeError:
raise NotImplementedError
diff --git a/nbxmpp/transports_nb.py b/nbxmpp/transports_nb.py
index e9e8889..662b7eb 100644
--- a/nbxmpp/transports_nb.py
+++ b/nbxmpp/transports_nb.py
@@ -555,7 +555,7 @@ class NonBlockingTCP(NonBlockingTransport, IdleObject):
return None
self.sendbuff = self.sendqueue.pop(0)
try:
- send_count = self._send(self.sendbuff)
+ send_count = self._send(self.sendbuff.encode("utf-8"))
if send_count:
sent_data = self.sendbuff[:send_count]
self.sendbuff = self.sendbuff[send_count:]