[svn-commits] pcadach: branch 1.4 r44135 - /branches/1.4/channels/chan_h323.c

svn-commits at lists.digium.com svn-commits at lists.digium.com
Sun Oct 1 12:32:25 MST 2006


Author: pcadach
Date: Sun Oct  1 14:32:24 2006
New Revision: 44135

URL: http://svn.digium.com/view/asterisk?rev=44135&view=rev
Log:
Do not simulate any audio tones if we got PROGRESS message

Modified:
    branches/1.4/channels/chan_h323.c

Modified: branches/1.4/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/channels/chan_h323.c?rev=44135&r1=44134&r2=44135&view=diff
==============================================================================
--- branches/1.4/channels/chan_h323.c (original)
+++ branches/1.4/channels/chan_h323.c Sun Oct  1 14:32:24 2006
@@ -192,6 +192,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;
 
@@ -861,9 +862,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)
@@ -873,6 +879,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)
@@ -880,7 +887,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)
@@ -938,7 +947,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 svn-commits mailing list