diff --git a/scapy/scapypipes.py b/scapy/scapypipes.py index 4924b0cbfa24964dbedaf468f111971aa633fe4e..6a4bd5062e6bce0764a6a21d9300cc80416e9786 100644 --- a/scapy/scapypipes.py +++ b/scapy/scapypipes.py @@ -182,12 +182,18 @@ class TCPListenPipe(TCPConnectPipe): def __init__(self, addr="", port=0, name=None): TCPConnectPipe.__init__(self, addr, port, name) self.connected = False + self.q = Queue.Queue() def start(self): self.connected = False self.fd = socket.socket() self.fd.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.fd.bind((self.addr,self.port)) self.fd.listen(1) + def push(self, msg): + if self.connected: + self.fd.send(msg) + else: + self.q.put(msg) def deliver(self): if self.connected: self._send(self.fd.recv(65536)) @@ -197,6 +203,12 @@ class TCPListenPipe(TCPConnectPipe): self.fd.close() self.fd = fd self.connected = True + while True: + try: + self.fd.send(self.q.get(block=False)) + except Queue.Empty: + break + class TriggeredMessage(Drain): """Send a preloaded message when triggered and trigger in chain