Skip to content

Commit e435a1a

Browse files
authored
Optimize PcapNg file reader to skip copy of packet comment if not requested. (#2048)
* Skip copy of packet comment string if the user does not request it. * Fix return.
1 parent d88d41a commit e435a1a

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

Pcap++/header/PcapFileDevice.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,9 @@ namespace pcpp
421421

422422
/// Close the pacp-ng file
423423
void close() override;
424+
425+
private:
426+
bool getNextPacketInternal(RawPacket& rawPacket, std::string* packetComment);
424427
};
425428

426429
/// @class PcapNgFileWriterDevice

Pcap++/src/PcapFileDevice.cpp

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,16 @@ namespace pcpp
817817
}
818818

819819
bool PcapNgFileReaderDevice::getNextPacket(RawPacket& rawPacket, std::string& packetComment)
820+
{
821+
return getNextPacketInternal(rawPacket, &packetComment);
822+
}
823+
824+
bool PcapNgFileReaderDevice::getNextPacket(RawPacket& rawPacket)
825+
{
826+
return getNextPacketInternal(rawPacket, nullptr);
827+
}
828+
829+
bool PcapNgFileReaderDevice::getNextPacketInternal(RawPacket& rawPacket, std::string* packetComment)
820830
{
821831
if (m_LightPcapNg == nullptr)
822832
{
@@ -857,25 +867,22 @@ namespace pcpp
857867
return false;
858868
}
859869

860-
if (pktHeader.comment != nullptr && pktHeader.comment_length > 0)
861-
{
862-
packetComment = std::string(pktHeader.comment, pktHeader.comment_length);
863-
}
864-
else
870+
if (packetComment != nullptr)
865871
{
866-
packetComment.clear();
872+
if (pktHeader.comment != nullptr && pktHeader.comment_length > 0)
873+
{
874+
packetComment->assign(pktHeader.comment, pktHeader.comment_length);
875+
}
876+
else
877+
{
878+
packetComment->clear();
879+
}
867880
}
868881

869882
reportPacketProcessed();
870883
return true;
871884
}
872885

873-
bool PcapNgFileReaderDevice::getNextPacket(RawPacket& rawPacket)
874-
{
875-
std::string temp;
876-
return getNextPacket(rawPacket, temp);
877-
}
878-
879886
void PcapNgFileReaderDevice::close()
880887
{
881888
if (m_LightPcapNg == nullptr)

0 commit comments

Comments
 (0)