query timeouts, import relevant types

This commit is contained in:
Riccardo Spagni 2015-01-19 16:49:46 +02:00
parent a0739ad925
commit 1e73768b89
1 changed files with 21 additions and 5 deletions

View File

@ -13,6 +13,19 @@ try:
import dns.message import dns.message
import dns.resolver import dns.resolver
import dns.rdatatype import dns.rdatatype
import dns.rdtypes.ANY.NS
import dns.rdtypes.ANY.CNAME
import dns.rdtypes.ANY.DLV
import dns.rdtypes.ANY.DNSKEY
import dns.rdtypes.ANY.DS
import dns.rdtypes.ANY.NSEC
import dns.rdtypes.ANY.NSEC3
import dns.rdtypes.ANY.NSEC3PARAM
import dns.rdtypes.ANY.RRSIG
import dns.rdtypes.ANY.SOA
import dns.rdtypes.ANY.TXT
import dns.rdtypes.IN.A
import dns.rdtypes.IN.AAAA
from dns.exception import DNSException from dns.exception import DNSException
OA_READY = True OA_READY = True
except ImportError: except ImportError:
@ -188,7 +201,10 @@ class Plugin(BasePlugin):
err = None err = None
for i in range(0, retries): for i in range(0, retries):
try: try:
records = dns.resolver.query(url, 'TXT') resolver = dns.resolver.Resolver()
resolver.timeout = 15.0
resolver.lifetime = 15.0
records = resolver.query(url, 'TXT')
for record in records: for record in records:
string = record.strings[0] string = record.strings[0]
if string.startswith('oa1:' + prefix): if string.startswith('oa1:' + prefix):
@ -199,10 +215,10 @@ class Plugin(BasePlugin):
return (address, name) return (address, name)
QMessageBox.warning(self.win, _('Error'), _('No OpenAlias record found.'), _('OK')) QMessageBox.warning(self.win, _('Error'), _('No OpenAlias record found.'), _('OK'))
return 0 return 0
except dns.resolver.NXDOMAIN: except resolver.NXDOMAIN:
err = _('No such domain.') err = _('No such domain.')
continue continue
except dns.resolver.Timeout: except resolver.Timeout:
err = _('Timed out while resolving.') err = _('Timed out while resolving.')
continue continue
except DNSException: except DNSException:
@ -233,7 +249,7 @@ class Plugin(BasePlugin):
sub = '.'.join(parts[i - 1:]) sub = '.'.join(parts[i - 1:])
query = dns.message.make_query(sub, dns.rdatatype.NS) query = dns.message.make_query(sub, dns.rdatatype.NS)
response = dns.query.udp(query, ns) response = dns.query.udp(query, ns, 5)
if response.rcode() != dns.rcode.NOERROR: if response.rcode() != dns.rcode.NOERROR:
return 0 return 0
@ -251,7 +267,7 @@ class Plugin(BasePlugin):
query = dns.message.make_query(sub, query = dns.message.make_query(sub,
dns.rdatatype.DNSKEY, dns.rdatatype.DNSKEY,
want_dnssec=True) want_dnssec=True)
response = dns.query.udp(query, ns) response = dns.query.udp(query, ns, 5)
if response.rcode() != 0: if response.rcode() != 0:
return 0 return 0