<HTML>
<HEAD>
<TITLE>Re: [Freeswitch-users] Invalid length field in RTCP Sender Report</TITLE>
</HEAD>
<BODY>
<FONT FACE="Monaco, Courier New"><SPAN STYLE='font-size:11pt'>This sort of thing should be reported via Jira ( <a href="http://jira.freeswitch.org">http://jira.freeswitch.org</a> ) will any logs, and patches attached...<BR>
<BR>
<BR>
On 9/24/12 11:00 AM, &quot;James Bravo&quot; &lt;<a href="james.bravo@redmatter.com">james.bravo@redmatter.com</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Monaco, Courier New"><SPAN STYLE='font-size:11pt'> &nbsp;&nbsp;Hi<BR>
&nbsp;<BR>
&nbsp;We've had a number of Yealink T22 &amp; T28 phones with later <BR>
&nbsp;firmware crashing within approx 30 seconds of sending <BR>
&nbsp;and receiving RTP.<BR>
&nbsp;Yealink R&amp;D department have narrowed it down to a<BR>
&nbsp;non-standard RTCP 'Sender Report' packet from FreeSWITCH.<BR>
&nbsp;For some packet content, the length field in these packets <BR>
&nbsp;does not seem to agree with the overall UDP packet size. <BR>
&nbsp;RFC1889 defines the length as:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;The length of this RTCP packet in 32-bit words minus one, <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;including the header and any padding.&quot;<BR>
&nbsp;For instance, below is a RTCP packet sent from FS as viewed <BR>
&nbsp;in Wireshark. The length field says 76 bytes but the udp packet <BR>
&nbsp;length is 78 bytes so the last two bytes (0x31, 0x00) are excluded<BR>
&nbsp;as far as the length field is concerned.<BR>
&nbsp;<BR>
&nbsp;<IMG src="cid:3431329652_17583681" ><BR>
&nbsp;I managed to stop the phones crashing by changing the following lines<BR>
&nbsp;in switch_rtp.c...<BR>
&nbsp;</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtcp_bytes = sizeof(switch_rtcp_hdr_t) + sizeof(struct switch_rtcp_senderinfo) + sr-&gt;sr_desc_ssrc.length -1 ;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtp_session-&gt;rtcp_send_msg.header.length = htons((u_short)(rtcp_bytes / 4) - 1); <BR>
&nbsp;</SPAN></FONT></FONT><FONT FACE="Monaco, Courier New"><SPAN STYLE='font-size:11pt'>...to something like...<BR>
&nbsp;</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'> &nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch_size_t rtcp_bytes_mod4;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtcp_bytes = sizeof(switch_rtcp_hdr_t) + sizeof(struct switch_rtcp_senderinfo) + sr-&gt;sr_desc_ssrc.length -1 ;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Add padding and adjust length if necessary<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtcp_bytes_mod4 = rtcp_bytes % 4;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (rtcp_bytes_mod4 &gt; 0)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtcp_bytes += 4 - rtcp_bytes_mod4;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtp_session-&gt;rtcp_send_msg.header.length = htons((u_short)(rtcp_bytes / 4 - 1)); <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;</SPAN></FONT></FONT><FONT FACE="Monaco, Courier New"><SPAN STYLE='font-size:11pt'>although Freeswitch developers will probably find a better solution.<BR>
&nbsp;<BR>
&nbsp;Thanks in advance,<BR>
&nbsp;James Bravo, <BR>
&nbsp;Redmatter<BR>
&nbsp;<BR>
&nbsp;<BR>
<HR ALIGN=CENTER SIZE="3" WIDTH="95%"></SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'>_________________________________________________________________________<BR>
Professional FreeSWITCH Consulting Services:<BR>
<a href="consulting@freeswitch.org">consulting@freeswitch.org</a><BR>
<a href="http://www.freeswitchsolutions.com">http://www.freeswitchsolutions.com</a><BR>
<BR>
FreeSWITCH-powered IP PBX: The CudaTel Communication Server<BR>
<a href="http://www.cudatel.com">http://www.cudatel.com</a><BR>
<BR>
Official FreeSWITCH Sites<BR>
<a href="http://www.freeswitch.org">http://www.freeswitch.org</a><BR>
<a href="http://wiki.freeswitch.org">http://wiki.freeswitch.org</a><BR>
<a href="http://www.cluecon.com">http://www.cluecon.com</a><BR>
<BR>
FreeSWITCH-users mailing list<BR>
<a href="FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><BR>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><BR>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><BR>
<a href="http://www.freeswitch.org">http://www.freeswitch.org</a><BR>
</SPAN></FONT></FONT></BLOCKQUOTE><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'><BR>
</SPAN></FONT></FONT><FONT FACE="Monaco, Courier New"><SPAN STYLE='font-size:11pt'>-- <BR>
Ken<BR>
<FONT COLOR="#0000FF"><U><a href="http://www.FreeSWITCH.org">http://www.FreeSWITCH.org</a><BR>
<a href="http://www.ClueCon.com">http://www.ClueCon.com</a><BR>
<a href="http://www.OSTAG.org">http://www.OSTAG.org</a><BR>
</U></FONT>irc.freenode.net #freeswitch<BR>
</SPAN></FONT>
</BODY>
</HTML>