summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Halley <halley@play-bow.org>2014-06-21 09:06:16 -0700
committerBob Halley <halley@play-bow.org>2014-06-21 09:06:16 -0700
commit00448303c855cfdad4506ed77090e63d67e1e10f (patch)
treec096635445e40ccf076706b6b8e263ca6655189f
parent5b32e65203731912aaa2067df55175c1bd5f8a8e (diff)
parentbfbe766c8e34a258241012da5ff6c15d8142261a (diff)
downloaddnspython-00448303c855cfdad4506ed77090e63d67e1e10f.tar.gz
Merge pull request #58 from underrun/options_rotate
add options rotate handling
-rw-r--r--dns/resolver.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/dns/resolver.py b/dns/resolver.py
index 934d39b..88419e9 100644
--- a/dns/resolver.py
+++ b/dns/resolver.py
@@ -21,6 +21,7 @@
import socket
import sys
import time
+import random
try:
import threading as _threading
@@ -508,6 +509,7 @@ class Resolver(object):
self.cache = None
self.flags = None
self.retry_servfail = False
+ self.rotate = False
def read_resolv_conf(self, f):
"""Process f as a file in the /etc/resolv.conf format. If f is
@@ -538,6 +540,9 @@ class Resolver(object):
elif tokens[0] == 'search':
for suffix in tokens[1:]:
self.search.append(dns.name.from_text(suffix))
+ elif tokens[0] == 'options':
+ if len(tokens) == 2 and tokens[1] == 'rotate':
+ self.rotate = True
finally:
if want_close:
f.close()
@@ -811,6 +816,8 @@ class Resolver(object):
# make a copy of the servers list so we can alter it later.
#
nameservers = self.nameservers[:]
+ if self.rotate:
+ random.shuffle(nameservers)
backoff = 0.10
while response is None:
if len(nameservers) == 0: