From 172b14d865ae5df82eeb1a5cd46f8a96d5b9d879 Mon Sep 17 00:00:00 2001 From: Pierre LALET <pierre.lalet@cea.fr> Date: Mon, 9 Mar 2015 08:18:00 +0100 Subject: [PATCH] Fixes the _write_header() call to make it possible to write from a generator Thanks @yoeld for reporting and proposing a solution. --HG-- branch : issue-5111 --- scapy/utils.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/scapy/utils.py b/scapy/utils.py index e4613094..98fd6376 100644 --- a/scapy/utils.py +++ b/scapy/utils.py @@ -704,11 +704,19 @@ class RawPcapWriter: written to the dumpfile """ - if not self.header_present: - self._write_header(pkt) if type(pkt) is str: + if not self.header_present: + self._write_header(pkt) self._write_packet(pkt) else: + pkt = pkt.__iter__() + if not self.header_present: + try: + p = pkt.next() + except StopIteration: + return + self._write_header(p) + self._write_packet(p) for p in pkt: self._write_packet(p) @@ -746,8 +754,6 @@ class RawPcapWriter: class PcapWriter(RawPcapWriter): def _write_header(self, pkt): if self.linktype == None: - if type(pkt) is list or type(pkt) is tuple or isinstance(pkt,BasePacketList): - pkt = pkt[0] try: self.linktype = conf.l2types[pkt.__class__] except KeyError: -- GitLab