diff options
author | Link Mauve <linkmauve@linkmauve.fr> | 2021-01-29 16:11:29 +0100 |
---|---|---|
committer | Link Mauve <linkmauve@linkmauve.fr> | 2021-01-29 16:11:29 +0100 |
commit | dbcd0c6050f6c50c24ff1a86129a29133371373e (patch) | |
tree | 1836f0e2981b2d7f64130bc11038ea9c9ee9cf86 /slixmpp/plugins/xep_0198/stream_management.py | |
parent | 370abb1d983bf1aabff523d4bbc5c9b89a2becb8 (diff) | |
parent | f93af07882d19fd60af1696ccfa784ac4c03aa42 (diff) | |
download | slixmpp-dbcd0c6050f6c50c24ff1a86129a29133371373e.tar.gz slixmpp-dbcd0c6050f6c50c24ff1a86129a29133371373e.tar.bz2 slixmpp-dbcd0c6050f6c50c24ff1a86129a29133371373e.tar.xz slixmpp-dbcd0c6050f6c50c24ff1a86129a29133371373e.zip |
Merge branch 'reconnect-logic-doomed' into 'master'
fix reconnect logic
See merge request poezio/slixmpp!104
Diffstat (limited to 'slixmpp/plugins/xep_0198/stream_management.py')
-rw-r--r-- | slixmpp/plugins/xep_0198/stream_management.py | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/slixmpp/plugins/xep_0198/stream_management.py b/slixmpp/plugins/xep_0198/stream_management.py index 0200646a..1344235a 100644 --- a/slixmpp/plugins/xep_0198/stream_management.py +++ b/slixmpp/plugins/xep_0198/stream_management.py @@ -174,6 +174,9 @@ class XEP_0198(BasePlugin): def send_ack(self): """Send the current ack count to the server.""" + if not self.xmpp.transport: + log.debug('Disconnected: not sending ack') + return ack = stanza.Ack(self.xmpp) ack['h'] = self.handled self.xmpp.send_raw(str(ack)) @@ -198,20 +201,7 @@ class XEP_0198(BasePlugin): # We've already negotiated stream management, # so no need to do it again. return False - if not self.sm_id: - if 'bind' in self.xmpp.features: - enable = stanza.Enable(self.xmpp) - enable['resume'] = self.allow_resume - enable.send() - log.debug("enabling SM") - - waiter = Waiter('enabled_or_failed', - MatchMany([ - MatchXPath(stanza.Enabled.tag_name()), - MatchXPath(stanza.Failed.tag_name())])) - self.xmpp.register_handler(waiter) - result = await waiter.wait() - elif self.sm_id and self.allow_resume and 'bind' not in self.xmpp.features: + if self.sm_id and self.allow_resume and 'bind' not in self.xmpp.features: resume = stanza.Resume(self.xmpp) resume['h'] = self.handled resume['previd'] = self.sm_id @@ -229,6 +219,19 @@ class XEP_0198(BasePlugin): result = await waiter.wait() if result is not None and result.name == 'resumed': return True + self.xmpp.event("session_end") + if 'bind' in self.xmpp.features: + enable = stanza.Enable(self.xmpp) + enable['resume'] = self.allow_resume + enable.send() + log.debug("enabling SM") + + waiter = Waiter('enabled_or_failed', + MatchMany([ + MatchXPath(stanza.Enabled.tag_name()), + MatchXPath(stanza.Failed.tag_name())])) + self.xmpp.register_handler(waiter) + result = await waiter.wait() return False def _handle_enabled(self, stanza): |