diff --git a/src/common/packet-metadata.cc b/src/common/packet-metadata.cc index fe4ad4fe0..ebb5850ba 100644 --- a/src/common/packet-metadata.cc +++ b/src/common/packet-metadata.cc @@ -43,6 +43,7 @@ PacketMetadata::DataFreeList::~DataFreeList () { PacketMetadata::Deallocate (*i); } + PacketMetadata::m_enable = false; } void @@ -643,6 +644,11 @@ PacketMetadata::Create (uint32_t size) void PacketMetadata::Recycle (struct PacketMetadata::Data *data) { + if (!m_enable) + { + PacketMetadata::Deallocate (data); + return; + } NS_LOG_LOGIC ("recycle size="<m_size<<", list="<m_count == 0); if (m_freeList.size () > 1000 || diff --git a/src/common/packet-metadata.h b/src/common/packet-metadata.h index e4e058907..8b979ff35 100644 --- a/src/common/packet-metadata.h +++ b/src/common/packet-metadata.h @@ -190,7 +190,9 @@ private: public: ~DataFreeList (); }; - + + friend DataFreeList::~DataFreeList (); + PacketMetadata (); void DoAddHeader (uint32_t uid, uint32_t size); void DoRemoveHeader (uint32_t uid, uint32_t size);