Skip to content

Commit 11c379f

Browse files
authored
Merge pull request #2769 from gpotter2/time-iter
Properly save sent_time in pcaps
2 parents bf0725f + 7927f3c commit 11c379f

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

scapy/utils.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1423,7 +1423,13 @@ def write(self, pkt):
14231423
# Import here to avoid a circular dependency
14241424
from scapy.plist import SndRcvList
14251425
if isinstance(pkt, SndRcvList):
1426-
pkt = (p for t in pkt for p in t)
1426+
def _iter(pkt=pkt):
1427+
for s, r in pkt:
1428+
if s.sent_time:
1429+
s.time = s.sent_time
1430+
yield s
1431+
yield r
1432+
pkt = _iter()
14271433
else:
14281434
pkt = pkt.__iter__()
14291435
for p in pkt:

test/regression.uts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7138,6 +7138,17 @@ assert newpktpcapwirelen[0].wirelen is not None
71387138
assert len(newpktpcapwirelen[0]) < newpktpcapwirelen[0].wirelen
71397139
assert newpktpcapwirelen[0].wirelen == pktpcapwirelen[0].wirelen
71407140

7141+
= Check wrpcap() then rdpcap() with sent_time on SndRcvList
7142+
f = get_temp_file()
7143+
s = Ether()/IP()
7144+
r = Ether()/IP()
7145+
s.sent_time = 1
7146+
r.time = 2
7147+
wrpcap(f, SndRcvList([(s, r)]))
7148+
pcap = rdpcap(f)
7149+
assert pcap[0].time == 1
7150+
assert pcap[1].time == 2
7151+
71417152
= Check wrpcap()
71427153
fdesc, filename = tempfile.mkstemp()
71437154
fdesc = os.fdopen(fdesc, "wb")

0 commit comments

Comments
 (0)