summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--slixmpp/xmlstream/xmlstream.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/slixmpp/xmlstream/xmlstream.py b/slixmpp/xmlstream/xmlstream.py
index d672c221..1b69967c 100644
--- a/slixmpp/xmlstream/xmlstream.py
+++ b/slixmpp/xmlstream/xmlstream.py
@@ -297,18 +297,21 @@ class XMLStream(object):
else:
if record:
host, address, port = record
+ self.address = (address, port)
self._service_name = host
else:
- self.event('connection_failed',
- 'No DNS record available for %s' % self.default_domain)
+ # No DNS records left, stop iterating
+ # and try (host, port) as a last resort
self.dns_answers = None
- return
try:
yield from loop.create_connection(lambda: self,
- address,
- port,
+ self.address[0],
+ self.address[1],
ssl=self.use_ssl)
+ except Socket.gaierror as e:
+ self.event('connection_failed',
+ 'No DNS record available for %s' % self.default_domain)
except OSError as e:
log.debug('Connection failed: %s', e)
self.event("connection_failed", e)