querysocket.close() connection.close() elif sock == udpsocket: data, address = sock.recvfrom(1024) # print data.encode("hex"), address upstreamServer = ('8.8.8.8', 53) querysocket = socket(AF_INET, SOCK_DGRAM) querysocket.sendto(data, upstreamServer) udpresponse, add = querysocket.recvfrom(1024) print "UDP Responsed" respond_DNS = DNS(udpresponse) if respond_DNS.is_error(): udpresponse = respond_DNS.fake_an_answer(MyIP) sock.sendto(udpresponse, address) else: print "incorrect socket:", sock if __name__ == '__main__': DNSProxy() sys.exit(0)