[asterisk-commits] oej: branch oej/sip-fork-support r227416 - /team/oej/sip-fork-support/channels/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Nov 3 14:36:26 CST 2009


Author: oej
Date: Tue Nov  3 14:36:22 2009
New Revision: 227416

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=227416
Log:
First try.

Modified:
    team/oej/sip-fork-support/channels/chan_sip.c

Modified: team/oej/sip-fork-support/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/sip-fork-support/channels/chan_sip.c?view=diff&rev=227416&r1=227415&r2=227416
==============================================================================
--- team/oej/sip-fork-support/channels/chan_sip.c (original)
+++ team/oej/sip-fork-support/channels/chan_sip.c Tue Nov  3 14:36:22 2009
@@ -4800,7 +4800,7 @@
 
 	if (pedanticsipchecking) {
 		/* In principle Call-ID's uniquely identify a call, but with a forking SIP proxy
-		   we need more to identify a branch - so we have to check branch, from
+		   
 		   and to tags to identify a call leg.
 		   For Asterisk to behave correctly, you need to turn on pedanticsipchecking
 		   in sip.conf
@@ -4841,6 +4841,15 @@
 			} else if (totag[0]) {			/* Both have tags, compare them */
 				if (strcmp(totag, p->tag)) {
 					found = FALSE;		/* This is not our packet */
+				}
+			}
+			/* If this is an INVITE, check if the request URI is the same as the one in the found dialog. If not, it's not the same. */
+			if (found && req->method == SIP_INVITE) {
+				if (strcmp(req->rlPart2, p->initreq.rlPart2)) {
+					found = FALSE;	/* The URI's are not the same */
+					if (option_debug > 4) {
+						ast_log(LOG_DEBUG, "= Being pedantic: Forked call - two branches hitting us at the same time - This URI %s - Other URI %s\n", req->rlPart2, p->initreq.rlPart2);
+					}
 				}
 			}
 			if (!found && option_debug > 4)




More information about the asterisk-commits mailing list