diff options
Diffstat (limited to 'project2/proj2_s4498062/dns/server.py')
-rw-r--r-- | project2/proj2_s4498062/dns/server.py | 10 |
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): |