[svn-commits] oej: branch oej/darjeeling-prack-1.8 r369786 - /team/oej/darjeeling-prack-1.8...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Jul 9 04:11:27 CDT 2012


Author: oej
Date: Mon Jul  9 04:11:25 2012
New Revision: 369786

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=369786
Log:
Actually ANSWER the call in non-prack state. 

Thanks to Pavel Trollier for reporting this issue and testing a number of times.

Modified:
    team/oej/darjeeling-prack-1.8/channels/chan_sip.c

Modified: team/oej/darjeeling-prack-1.8/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/darjeeling-prack-1.8/channels/chan_sip.c?view=diff&rev=369786&r1=369785&r2=369786
==============================================================================
--- team/oej/darjeeling-prack-1.8/channels/chan_sip.c (original)
+++ team/oej/darjeeling-prack-1.8/channels/chan_sip.c Mon Jul  9 04:11:25 2012
@@ -4248,7 +4248,7 @@
 	}
 
 	res = (reliable) ?
-		 __sip_reliable_xmit(p, seqno, 1, req->data, (reliable == XMIT_CRITICAL), req->method) :
+		 __sip_reliable_xmit(p, seqno, 1, req->data, (reliable == XMIT_CRITICAL || reliable == XMIT_PRACK), req->method) :
 		__sip_xmit(p, req->data);
 	deinit_req(req);
 	if (res > 0) {
@@ -11895,8 +11895,10 @@
 		reliable = XMIT_PRACK;
 	}
 	if (strncmp(msg, "100", 3)) {
-		/* If we send a resposne WITH sdp we are not allowed to respond before the PRACK is received */
-		ast_set_flag(&p->flags[2], SIP_PAGE3_INVITE_WAIT_FOR_PRACK);
+		/* If we send a response WITH sdp we are not allowed to respond before the PRACK is received */
+		if (ast_test_flag(&p->flags[2], SIP_PAGE3_100REL) {
+			ast_set_flag(&p->flags[2], SIP_PAGE3_INVITE_WAIT_FOR_PRACK);
+		}
 		add_prack_respheader(p, &resp, reliable);
 		add_required_respheader(&resp);
 	}
@@ -20487,6 +20489,9 @@
 				/* Queue a progress frame */
 				ast_queue_control(p->owner, AST_CONTROL_PROGRESS);
 			}
+			if (sip_cfg.early_media_focus && ast_strlen_zero(p->theirtag_early)) {
+				ast_string_field_set(p, theirtag_early, p->tag);
+			}
 			ast_rtp_instance_activate(p->rtp);
 		} else {
 			/* Alcatel PBXs are known to send 183s with no SDP after sending
@@ -21424,7 +21429,7 @@
 		}
 	}
 
-	if (sip_cfg.early_media_focus && !ast_strlen_zero(p->theirtag_early) && !strcmp(p->theirtag_early, p->theirtag)) {
+	if (sip_cfg.early_media_focus && !ast_strlen_zero(p->theirtag_early) && strcmp(p->theirtag_early, p->theirtag)) {
 		/* If we already are in early media phase, and have a response from a new device in this call we should
 	   	ignore the SDP. */
 		req->ignoresdp = TRUE;
@@ -22702,6 +22707,7 @@
 	if (p->reqsipoptions & SIP_OPT_100REL || p->sipoptions & SIP_OPT_100REL) {
 		if (ast_test_flag(&p->flags[2], SIP_PAGE3_PRACK)) {	/* Is PRACK enabled for this dialog? */
 			ast_set_flag(&p->flags[2], SIP_PAGE3_100REL);	/* Mark PRACK as active for this dialog */
+			ast_debug(2, "--#-#-#-#- Adding PRACK support for this dialog \n");
 		} else if (p->reqsipoptions & SIP_OPT_100REL) {
 			/* If PRACK was required but is disabled in configuration, don't play */
 			transmit_response(p, "420 Bad extension (unsupported)", req);




More information about the svn-commits mailing list