diff options
author | Georg Lukas <georg@op-co.de> | 2020-03-23 18:56:22 +0100 |
---|---|---|
committer | Georg Lukas <georg@op-co.de> | 2020-03-23 18:59:29 +0100 |
commit | d85efec7a245fee045fdd095221ccfa9bd43b58f (patch) | |
tree | 43c777033211d1497b643ffbd84c2072a73e5c8c | |
parent | 115c234527217bef1adf9e2ce611971d59905d57 (diff) | |
download | slixmpp-d85efec7a245fee045fdd095221ccfa9bd43b58f.tar.gz slixmpp-d85efec7a245fee045fdd095221ccfa9bd43b58f.tar.bz2 slixmpp-d85efec7a245fee045fdd095221ccfa9bd43b58f.tar.xz slixmpp-d85efec7a245fee045fdd095221ccfa9bd43b58f.zip |
reconnect: fix callback when not currently connected
The 'disconnected' event is normally fired from connection_lost(), which
is called by the connection code when the connection is lost after being
established. However, if the connection wasn't successfully established,
a manual /reconnect no-ops because it waits for the 'disconnected'
callback which never fires. This patch does two things:
1. Immediately fire a 'disconnected' event in disconnect() if there is
no transport.
2. Register the 'disconnected' event handler in reconnect() *before* it
can be fired.
-rw-r--r-- | slixmpp/xmlstream/xmlstream.py | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/slixmpp/xmlstream/xmlstream.py b/slixmpp/xmlstream/xmlstream.py index dbf515ca..c3c82a37 100644 --- a/slixmpp/xmlstream/xmlstream.py +++ b/slixmpp/xmlstream/xmlstream.py @@ -494,6 +494,8 @@ class XMLStream(asyncio.BaseProtocol): self.send_raw(self.stream_footer) self.schedule('Disconnect wait', wait, self.abort, repeat=False) + else: + self.event("disconnected", reason) def abort(self): """ @@ -512,8 +514,8 @@ class XMLStream(asyncio.BaseProtocol): when the server acknowledgement is received), call connect() """ log.debug("reconnecting...") - self.disconnect(wait, reason) self.add_event_handler('disconnected', lambda event: self.connect(), disposable=True) + self.disconnect(wait, reason) def configure_socket(self): """Set timeout and other options for self.socket. |