From dda2473d351215309649646f4e5ffff8a9e6885a Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Tue, 27 Mar 2012 23:27:24 -0700 Subject: Reset stream management state on session_end. --- sleekxmpp/plugins/xep_0198/stream_management.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sleekxmpp/plugins/xep_0198/stream_management.py b/sleekxmpp/plugins/xep_0198/stream_management.py index bc3f5a04..7045ad21 100644 --- a/sleekxmpp/plugins/xep_0198/stream_management.py +++ b/sleekxmpp/plugins/xep_0198/stream_management.py @@ -82,6 +82,10 @@ class XEP_0198(BasePlugin): self.xmpp.register_stanza(stanza.Ack) self.xmpp.register_stanza(stanza.RequestAck) + # Only end the session when a element is sent, + # not just because the connection has died. + self.xmpp.end_session_on_disconnect = False + # Register the feature twice because it may be ordered two # different ways: enabling after binding and resumption # before binding. @@ -127,7 +131,16 @@ class XEP_0198(BasePlugin): self.xmpp.add_filter('in', self._handle_incoming) self.xmpp.add_filter('out_sync', self._handle_outgoing) - self.xmpp.add_event_handler('need_ack', self.request_ack) + self.xmpp.add_event_handler('session_end', self.session_end) + + def session_end(self, event): + """Reset stream management state.""" + self.enabled.clear() + self.unacked_queue.clear() + self.sm_id = None + self.handled = 0 + self.seq = 0 + self.last_ack = 0 def send_ack(self): """Send the current ack count to the server.""" -- cgit v1.2.3