def getFirstProtobufMessage(self): self.assertFalse(self._protobufQueue.empty()) data = self._protobufQueue.get(False) self.assertTrue(data) msg = dnsmessage_pb2.PBDNSMessage() msg.ParseFromString(data) return msg
def getFirstProtobufMessage(self, retries=1, waitTime=1): msg = None print("in getFirstProtobufMessage") for param in protobufServersParameters: print(param.port) failed = 0 while param.queue.empty: print(failed) print(retries) if failed >= retries: break failed = failed + 1 print("waiting") time.sleep(waitTime) self.assertFalse(param.queue.empty()) data = param.queue.get(False) self.assertTrue(data) oldmsg = msg msg = dnsmessage_pb2.PBDNSMessage() msg.ParseFromString(data) if oldmsg is not None: self.assertEquals(msg, oldmsg) return msg
def getFirstProtobufMessage(self, retries=1, waitTime=1): global protobufQueue failed = 0 while protobufQueue.empty: if failed >= retries: break failed = failed + 1 time.sleep(waitTime) self.assertFalse(protobufQueue.empty()) data = protobufQueue.get(False) self.assertTrue(data) msg = dnsmessage_pb2.PBDNSMessage() msg.ParseFromString(data) return msg
def run(self): while True: data = self._conn.recv(2) if not data or len(data) < 2: break (datalen, ) = struct.unpack("!H", data) data = b'' remaining = datalen while remaining > 0: buf = self._conn.recv(remaining) if not buf: break data = data + buf remaining = remaining - len(buf) if len(data) != datalen: break msg = dnsmessage_pb2.PBDNSMessage() try: msg.ParseFromString(data) if msg.type == dnsmessage_pb2.PBDNSMessage.DNSQueryType: self.printQueryMessage(msg) elif msg.type == dnsmessage_pb2.PBDNSMessage.DNSResponseType: self.printResponseMessage(msg) elif msg.type == dnsmessage_pb2.PBDNSMessage.DNSOutgoingQueryType: self.printOutgoingQueryMessage(msg) elif msg.type == dnsmessage_pb2.PBDNSMessage.DNSIncomingResponseType: self.printIncomingResponseMessage(msg) else: print('Discarding unsupported message type %d' % (msg.type)) except google.protobuf.message.DecodeError as exp: print('Error parsing message of size %d: %s' % (datalen, str(exp))) break self._conn.close()
def run(self): while True: data = self._conn.recv(2) if not data: break (datalen, ) = struct.unpack("!H", data) data = self._conn.recv(datalen) msg = dnsmessage_pb2.PBDNSMessage() msg.ParseFromString(data) if msg.type == dnsmessage_pb2.PBDNSMessage.DNSQueryType: self.printQueryMessage(msg) elif msg.type == dnsmessage_pb2.PBDNSMessage.DNSResponseType: self.printResponseMessage(msg) elif msg.type == dnsmessage_pb2.PBDNSMessage.DNSOutgoingQueryType: self.printOutgoingQueryMessage(msg) elif msg.type == dnsmessage_pb2.PBDNSMessage.DNSIncomingResponseType: self.printIncomingResponseMessage(msg) else: print('Discarding unsupported message type %d' % (msg.type)) self._conn.close()