[asterisk-commits] pcadach: trunk r44136 - in /trunk: ./ channels/chan_h323.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Sun Oct 1 12:40:00 MST 2006


Author: pcadach
Date: Sun Oct  1 14:40:00 2006
New Revision: 44136

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

........
r44135 | pcadach | 2006-10-02 01:32:24 +0600 (Пнд, 02 Окт 2006) | 1 line

Do not simulate any audio tones if we got PROGRESS message
........

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

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

Modified: trunk/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_h323.c?rev=44136&r1=44135&r2=44136&view=diff
==============================================================================
--- trunk/channels/chan_h323.c (original)
+++ trunk/channels/chan_h323.c Sun Oct  1 14:40:00 2006
@@ -193,6 +193,7 @@
 	int txDtmfDigit;					/* DTMF digit being to send to H.323 side */
 	int noInbandDtmf;					/* Inband DTMF processing by DSP isn't available */
 	int connection_established;			/* Call got CONNECT message */
+	int got_progress;					/* Call got PROGRESS message, pass inband audio */
 	struct oh323_pvt *next;				/* Next channel in list */
 } *iflist = NULL;
 
@@ -864,9 +865,14 @@
 
 	struct oh323_pvt *pvt = (struct oh323_pvt *) c->tech_pvt;
 	char *token = (char *)NULL;
+	int res = -1;
+	int got_progress;
 
 	ast_mutex_lock(&pvt->lock);
 	token = (pvt->cd.call_token ? strdup(pvt->cd.call_token) : NULL);
+	got_progress = pvt->got_progress;
+	if (condition == AST_CONTROL_PROGRESS)
+		pvt->got_progress = 1;
 	ast_mutex_unlock(&pvt->lock);
 
 	if (h323debug)
@@ -876,6 +882,7 @@
 	case AST_CONTROL_RINGING:
 		if (c->_state == AST_STATE_RING || c->_state == AST_STATE_RINGING) {
 			h323_send_alerting(token);
+			res = (got_progress ? 0 : -1);	/* Do not simulate any audio tones if we got PROGRESS message */
 			break;
 		}
 		if (token)
@@ -883,7 +890,9 @@
 		return -1;
 	case AST_CONTROL_PROGRESS:
 		if (c->_state != AST_STATE_UP) {
-			h323_send_progress(token);
+			/* Do not send PROGRESS message more than once */
+			if (!got_progress)
+				h323_send_progress(token);
 			break;
 		}
 		if (token)
@@ -944,7 +953,7 @@
 		free(token);
 	oh323_update_info(c);
 
-	return -1;
+	return res;
 }
 
 static int oh323_fixup(struct ast_channel *oldchan, struct ast_channel *newchan)



More information about the asterisk-commits mailing list