summaryrefslogtreecommitdiff
path: root/sleekxmpp/features/feature_starttls/starttls.py
diff options
context:
space:
mode:
Diffstat (limited to 'sleekxmpp/features/feature_starttls/starttls.py')
-rw-r--r--sleekxmpp/features/feature_starttls/starttls.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/sleekxmpp/features/feature_starttls/starttls.py b/sleekxmpp/features/feature_starttls/starttls.py
index 4e2b6621..a7f048b1 100644
--- a/sleekxmpp/features/feature_starttls/starttls.py
+++ b/sleekxmpp/features/feature_starttls/starttls.py
@@ -27,20 +27,30 @@ class feature_starttls(base_plugin):
self.description = "STARTTLS Stream Feature"
self.stanza = stanza
- 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))
+ 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))
+
+ def _handle_session_start(self, e):
+ self.xmpp.remove_handler('STARTTLS Proceed')
+
def _handle_starttls(self, features):
"""
Handle notification that the server supports TLS.