[asterisk-commits] mattf: trunk r114092 - /trunk/channels/chan_zap.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sat Apr 12 11:13:27 CDT 2008
Author: mattf
Date: Sat Apr 12 11:13:25 2008
New Revision: 114092
URL: http://svn.digium.com/view/asterisk?view=rev&rev=114092
Log:
Make sure we start incoming calls on SS7 with echo cancellation enabled. Also make sure when completing a COT we call ss7_start_call with the proper locks held. Lastly, make sure if we fail to get a channel from zt_new that we don't assume it's there.
Modified:
trunk/channels/chan_zap.c
Modified: trunk/channels/chan_zap.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_zap.c?view=diff&rev=114092&r1=114091&r2=114092
==============================================================================
--- trunk/channels/chan_zap.c (original)
+++ trunk/channels/chan_zap.c Sat Apr 12 11:13:25 2008
@@ -9114,6 +9114,7 @@
}
}
+/* XXX: This function is assumed to be called with the private channel lock and linkset lock held */
static void ss7_start_call(struct zt_pvt *p, struct zt_ss7 *linkset)
{
struct ss7 *ss7 = linkset->ss7;
@@ -9139,11 +9140,16 @@
ast_mutex_unlock(&linkset->lock);
c = zt_new(p, AST_STATE_RING, 1, SUB_REAL, law, 0);
+
+ if (!c) {
+ ast_log(LOG_WARNING, "Unable to start PBX on CIC %d\n", p->cic);
+ return;
+ } else
+ ast_verb(3, "Accepting call to '%s' on CIC %d\n", p->exten, p->cic);
+
ast_mutex_lock(&linkset->lock);
- if (c)
- ast_verb(3, "Accepting call to '%s' on CIC %d\n", p->exten, p->cic);
- else
- ast_log(LOG_WARNING, "Unable to start PBX on CIC %d\n", p->cic);
+
+ zt_enable_ec(p);
if (!ast_strlen_zero(p->charge_number)) {
pbx_builtin_setvar_helper(c, "SS7_CHARGE_NUMBER", p->charge_number);
@@ -9506,10 +9512,14 @@
}
p = linkset->pvts[chanpos];
+ ast_mutex_lock(&p->lock);
+
if (p->loopedback) {
zt_loopback(p, 0);
ss7_start_call(p, linkset);
}
+
+ ast_mutex_unlock(&p->lock);
break;
case ISUP_EVENT_CCR:
More information about the asterisk-commits
mailing list