diff options
author | mathieui <mathieui@mathieui.net> | 2021-01-17 18:30:57 +0100 |
---|---|---|
committer | mathieui <mathieui@mathieui.net> | 2021-01-17 18:30:57 +0100 |
commit | f38c61a6b9ee4730577374ab02fb66d258b9a831 (patch) | |
tree | 8b5b3825d69614fae2c1801c39d5a3595d5fbef2 | |
parent | 2631b25e3e58311b9d101b4217f878fa375db974 (diff) | |
download | slixmpp-f38c61a6b9ee4730577374ab02fb66d258b9a831.tar.gz slixmpp-f38c61a6b9ee4730577374ab02fb66d258b9a831.tar.bz2 slixmpp-f38c61a6b9ee4730577374ab02fb66d258b9a831.tar.xz slixmpp-f38c61a6b9ee4730577374ab02fb66d258b9a831.zip |
XMLStream: Only fire "disconnected" after removal of related objects
Otherwise we could end up reconnecting and getting some useful things
like the XML parser or other stuff removed afterwards.
Also, move 'session_end' before 'disconnected', it makes more sense that
way.
-rw-r--r-- | slixmpp/xmlstream/xmlstream.py | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/slixmpp/xmlstream/xmlstream.py b/slixmpp/xmlstream/xmlstream.py index 14020e1c..dc2af77e 100644 --- a/slixmpp/xmlstream/xmlstream.py +++ b/slixmpp/xmlstream/xmlstream.py @@ -458,9 +458,6 @@ class XMLStream(asyncio.BaseProtocol): closure of the TCP connection """ log.info("connection_lost: %s", (exception,)) - self.event("disconnected", self.disconnect_reason or exception and exception.strerror) - if self.end_session_on_disconnect: - self.event('session_end') # All these objects are associated with one TCP connection. Since # we are not connected anymore, destroy them self.parser = None @@ -468,6 +465,10 @@ class XMLStream(asyncio.BaseProtocol): self.socket = None if self._run_filters: self._run_filters.cancel() + # Fire the events after cleanup + if self.end_session_on_disconnect: + self.event('session_end') + self.event("disconnected", self.disconnect_reason or exception and exception.strerror) def cancel_connection_attempt(self): """ @@ -481,7 +482,6 @@ class XMLStream(asyncio.BaseProtocol): self._current_connection_attempt = None if self._run_filters: self._run_filters.cancel() - def disconnect(self, wait: float = 2.0, reason: Optional[str] = None, ignore_send_queue: bool = False) -> None: """Close the XML stream and wait for an acknowldgement from the server for |