diff --git a/sleekxmpp/clientxmpp.py b/sleekxmpp/clientxmpp.py index 170b35f..004037f 100644 --- a/sleekxmpp/clientxmpp.py +++ b/sleekxmpp/clientxmpp.py @@ -143,7 +143,7 @@ class ClientXMPP(BaseXMPP): def get_dns_records(self, domain, port=None): """ Get the DNS records for a domain. - Overridden XMLStream.get_dns_records to use SRV. + Overriddes XMLStream.get_dns_records to use SRV. Arguments: domain -- The domain in question. @@ -153,16 +153,22 @@ class ClientXMPP(BaseXMPP): port = self.default_port if DNSPYTHON: try: - answers = [((answer.target.to_text()[:-1], answer.port), answer.priority, answer.weight) for answer in dns.resolver.query("_xmpp-client._tcp.%s" % domain, dns.rdatatype.SRV)] + record = "_xmpp-client._tcp.%s" % domain + answers = [] + for answer in dns.resolver.query(record, dns.rdatatype.SRV): + address = (answer.target.to_text()[:-1], answer.port) + answers.append((address, answer.priority, answer.weight)) except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer): log.warning("No SRV records for %s" % domain) answers = super(ClientXMPP, self).get_dns_records(domain, port) except dns.exception.Timeout: - log.warning("DNS resolution timed out for SRV record of %s" % domain) + log.warning("DNS resolution timed out " + \ + "for SRV record of %s" % domain) answers = super(ClientXMPP, self).get_dns_records(domain, port) return answers else: - log.warning("dnspython is not installed -- relying on OS A record resolution") + log.warning("dnspython is not installed -- " + \ + "relying on OS A record resolution") return [((domain, port), 0, 0)] def register_feature(self, name, handler, restart=False, order=5000): diff --git a/sleekxmpp/exceptions.py b/sleekxmpp/exceptions.py index 8329a3c..49d0f94 100644 --- a/sleekxmpp/exceptions.py +++ b/sleekxmpp/exceptions.py @@ -64,6 +64,7 @@ class IqTimeout(Exception): def __init__(self, iq): self.iq = iq + class IqError(Exception): """ diff --git a/sleekxmpp/xmlstream/xmlstream.py b/sleekxmpp/xmlstream/xmlstream.py index 3b2b2f4..9fcead8 100644 --- a/sleekxmpp/xmlstream/xmlstream.py +++ b/sleekxmpp/xmlstream/xmlstream.py @@ -338,7 +338,8 @@ class XMLStream(object): def _connect(self): self.stop.clear() if self.default_domain: - self.address = self.pick_dns_answer(self.default_domain, self.address[1]) + self.address = self.pick_dns_answer(self.default_domain, + self.address[1]) self.socket = self.socket_class(Socket.AF_INET, Socket.SOCK_STREAM) self.socket.settimeout(None) @@ -672,11 +673,13 @@ class XMLStream(object): except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer): log.warning("No A records for %s" % domain) except dns.exception.Timeout: - log.warning("DNS resolution timed out for A record of %s" % domain) + log.warning("DNS resolution timed out " + \ + "for A record of %s" % domain) answers = [((answer.address, port), 0, 0) for answer in answers] return answers else: - log.warning("dnspython is not installed -- relying on OS A record resolution") + log.warning("dnspython is not installed -- " + \ + "relying on OS A record resolution") return [((domain, port), 0, 0)] def pick_dns_answer(self, domain, port=None):