summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--slixmpp/xmlstream/xmlstream.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/slixmpp/xmlstream/xmlstream.py b/slixmpp/xmlstream/xmlstream.py
index 866368bd..35d57869 100644
--- a/slixmpp/xmlstream/xmlstream.py
+++ b/slixmpp/xmlstream/xmlstream.py
@@ -72,6 +72,8 @@ class XMLStream(asyncio.BaseProtocol):
# The socket the is used internally by the transport object
self.socket = None
+ self.connect_loop_wait = 0
+
self.parser = None
self.xml_depth = 0
self.xml_root = None
@@ -301,6 +303,7 @@ class XMLStream(asyncio.BaseProtocol):
# and try (host, port) as a last resort
self.dns_answers = None
+ yield from asyncio.sleep(self.connect_loop_wait)
try:
yield from self.loop.create_connection(lambda: self,
self.address[0],
@@ -312,7 +315,10 @@ class XMLStream(asyncio.BaseProtocol):
except OSError as e:
log.debug('Connection failed: %s', e)
self.event("connection_failed", e)
+ self.connect_loop_wait = self.connect_loop_wait * 2 + 1
asyncio.async(self._connect_routine())
+ else:
+ self.connect_loop_wait = 0
def process(self, *, forever=True, timeout=None):
"""Process all the available XMPP events (receiving or sending data on the