summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Lukas <georg@op-co.de>2020-03-23 18:56:22 +0100
committerGeorg Lukas <georg@op-co.de>2020-03-23 18:59:29 +0100
commitd85efec7a245fee045fdd095221ccfa9bd43b58f (patch)
tree43c777033211d1497b643ffbd84c2072a73e5c8c
parent115c234527217bef1adf9e2ce611971d59905d57 (diff)
downloadslixmpp-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.py4
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.