def datagram_received(self, data, addr): (host, port) = addr try: (dns_packet, offset) = DnsPacket.parse(data) except AssertionError: self.log.warn('Unable to parse packet %s from %s.' % (data, host)) else: self.log.info('Incoming packet: %s' % dns_packet) task = asyncio.async(self.respond_to_packet(dns_packet, addr))
def datagram_received(self, data, addr): try: (dns_packet, offset) = DnsPacket.parse(data) except AssertionError as e: self.log.warning('Unable to parse packet:', data) else: self.log.info('resolver_datagram_recieved(%s, %s)' % (dns_packet, addr)) self.db.store_packet(dns_packet, source=addr) (host, port) = addr key = (str(host), dns_packet.ID) if key in self.queue: (query_packet, future) = self.queue[key] del self.queue[key] # TODO: asserts about answer matching query_packet self.db.update_query_response(query_packet.pk, dns_packet.pk) future.set_result(dns_packet) else: self.log.warn("Unexpected packet.")