[asterisk-commits] russell: branch 1.4 r53429 - /branches/1.4/main/rtp.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Wed Feb 7 10:39:32 MST 2007


Author: russell
Date: Wed Feb  7 11:39:31 2007
New Revision: 53429

URL: http://svn.digium.com/view/asterisk?view=rev&rev=53429
Log:
When parsing the NTP timestamp in a sender report message, you are supposed to
take the low 16 bits of the integer part, and the high 16 bits of the
fractional part.  However, the code here was erroneously taking the low 16 bits
of the fractional part.  It then shifted the result 16 bits down, so the result
was always zero.  This fix makes it grab the appropriate high 16 bits, instead.
(issue #8991, pointed out by andre_abrantes)

Modified:
    branches/1.4/main/rtp.c

Modified: branches/1.4/main/rtp.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/main/rtp.c?view=diff&rev=53429&r1=53428&r2=53429
==============================================================================
--- branches/1.4/main/rtp.c (original)
+++ branches/1.4/main/rtp.c Wed Feb  7 11:39:31 2007
@@ -898,7 +898,7 @@
 			gettimeofday(&rtp->rtcp->rxlsr,NULL); /* To be able to populate the dlsr */
 			rtp->rtcp->spc = ntohl(rtcpheader[i+3]);
 			rtp->rtcp->soc = ntohl(rtcpheader[i + 4]);
-			rtp->rtcp->themrxlsr = ((ntohl(rtcpheader[i]) & 0x0000ffff) << 16) | ((ntohl(rtcpheader[i + 1]) & 0xffff) >> 16); /* Going to LSR in RR*/
+			rtp->rtcp->themrxlsr = ((ntohl(rtcpheader[i]) & 0x0000ffff) << 16) | ((ntohl(rtcpheader[i + 1]) & 0xffff0000) >> 16); /* Going to LSR in RR*/
     
 			if (rtcp_debug_test_addr(&sin)) {
 				ast_verbose("NTP timestamp: %lu.%010lu\n", (unsigned long) ntohl(rtcpheader[i]), (unsigned long) ntohl(rtcpheader[i + 1]) * 4096);



More information about the asterisk-commits mailing list