From 92be81578e1392f733d6c0d4f2bd07dc9f0b5edf Mon Sep 17 00:00:00 2001 From: Mohamed Amine Ismail Date: Thu, 22 Apr 2010 14:26:58 +0200 Subject: [PATCH] Bug 825 - UDP-Client-server's packet loss counter not properly reset --- .../udp-client-server/packet-loss-counter.cc | 15 ++++++--------- .../udp-client-server/udp-client-server-test.cc | 1 + 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/applications/udp-client-server/packet-loss-counter.cc b/src/applications/udp-client-server/packet-loss-counter.cc index b996e37f0..6cf95d534 100644 --- a/src/applications/udp-client-server/packet-loss-counter.cc +++ b/src/applications/udp-client-server/packet-loss-counter.cc @@ -60,7 +60,7 @@ PacketLossCounter::SetBitMapSize (uint16_t winSize) delete [] m_receiveBitMap; } m_receiveBitMap = new uint8_t [m_bitMapSize] (); - memset (m_receiveBitMap,1,m_bitMapSize); + memset (m_receiveBitMap,0xFF,m_bitMapSize); } uint32_t @@ -103,17 +103,14 @@ PacketLossCounter::SetBit(uint32_t seqNum, bool val) void PacketLossCounter::NotifyReceived (uint32_t seqNum) { - if (seqNum>(uint32_t)(m_bitMapSize*8)-1) + for (uint32_t i=m_lastMaxSeqNum+1; i<=seqNum;i++) { - for (uint32_t i=m_lastMaxSeqNum+1; i<=seqNum;i++) + if (GetBit(i)!=1) { - if (GetBit(i)!=1) - { - NS_LOG_INFO ("Packet lost: " << i-(m_bitMapSize*8)); - m_lost++; - } - SetBit(i, 0); + NS_LOG_INFO ("Packet lost: " << i-(m_bitMapSize*8)); + m_lost++; } + SetBit(i, 0); } SetBit(seqNum, 1); if (seqNum>m_lastMaxSeqNum) diff --git a/src/applications/udp-client-server/udp-client-server-test.cc b/src/applications/udp-client-server/udp-client-server-test.cc index 56451920a..ea2909a0c 100644 --- a/src/applications/udp-client-server/udp-client-server-test.cc +++ b/src/applications/udp-client-server/udp-client-server-test.cc @@ -208,6 +208,7 @@ PacketLossCounterTestCase::~PacketLossCounterTestCase () bool PacketLossCounterTestCase::DoRun (void) { PacketLossCounter lossCounter(32); + lossCounter.NotifyReceived(32); //out of order for (uint32_t i=0;i<64;i++) { lossCounter.NotifyReceived(i);