summaryrefslogtreecommitdiff
path: root/project2/proj2_s4498062/dns/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'project2/proj2_s4498062/dns/server.py')
-rw-r--r--project2/proj2_s4498062/dns/server.py10
1 files changed, 5 insertions, 5 deletions
diff --git a/project2/proj2_s4498062/dns/server.py b/project2/proj2_s4498062/dns/server.py
index 10cad8b..f1d33c1 100644
--- a/project2/proj2_s4498062/dns/server.py
+++ b/project2/proj2_s4498062/dns/server.py
@@ -19,7 +19,7 @@ from dns.resource import \
class RequestHandler(Thread):
""" A handler for requests to the DNS server """
- def __init__(self, skt, ttl, data, addr, zone):
+ def __init__(self, skt, ttl, data, addr, zone, resolv):
# pylint: disable=too-many-arguments
""" Initialize the handler thread """
super(RequestHandler, self).__init__()
@@ -29,11 +29,10 @@ class RequestHandler(Thread):
self.data = data
self.addr = addr
self.zone = zone
+ self.resolv = resolv
def run(self):
""" Run the handler thread """
- resolver = Resolver(True, self.ttl)
-
request = Message.from_bytes(self.data)
answs, adds, auths = [], [], []
@@ -44,7 +43,7 @@ class RequestHandler(Thread):
if rrs != []:
auths += rrs
elif req.qtype in [Type.A, Type.CNAME] and req.qclass == Class.IN:
- name, cnames, addrs = resolver.gethostbyname(req.qname)
+ name, cnames, addrs = self.resolv.gethostbyname(req.qname)
if name != req.qname:
answs.append(ResourceRecord(
str(req.qname), Type.CNAME, Class.IN, self.ttl,
@@ -86,6 +85,7 @@ class Server(object):
self.port = port
self.done = False
self.zone = []
+ self.resolv = Resolver(True, self.ttl)
self.skt = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
@@ -95,7 +95,7 @@ class Server(object):
while not self.done:
data, addr = self.skt.recvfrom(512)
reqh = RequestHandler(
- self.skt, self.ttl, data, addr, zone=self.zone)
+ self.skt, self.ttl, data, addr, self.zone, self.resolv)
reqh.start()
def shutdown(self):