diff options
Diffstat (limited to 'sleekxmpp/clientxmpp.py')
-rw-r--r-- | sleekxmpp/clientxmpp.py | 13 |
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): """ |