This sort of thing should be reported via Jira ( http://jira.freeswitch.org ) will any logs, and patches attached...


On 9/24/12 11:00 AM, "James Bravo" <james.bravo@redmatter.com> wrote:

  Hi
 
 We've had a number of Yealink T22 & T28 phones with later
 firmware crashing within approx 30 seconds of sending
 and receiving RTP.
 Yealink R&D department have narrowed it down to a
 non-standard RTCP 'Sender Report' packet from FreeSWITCH.
 For some packet content, the length field in these packets
 does not seem to agree with the overall UDP packet size.
 RFC1889 defines the length as:
     "The length of this RTCP packet in 32-bit words minus one,
     including the header and any padding."
 For instance, below is a RTCP packet sent from FS as viewed
 in Wireshark. The length field says 76 bytes but the udp packet
 length is 78 bytes so the last two bytes (0x31, 0x00) are excluded
 as far as the length field is concerned.
 
 
 I managed to stop the phones crashing by changing the following lines
 in switch_rtp.c...
 
       rtcp_bytes = sizeof(switch_rtcp_hdr_t) + sizeof(struct switch_rtcp_senderinfo) + sr->sr_desc_ssrc.length -1 ;
         rtp_session->rtcp_send_msg.header.length = htons((u_short)(rtcp_bytes / 4) - 1);
 
...to something like...
 
   {
         switch_size_t rtcp_bytes_mod4;
         rtcp_bytes = sizeof(switch_rtcp_hdr_t) + sizeof(struct switch_rtcp_senderinfo) + sr->sr_desc_ssrc.length -1 ;
         // Add padding and adjust length if necessary
         rtcp_bytes_mod4 = rtcp_bytes % 4;
         if (rtcp_bytes_mod4 > 0)
             rtcp_bytes += 4 - rtcp_bytes_mod4;
         rtp_session->rtcp_send_msg.header.length = htons((u_short)(rtcp_bytes / 4 - 1));
     }
 
although Freeswitch developers will probably find a better solution.
 
 Thanks in advance,
 James Bravo,
 Redmatter
 
 

_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting@freeswitch.org
http://www.freeswitchsolutions.com

FreeSWITCH-powered IP PBX: The CudaTel Communication Server
http://www.cudatel.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://wiki.freeswitch.org
http://www.cluecon.com

FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org

--
Ken
http://www.FreeSWITCH.org
http://www.ClueCon.com
http://www.OSTAG.org
irc.freenode.net #freeswitch