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.
This commit is contained in:
mathieui 2021-01-17 18:30:57 +01:00
parent 2631b25e3e
commit f38c61a6b9

View file

@ -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