Author: asterix
Date: 2007-08-31 09:57:39 +0200 (Fri, 31 Aug 2007)
New Revision: 8651
Modified:
branches/gajim_0.11.1/src/common/zeroconf/client_zeroconf.py
Log:
send stream:features in zeroconf network, and send stanza only when other part reply to stream initialization. fixes #3057
Modified: branches/gajim_0.11.1/src/common/zeroconf/client_zeroconf.py
===================================================================
--- branches/gajim_0.11.1/src/common/zeroconf/client_zeroconf.py 2007-08-31 07:56:38 UTC (rev 8650)
+++ branches/gajim_0.11.1/src/common/zeroconf/client_zeroconf.py 2007-08-31 07:57:39 UTC (rev 8651)
@@ -158,10 +158,6 @@
self.Connection.PlugIn(self)
dispatcher_nb.Dispatcher().PlugIn(self)
self._register_handlers()
- if self.sock_type == TYPE_CLIENT:
- while self.stanzaqueue:
- stanza, is_message = self.stanzaqueue.pop(0)
- self.send(stanza, is_message)
def StreamInit(self):
''' Send an initial stream header. '''
@@ -178,7 +174,6 @@
def send_stream_header(self):
self.Dispatcher._metastream = Node('stream:stream')
self.Dispatcher._metastream.setNamespace(self.Namespace)
- # XXX TLS support
self.Dispatcher._metastream.setAttr('version', '1.0')
self.Dispatcher._metastream.setAttr('xmlns:stream', NS_STREAMS)
self.Dispatcher._metastream.setAttr('from', self.conn_holder.zeroconf.name)
@@ -197,9 +192,19 @@
if attrs.has_key('from'):
self.to = attrs['from']
self.send_stream_header()
+ if attrs.has_key('version') and attrs['version'] == '1.0':
+ # other part supports stream features
+ features = Node('stream:features')
+ features.T.mechanisms.setNamespace(NS_SASL)
+ features.T.mechanisms.NT.mechanism = 'PLAIN'
+ self.Dispatcher.send(features)
while self.stanzaqueue:
stanza, is_message = self.stanzaqueue.pop(0)
self.send(stanza, is_message)
+ elif self.sock_type == TYPE_CLIENT:
+ while self.stanzaqueue:
+ stanza, is_message = self.stanzaqueue.pop(0)
+ self.send(stanza, is_message)
def on_disconnect(self):