[asterisk-commits] russell: branch 1.6.0 r108354 - in /branches/1.6.0: ./ channels/chan_sip.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Mar 12 17:52:58 CDT 2008


Author: russell
Date: Wed Mar 12 17:52:58 2008
New Revision: 108354

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

........
r107157 | file | 2008-03-10 15:00:21 -0500 (Mon, 10 Mar 2008) | 4 lines

If we receive a 488 on a T38 request reinvite back to audio. As well reinvite across a bridge back to audio if one side doesn't negotiate to T38.
(closes issue #8677)
Reported by: alex-911

........

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

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

Modified: branches/1.6.0/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/branches/1.6.0/channels/chan_sip.c?view=diff&rev=108354&r1=108353&r2=108354
==============================================================================
--- branches/1.6.0/channels/chan_sip.c (original)
+++ branches/1.6.0/channels/chan_sip.c Wed Mar 12 17:52:58 2008
@@ -5133,6 +5133,8 @@
 					transmit_reinvite_with_sdp(p, TRUE, FALSE);
 				}
 				break;
+			case AST_T38_TERMINATED:
+			case AST_T38_REFUSED:
 			case AST_T38_REQUEST_TERMINATE:		/* Shutdown T38 */
 				if (p->t38.state == T38_ENABLED)
 					transmit_reinvite_with_sdp(p, FALSE, FALSE);
@@ -14714,24 +14716,13 @@
 		break;
 	case 488: /* Not acceptable here */
 		xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE);
-		if (reinvite && p->udptl) {
-			/* If this is a T.38 call, we should go back to 
-			   audio. If this is an audio call - something went
-			   terribly wrong since we don't renegotiate codecs,
-			   only IP/port .
-			*/
+		if (p->udptl && p->t38.state == T38_LOCAL_REINVITE) {
 			change_t38_state(p, T38_DISABLED);
 			/* Try to reset RTP timers */
 			ast_rtp_set_rtptimers_onhold(p->rtp);
-			ast_log(LOG_ERROR, "Got error on T.38 re-invite. Bad configuration. Peer needs to have T.38 disabled.\n");
-
-			/*! \bug Is there any way we can go back to the audio call on both
-			   sides here? 
-			*/
-			/* While figuring that out, hangup the call */
-			if (p->owner && !req->ignore)
-				ast_queue_control(p->owner, AST_CONTROL_CONGESTION);
-			p->needdestroy = 1;
+
+			/* Trigger a reinvite back to audio */
+			transmit_reinvite_with_sdp(p, FALSE, FALSE);
 		} else if (p->udptl && p->t38.state == T38_LOCAL_DIRECT) {
 			/* We tried to send T.38 out in an initial INVITE and the remote side rejected it,
 			   right now we can't fall back to audio so totally abort.




More information about the asterisk-commits mailing list