[asterisk-commits] pcadach: trunk r44069 - in /trunk: ./ channels/chan_sip.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Fri Sep 29 21:41:05 MST 2006


Author: pcadach
Date: Fri Sep 29 23:41:04 2006
New Revision: 44069

URL: http://svn.digium.com/view/asterisk?rev=44069&view=rev
Log:
Merged revisions 44068 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r44068 | pcadach | 2006-09-30 10:37:39 +0600 (Сбт, 30 Сен 2006) | 14 lines

Found some buggy SIP clients (phones Planet VIP-153T firmware
1.0, Linksys PAP2 firmware 3.1.9(LSc)) which sends ACK not on OK
message only (when remote party answers) but on RINGING message
too, so when we send 200 OK message, we get unidentified ACK
message (because INVITE acknowledged on RINGING message already),
so 200 OK retransmits within its retransmission interval then
call gets dropped.

If someone else knows how to provide workaround for such cases,
please, fix it in correct way.

Thanks to ssh from #asteriskru for provide access to his box to
study and fix this case.

........

Modified:
    trunk/   (props changed)
    trunk/channels/chan_sip.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Modified: trunk/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_sip.c?rev=44069&r1=44068&r2=44069&view=diff
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Fri Sep 29 23:41:04 2006
@@ -6100,6 +6100,8 @@
 		add_t38_sdp(&resp, p);
 	} else 
 		ast_log(LOG_ERROR, "Can't add SDP to response, since we have no UDPTL session allocated. Call-ID %s\n", p->callid);
+	if (retrans && !p->pendinginvite)
+		p->pendinginvite = seqno;		/* Buggy clients sends ACK on RINGING too */
 	return send_response(p, &resp, retrans, seqno);
 }
 
@@ -6138,6 +6140,8 @@
 		add_sdp(&resp, p);
 	} else 
 		ast_log(LOG_ERROR, "Can't add SDP to response, since we have no RTP session allocated. Call-ID %s\n", p->callid);
+	if (reliable && !p->pendinginvite)
+		p->pendinginvite = seqno;		/* Buggy clients sends ACK on RINGING too */
 	return send_response(p, &resp, reliable, seqno);
 }
 



More information about the asterisk-commits mailing list