diff --git a/sleekxmpp/clientxmpp.py b/sleekxmpp/clientxmpp.py index 3313328..69e7db6 100644 --- a/sleekxmpp/clientxmpp.py +++ b/sleekxmpp/clientxmpp.py @@ -98,11 +98,13 @@ class ClientXMPP(BaseXMPP): self.add_event_handler('connected', self._handle_connected) self.add_event_handler('session_bind', self._handle_session_bind) - self.add_event_handler('stream_start', self._handle_stream_start) - self.add_event_handler('session_start', self._handle_session_start) self.register_stanza(StreamFeatures) + self.register_handler( + Callback('Stream Features', + MatchXPath('{%s}features' % self.stream_ns), + self._handle_stream_features)) self.register_handler( Callback('Roster Update', MatchXPath('{%s}iq/{%s}query' % ( @@ -117,15 +119,6 @@ class ClientXMPP(BaseXMPP): self.register_plugin('feature_mechanisms', pconfig={'use_mech': sasl_mech} if sasl_mech else None) - def _handle_stream_start(self, root): - self.register_handler( - Callback('Stream Features', - MatchXPath('{%s}features' % self.stream_ns), - self._handle_stream_features)) - - def _handle_session_start(self, e): - self.remove_handler('Stream Features') - def connect(self, address=tuple(), reattempt=True, use_tls=True, use_ssl=False): """Connect to the XMPP server. diff --git a/sleekxmpp/features/feature_mechanisms/mechanisms.py b/sleekxmpp/features/feature_mechanisms/mechanisms.py index 86dbb36..deff5d3 100644 --- a/sleekxmpp/features/feature_mechanisms/mechanisms.py +++ b/sleekxmpp/features/feature_mechanisms/mechanisms.py @@ -63,17 +63,6 @@ class feature_mechanisms(base_plugin): self.xmpp.register_stanza(stanza.Challenge) self.xmpp.register_stanza(stanza.Response) - self.xmpp.add_event_handler('stream_start', - self._handle_stream_start) - self.xmpp.add_event_handler('session_start', - self._handle_session_start) - - self.xmpp.register_feature('mechanisms', - self._handle_sasl_auth, - restart=True, - order=self.config.get('order', 100)) - - def _handle_stream_start(self, root): self.xmpp.register_handler( Callback('SASL Success', MatchXPath(stanza.Success.tag_name()), @@ -91,10 +80,10 @@ class feature_mechanisms(base_plugin): MatchXPath(stanza.Challenge.tag_name()), self._handle_challenge)) - def _handle_session_start(self, e): - self.xmpp.remove_handler('SASL Success') - self.xmpp.remove_handler('SASL Failure') - self.xmpp.remove_handler('SASL Challenge') + self.xmpp.register_feature('mechanisms', + self._handle_sasl_auth, + restart=True, + order=self.config.get('order', 100)) def _handle_sasl_auth(self, features): """ diff --git a/sleekxmpp/features/feature_starttls/starttls.py b/sleekxmpp/features/feature_starttls/starttls.py index a7f048b..4e2b662 100644 --- a/sleekxmpp/features/feature_starttls/starttls.py +++ b/sleekxmpp/features/feature_starttls/starttls.py @@ -27,29 +27,19 @@ class feature_starttls(base_plugin): self.description = "STARTTLS Stream Feature" self.stanza = stanza - self.xmpp.register_feature('starttls', - self._handle_starttls, - restart=True, - order=self.config.get('order', 0)) - - self.xmpp.add_event_handler('stream_start', - self._handle_stream_start) - self.xmpp.add_event_handler('session_start', - self._handle_session_start) - - self.xmpp.register_stanza(stanza.Proceed) - self.xmpp.register_stanza(stanza.Failure) - register_stanza_plugin(StreamFeatures, stanza.STARTTLS) - - def _handle_stream_start(self, root): self.xmpp.register_handler( Callback('STARTTLS Proceed', MatchXPath(stanza.Proceed.tag_name()), self._handle_starttls_proceed, instream=True)) + self.xmpp.register_feature('starttls', + self._handle_starttls, + restart=True, + order=self.config.get('order', 0)) - def _handle_session_start(self, e): - self.xmpp.remove_handler('STARTTLS Proceed') + self.xmpp.register_stanza(stanza.Proceed) + self.xmpp.register_stanza(stanza.Failure) + register_stanza_plugin(StreamFeatures, stanza.STARTTLS) def _handle_starttls(self, features): """ diff --git a/sleekxmpp/test/sleektest.py b/sleekxmpp/test/sleektest.py index 3694c64..dd3df29 100644 --- a/sleekxmpp/test/sleektest.py +++ b/sleekxmpp/test/sleektest.py @@ -367,7 +367,6 @@ class SleekTest(unittest.TestCase): if skip: if socket != 'live': # Mark send queue as usable - self.xmpp.event('session_start') self.xmpp.session_started_event.set() # Clear startup stanzas self.xmpp.socket.next_sent(timeout=1) diff --git a/sleekxmpp/xmlstream/xmlstream.py b/sleekxmpp/xmlstream/xmlstream.py index 701ff24..4c8696b 100644 --- a/sleekxmpp/xmlstream/xmlstream.py +++ b/sleekxmpp/xmlstream/xmlstream.py @@ -1223,7 +1223,6 @@ class XMLStream(object): # as handshakes. self.stream_end_event.clear() self.start_stream_handler(root) - self.event('stream_start', root, direct=True) depth += 1 if event == b'end': depth -= 1