From 010debfb0939ec9a2d71b97a922da8d85c7662ad Mon Sep 17 00:00:00 2001 From: kpfleming Date: Tue, 7 Oct 2008 23:14:57 +0000 Subject: revert this change until i can understand why it results in locking order changes git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@147430 f38db490-d61c-443f-a65b-d21fe96a405b --- channels/chan_dahdi.c | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) (limited to 'channels') diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 53a690d62..476a24c62 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -9080,16 +9080,10 @@ static void *pri_dchannel(void *vpri) } pthread_attr_destroy(&attr); } else { - /* Release PRI lock while we create the channel */ ast_mutex_unlock(&pri->lock); - - if (!(c = dahdi_new(pri->pvts[chanpos], AST_STATE_RING, 0, SUB_REAL, law, e->ring.ctype))) { - ast_mutex_lock(&pri->lock); - ast_log(LOG_WARNING, "Unable to create channel for %d/%d, span %d\n", - pri->pvts[chanpos]->logicalspan, pri->pvts[chanpos]->prioffset, pri->span); - pri_hangup(pri->pri, e->ring.call, PRI_CAUSE_SWITCH_CONGESTION); - pri->pvts[chanpos]->call = NULL; - } else { + /* Release PRI lock while we create the channel */ + c = dahdi_new(pri->pvts[chanpos], AST_STATE_RING, 1, SUB_REAL, law, e->ring.ctype); + if (c) { char calledtonstr[10]; ast_mutex_unlock(&pri->pvts[chanpos]->lock); @@ -9116,17 +9110,17 @@ static void *pri_dchannel(void *vpri) if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Accepting call from '%s' to '%s' on channel %d/%d, span %d\n", - plancallingnum, pri->pvts[chanpos]->exten, - pri->pvts[chanpos]->logicalspan, pri->pvts[chanpos]->prioffset, pri->span); - if (ast_pbx_start(c)) { - ast_log(LOG_WARNING, "Unable to start PBX on %s\n", c->name); - ast_hangup(c); - pri->pvts[chanpos]->owner = NULL; - pri_hangup(pri->pri, e->ring.call, PRI_CAUSE_SWITCH_CONGESTION); - pri->pvts[chanpos]->call = NULL; - } else { - dahdi_enable_ec(pri->pvts[chanpos]); - } + plancallingnum, pri->pvts[chanpos]->exten, + pri->pvts[chanpos]->logicalspan, pri->pvts[chanpos]->prioffset, pri->span); + dahdi_enable_ec(pri->pvts[chanpos]); + } else { + + ast_mutex_lock(&pri->lock); + + ast_log(LOG_WARNING, "Unable to start PBX on channel %d/%d, span %d\n", + pri->pvts[chanpos]->logicalspan, pri->pvts[chanpos]->prioffset, pri->span); + pri_hangup(pri->pri, e->ring.call, PRI_CAUSE_SWITCH_CONGESTION); + pri->pvts[chanpos]->call = NULL; } } } else { -- cgit v1.2.3