def run(self): """ Run the handler thread""" try: self.message = Message.from_bytes(self.data) except: self.message = Message(Header(0, 0, 0, 0, 0, 0)) self.send_response([], False, 1) return self.domain = self.message.questions[0].qname print(threading.current_thread()) print("\tDomain:", self.domain) print("\tAddress:", self.address) authoritative, records = self.lookup_zone(self.domain) if records is None: if self.message.header.rd: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) resolver = Resolver(5, Server.cache) records = resolver.query_recursive(sock, self.domain, Resolver.root_server) sock.close() else: records = [] self.send_response(records, authoritative)