[svn-commits] file: branch 1.6.1 r182042 - in /branches/1.6.1: ./ channels/chan_sip.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Mar 13 12:29:30 CDT 2009


Author: file
Date: Fri Mar 13 12:29:26 2009
New Revision: 182042

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=182042
Log:
Merged revisions 182022 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
  r182022 | file | 2009-03-13 14:25:09 -0300 (Fri, 13 Mar 2009) | 7 lines
  
  Fix an issue with requesting a T38 reinvite before the call is answered.
  
  The code responsible for sending the T38 reinvite did not check if an INVITE was
  already being handled. This caused things to get confused and the call to fail.
  The code now defers sending the T38 reinvite until the current INVITE is done being
  handled.
........

Modified:
    branches/1.6.1/   (props changed)
    branches/1.6.1/channels/chan_sip.c

Propchange: branches/1.6.1/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.1/channels/chan_sip.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.6.1/channels/chan_sip.c?view=diff&rev=182042&r1=182041&r2=182042
==============================================================================
--- branches/1.6.1/channels/chan_sip.c (original)
+++ branches/1.6.1/channels/chan_sip.c Fri Mar 13 12:29:26 2009
@@ -5653,7 +5653,11 @@
 			case AST_T38_REQUEST_NEGOTIATE:		/* Request T38 */
 				if (p->t38.state != T38_ENABLED) {
 					change_t38_state(p, T38_LOCAL_REINVITE);
-					transmit_reinvite_with_sdp(p, TRUE, FALSE);
+					if (!p->pendinginvite) {
+						transmit_reinvite_with_sdp(p, TRUE, FALSE);
+					} else if (!ast_test_flag(&p->flags[0], SIP_PENDINGBYE)) {
+						ast_set_flag(&p->flags[0], SIP_NEEDREINVITE);
+					}
 				}
 				break;
 			case AST_T38_TERMINATED:
@@ -15740,7 +15744,7 @@
 		} else {
 			ast_debug(2, "Sending pending reinvite on '%s'\n", p->callid);
 			/* Didn't get to reinvite yet, so do it now */
-			transmit_reinvite_with_sdp(p, FALSE, FALSE);
+			transmit_reinvite_with_sdp(p, (p->t38.state == T38_LOCAL_REINVITE ? TRUE : FALSE), FALSE);
 			ast_clear_flag(&p->flags[0], SIP_NEEDREINVITE);	
 		}
 	}




More information about the svn-commits mailing list