From 4bafd0aa54fa78c4c3a6a32281cfa551e61bcafc Mon Sep 17 00:00:00 2001 From: Lucian Banu Date: Thu, 5 Apr 2018 07:05:53 +0200 Subject: [PATCH] CSIT-1019: Fix PacketVerifier.RxQueue receive timeout issue Change-Id: I0f7f54e721843b0252ac969ddfabc769a632c1a0 Signed-off-by: Lucian Banu --- resources/libraries/python/PacketVerifier.py | 51 +++++++++++++--------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/resources/libraries/python/PacketVerifier.py b/resources/libraries/python/PacketVerifier.py index 4500961151..9306f486ba 100644 --- a/resources/libraries/python/PacketVerifier.py +++ b/resources/libraries/python/PacketVerifier.py @@ -65,7 +65,6 @@ import os import select -import interruptingcow from scapy.config import conf from scapy.all import ETH_P_IP, ETH_P_IPV6, ETH_P_ALL, ETH_P_ARP from scapy.layers.inet6 import IPv6 @@ -218,33 +217,29 @@ class RxQueue(PacketVerifier): :returns: Ether() initialized object from packet data. :rtype: scapy.Ether """ - (rlist, _, _) = select.select([self._sock], [], [], timeout) - if self._sock not in rlist: - return None - try: - with interruptingcow.timeout(timeout, - exception=RuntimeError('Timeout')): - ignore_list = list() - if ignore is not None: - for ig_pkt in ignore: - # Auto pad all packets in ignore list - ignore_list.append(auto_pad(ig_pkt)) - while True: - pkt = self._sock.recv(0x7fff) - pkt_pad = auto_pad(pkt) - print 'Received packet on {0} of len {1}'\ - .format(self._ifname, len(pkt)) - if verbose: - pkt.show2() # pylint: disable=no-member - print - if pkt_pad in ignore_list: - ignore_list.remove(pkt_pad) - print 'Received packet ignored.' - continue - else: - return pkt - except RuntimeError: - return None + ignore_list = list() + if ignore is not None: + for ig_pkt in ignore: + # Auto pad all packets in ignore list + ignore_list.append(auto_pad(ig_pkt)) + while True: + (rlist, _, _) = select.select([self._sock], [], [], timeout) + if self._sock not in rlist: + return None + + pkt = self._sock.recv(0x7fff) + pkt_pad = auto_pad(pkt) + print 'Received packet on {0} of len {1}'\ + .format(self._ifname, len(pkt)) + if verbose: + pkt.show2() # pylint: disable=no-member + print + if pkt_pad in ignore_list: + ignore_list.remove(pkt_pad) + print 'Received packet ignored.' + continue + else: + return pkt class TxQueue(PacketVerifier): -- 2.16.6