summaryrefslogtreecommitdiff
path: root/sleekxmpp/clientxmpp.py
diff options
context:
space:
mode:
Diffstat (limited to 'sleekxmpp/clientxmpp.py')
-rw-r--r--sleekxmpp/clientxmpp.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/sleekxmpp/clientxmpp.py b/sleekxmpp/clientxmpp.py
index 32795e4b..a1813985 100644
--- a/sleekxmpp/clientxmpp.py
+++ b/sleekxmpp/clientxmpp.py
@@ -139,7 +139,7 @@ class ClientXMPP(BaseXMPP):
log.debug("Session start has taken more than 15 seconds")
self.disconnect(reconnect=self.auto_reconnect)
- def connect(self, address=tuple()):
+ def connect(self, address=tuple(), reattempt=True):
"""
Connect to the XMPP server.
@@ -148,7 +148,9 @@ class ClientXMPP(BaseXMPP):
will be used.
Arguments:
- address -- A tuple containing the server's host and port.
+ address -- A tuple containing the server's host and port.
+ reattempt -- If True, reattempt the connection if an
+ error occurs.
"""
self.session_started_event.clear()
if not address or len(address) < 2:
@@ -162,11 +164,13 @@ class ClientXMPP(BaseXMPP):
log.debug("Since no address is supplied," + \
"attempting SRV lookup.")
try:
- xmpp_srv = "_xmpp-client._tcp.%s" % self.server
+ xmpp_srv = "_xmpp-client._tcp.%s" % self.boundjid.host
answers = dns.resolver.query(xmpp_srv, dns.rdatatype.SRV)
except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer):
log.debug("No appropriate SRV record found." + \
" Using JID server name.")
+ except (dns.exception.Timeout,):
+ log.debug("DNS resolution timed out.")
else:
# Pick a random server, weighted by priority.
@@ -190,7 +194,8 @@ class ClientXMPP(BaseXMPP):
# If all else fails, use the server from the JID.
address = (self.boundjid.host, 5222)
- return XMLStream.connect(self, address[0], address[1], use_tls=True)
+ return XMLStream.connect(self, address[0], address[1],
+ use_tls=True, reattempt=reattempt)
def register_feature(self, mask, pointer, breaker=False):
"""