--- a/src/common/packet-metadata-test.cc Sat Jun 21 21:14:28 2008 -0700
+++ b/src/common/packet-metadata-test.cc Sat Jun 21 21:20:38 2008 -0700
@@ -767,6 +767,15 @@
CHECK_HISTORY (p, 1, 500);
p->RemoveAtEnd (10);
CHECK_HISTORY (p, 1, 490);
+
+ p = Create<Packet> (500);
+ CHECK_HISTORY (p, 1, 500);
+ ADD_TRAILER (p, 10);
+ CHECK_HISTORY (p, 2, 500, 10);
+ REM_TRAILER (p, 10);
+ CHECK_HISTORY (p, 1, 500);
+ p->RemoveAtStart (10);
+ CHECK_HISTORY (p, 1, 490);
return result;
--- a/src/common/packet-metadata.cc Sat Jun 21 21:14:28 2008 -0700
+++ b/src/common/packet-metadata.cc Sat Jun 21 21:20:38 2008 -0700
@@ -830,18 +830,13 @@
uint16_t written = fragment.AddBig (0xffff, fragment.m_tail,
&item, &extraItem);
fragment.UpdateTail (written);
- current = item.next;
- while (current != 0xffff)
+ while (current != 0xffff && current != m_tail)
{
+ current = item.next;
ReadItems (current, &item, &extraItem);
written = fragment.AddBig (0xffff, fragment.m_tail,
&item, &extraItem);
fragment.UpdateTail (written);
- if (current == m_tail)
- {
- break;
- }
- current = item.next;
}
*this = fragment;
}