Skip to content

Commit

Permalink
Merge branch 'dev' into ubuntu24
Browse files Browse the repository at this point in the history
  • Loading branch information
tigercosmos authored Jul 6, 2024
2 parents 1ee855f + 2a5c03a commit f3edb1a
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 11 deletions.
10 changes: 10 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,16 @@ pcapp_detect_compiler(PCAPPP_TARGET)
# Get architecture
target_architecture(PCAPP_TARGET_ARCHITECTURE)

# Use Ccache if available
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
message(STATUS "Ccache found!")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_PROGRAM}")
else()
message(STATUS "Ccache not found!")
endif()

# LINUX is set Only since 3.25 see: https://cmake.org/cmake/help/latest/variable/LINUX.html
if(UNIX
AND NOT APPLE
Expand Down
10 changes: 6 additions & 4 deletions Common++/header/PointerVector.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
#include <vector>
#include <memory>

#include "DeprecationUtils.h"

/// @file

/**
Expand Down Expand Up @@ -249,13 +251,13 @@ namespace pcpp
* The iterator is shifted to the following element after the removal is completed.
* @return A pointer to the element which is no longer managed by the vector. It's user responsibility to free
* it
* @deprecated Deprecated in favor of 'getAndDetach' as that function provides memory safety.
*/
PCPP_DEPRECATED("Please use the memory safe 'getAndDetach' instead.")
T* getAndRemoveFromVector(VectorIterator& position)
{
T* result = (*position);
VectorIterator tempPos = position;
tempPos = m_Vector.erase(tempPos);
position = tempPos;
T* result = *position;
position = m_Vector.erase(position);
return result;
}

Expand Down
6 changes: 3 additions & 3 deletions Packet++/src/TcpReassembly.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ void TcpReassembly::checkOutOfOrderFragments(TcpReassemblyData* tcpReassemblyDat
if ((*tcpFragIter)->sequence == curSideData.sequence)
{
// pop the fragment from fragment list
auto curTcpFrag = std::unique_ptr<TcpFragment>(curSideData.tcpFragmentList.getAndRemoveFromVector(tcpFragIter));
auto curTcpFrag = curSideData.tcpFragmentList.getAndDetach(tcpFragIter);
// update sequence
curSideData.sequence += curTcpFrag->dataLength;
if (curTcpFrag->data != nullptr)
Expand All @@ -528,7 +528,7 @@ void TcpReassembly::checkOutOfOrderFragments(TcpReassemblyData* tcpReassemblyDat
if (SEQ_LT((*tcpFragIter)->sequence, curSideData.sequence))
{
// pop the fragment from fragment list
auto curTcpFrag = std::unique_ptr<TcpFragment>(curSideData.tcpFragmentList.getAndRemoveFromVector(tcpFragIter));
auto curTcpFrag = curSideData.tcpFragmentList.getAndDetach(tcpFragIter);
// check if it still has new data
uint32_t newSequence = curTcpFrag->sequence + curTcpFrag->dataLength;

Expand Down Expand Up @@ -601,7 +601,7 @@ void TcpReassembly::checkOutOfOrderFragments(TcpReassemblyData* tcpReassemblyDat
if (closestSequenceFragIt != curSideData.tcpFragmentList.end())
{
// get the fragment with the closest sequence
auto curTcpFrag = std::unique_ptr<TcpFragment>(curSideData.tcpFragmentList.getAndRemoveFromVector(closestSequenceFragIt));
auto curTcpFrag = curSideData.tcpFragmentList.getAndDetach(closestSequenceFragIt);

// calculate number of missing bytes
uint32_t missingDataLen = curTcpFrag->sequence - curSideData.sequence;
Expand Down
8 changes: 4 additions & 4 deletions Tests/Pcap++Test/Tests/LiveDeviceTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -990,20 +990,20 @@ PTF_TEST_CASE(TestRemoteCapture)
size_t capturedPacketsSize = capturedPackets.size();
while (iter != capturedPackets.end())
{
if ((*iter)->getRawDataLen() <= (int)remoteDevice->getMtu())
if ((*iter)->getRawDataLen() <= static_cast<int>(remoteDevice->getMtu()))
{
packetsToSend.pushBack(capturedPackets.getAndRemoveFromVector(iter));
packetsToSend.pushBack(capturedPackets.getAndDetach(iter));
}
else
++iter;
}
int packetsSent = remoteDevice->sendPackets(packetsToSend);
PTF_ASSERT_EQUAL(packetsSent, (int)packetsToSend.size());
PTF_ASSERT_EQUAL(packetsSent, static_cast<int>(packetsToSend.size()));

//check statistics
pcpp::IPcapDevice::PcapStats stats;
remoteDevice->getStatistics(stats);
PTF_ASSERT_EQUAL((uint32_t)stats.packetsRecv, capturedPacketsSize);
PTF_ASSERT_EQUAL(static_cast<uint32_t>(stats.packetsRecv), capturedPacketsSize);

remoteDevice->close();

Expand Down

0 comments on commit f3edb1a

Please sign in to comment.