summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-04-05 22:05:04 +0000
committerBenny Prijono <bennylp@teluu.com>2006-04-05 22:05:04 +0000
commit303d33a1dbf4bc43a62720c2e673591916325e33 (patch)
treee629c137763eeecb3658a20babd26fed65da9d16
parent3cff5c33e4120cbf4319a19bf54d0d6fe55e6ce1 (diff)
Protect RTCP packet lost calculation against incorrect packet expectations
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@389 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/src/pjmedia/rtcp.c5
-rw-r--r--pjsip-apps/src/samples/siprtp.c2
2 files changed, 5 insertions, 2 deletions
diff --git a/pjmedia/src/pjmedia/rtcp.c b/pjmedia/src/pjmedia/rtcp.c
index dd3ca304..6fc3a752 100644
--- a/pjmedia/src/pjmedia/rtcp.c
+++ b/pjmedia/src/pjmedia/rtcp.c
@@ -261,7 +261,10 @@ static void rtcp_build_rtcp(pjmedia_rtcp_session *s,
/* Total lost. */
expected = pj_ntohl(rtcp_pkt->rr.last_seq) - s->seq_ctrl.base_seq;
- u32 = expected - s->received;
+ if (expected >= s->received)
+ u32 = expected - s->received;
+ else
+ u32 = 0;
rtcp_pkt->rr.total_lost_2 = (u32 >> 16) & 0x00FF;
rtcp_pkt->rr.total_lost_1 = (u32 >> 8) & 0x00FF;
rtcp_pkt->rr.total_lost_0 = u32 & 0x00FF;
diff --git a/pjsip-apps/src/samples/siprtp.c b/pjsip-apps/src/samples/siprtp.c
index 03fb279f..d8d18f1d 100644
--- a/pjsip-apps/src/samples/siprtp.c
+++ b/pjsip-apps/src/samples/siprtp.c
@@ -1416,7 +1416,7 @@ static void print_call(int call_index)
/* Print duration */
- if (inv->state == PJSIP_INV_STATE_CONFIRMED) {
+ if (inv->state >= PJSIP_INV_STATE_CONFIRMED) {
pj_time_val now;
pj_gettimeofday(&now);