Author: asterix Date: 2007-04-25 12:30:07 +0200 (Wed, 25 Apr 2007) New Revision: 8103
Modified: trunk/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: trunk/src/common/zeroconf/client_zeroconf.py =================================================================== --- trunk/src/common/zeroconf/client_zeroconf.py 2007-04-25 10:25:22 UTC (rev 8102) +++ trunk/src/common/zeroconf/client_zeroconf.py 2007-04-25 10:30:07 UTC (rev 8103) @@ -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):