diff --git a/src/common/packet-history.cc b/src/common/packet-history.cc index a95c59013..63712a7d5 100644 --- a/src/common/packet-history.cc +++ b/src/common/packet-history.cc @@ -338,7 +338,8 @@ PacketHistory::PacketHistory (uint32_t uid, uint32_t size) { if (size > 0) { - AddSmall (true, 0, size); + uint16_t written = AddSmall (true, 0, size); + Update (true, written); } } PacketHistory::PacketHistory (PacketHistory const &o) @@ -602,7 +603,7 @@ PacketHistory::Update (bool atStart, uint16_t written) m_data->m_dirtyEnd = m_used; } -void +uint16_t PacketHistory::AddSmall (bool atStart, uint32_t typeUid, uint32_t size) { @@ -645,9 +646,8 @@ PacketHistory::AddSmall (bool atStart, { uintptr_t written = buffer - start; NS_ASSERT (written <= 0xffff); - Update (atStart, written); g_one++; - return; + return written; } } g_two++; @@ -659,7 +659,7 @@ PacketHistory::AddSmall (bool atStart, goto append; } -void +uint16_t PacketHistory::AddBig (bool atStart, const PacketHistory::SmallItem *item, const PacketHistory::ExtraItem *extraItem) @@ -705,8 +705,7 @@ PacketHistory::AddBig (bool atStart, { uintptr_t written = buffer - start; NS_ASSERT (written <= 0xffff); - Update (atStart, written); - return; + return written; } } @@ -758,10 +757,12 @@ PacketHistory::ReplaceTail (const PacketHistory::SmallItem *item, struct PacketHistory::SmallItem tmpItem; PacketHistory::ExtraItem tmpExtraItem; ReadItems (current, &tmpItem, &tmpExtraItem); - h.AddBig (false, &tmpItem, &tmpExtraItem); + uint16_t written = h.AddBig (false, &tmpItem, &tmpExtraItem); + h.Update (false, written); } // append new tail. - h.AddBig (false, item, extraItem); + uint16_t written = h.AddBig (false, item, extraItem); + h.Update (false, written); *this = h; } @@ -899,7 +900,8 @@ PacketHistory::AddHeader (uint32_t uid, Chunk const & header, uint32_t size) { return; } - AddSmall (true, uid, size); + uint16_t written = AddSmall (true, uid, size); + Update (true, written); } void PacketHistory::RemoveHeader (uint32_t uid, Chunk const & header, uint32_t size) @@ -946,7 +948,8 @@ PacketHistory::AddTrailer (uint32_t uid, Chunk const & trailer, uint32_t size) { return; } - AddSmall (false, uid, size); + uint16_t written = AddSmall (false, uid, size); + Update (false, written); } void PacketHistory::RemoveTrailer (uint32_t uid, Chunk const & trailer, uint32_t size) @@ -1031,7 +1034,8 @@ PacketHistory::AddAtEnd (PacketHistory const&o) else { // append the extra items. - AddBig (false, &item, &extraItem); + uint16_t written = AddBig (false, &item, &extraItem); + Update (false, written); } if (current == o.m_tail) { @@ -1080,12 +1084,14 @@ PacketHistory::RemoveAtStart (uint32_t start) PacketHistory fragment (m_packetUid, 0); extraItem.fragmentStart += leftToRemove; leftToRemove = 0; - fragment.AddBig (false, &item, &extraItem); + uint16_t written = fragment.AddBig (false, &item, &extraItem); + Update (false, written); current = item.next; while (current != 0xffff) { ReadItems (current, &item, &extraItem); - fragment.AddBig (false, &item, &extraItem); + written = fragment.AddBig (false, &item, &extraItem); + Update (false, written); if (current == m_tail) { break; @@ -1137,12 +1143,14 @@ PacketHistory::RemoveAtEnd (uint32_t end) NS_ASSERT (extraItem.fragmentEnd > leftToRemove); extraItem.fragmentEnd -= leftToRemove; leftToRemove = 0; - fragment.AddBig (true, &item, &extraItem); + uint16_t written = fragment.AddBig (true, &item, &extraItem); + Update (true, written); current = item.prev; while (current != 0xffff) { ReadItems (current, &item, &extraItem); - fragment.AddBig (true, &item, &extraItem); + written = fragment.AddBig (true, &item, &extraItem); + Update (true, written); if (current == m_head) { break; diff --git a/src/common/packet-history.h b/src/common/packet-history.h index ada462a29..1d853742e 100644 --- a/src/common/packet-history.h +++ b/src/common/packet-history.h @@ -98,11 +98,11 @@ private: void AddTrailer (uint32_t uid, Chunk const & trailer, uint32_t size); void RemoveTrailer (uint32_t uid, Chunk const & trailer, uint32_t size); - void AddSmall (bool atStart, - uint32_t typeUid, uint32_t size); - void AddBig (bool atStart, - const PacketHistory::SmallItem *item, - const PacketHistory::ExtraItem *extraItem); + uint16_t AddSmall (bool atStart, + uint32_t typeUid, uint32_t size); + uint16_t AddBig (bool atStart, + const PacketHistory::SmallItem *item, + const PacketHistory::ExtraItem *extraItem); void ReplaceTail (const PacketHistory::SmallItem *item, const PacketHistory::ExtraItem *extraItem, uint32_t available);