diff options
author | mattf <mattf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-03-23 21:44:36 +0000 |
---|---|---|
committer | mattf <mattf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-03-23 21:44:36 +0000 |
commit | caa3b155aebc3544fb460449079981041b198c1a (patch) | |
tree | 0da6790fb50fcb657f7cb7d147d80fd8a8bac7c6 /channels/chan_zap.c | |
parent | 1d5a54ceb8e851cf7340af8f9b6840e8494ef4f2 (diff) |
Fix SETUP_ACK handling so that we change channels if so requested
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@14522 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_zap.c')
-rw-r--r-- | channels/chan_zap.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/channels/chan_zap.c b/channels/chan_zap.c index e584a0a67..230465f0e 100644 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -9031,15 +9031,19 @@ static void *pri_dchannel(void *vpri) ast_log(LOG_WARNING, "Received SETUP_ACKNOWLEDGE on unconfigured channel %d/%d span %d\n", PRI_SPAN(e->setup_ack.channel), PRI_CHANNEL(e->setup_ack.channel), pri->span); } else { - ast_mutex_lock(&pri->pvts[chanpos]->lock); - pri->pvts[chanpos]->setup_ack = 1; - /* Send any queued digits */ - for (x=0;x<strlen(pri->pvts[chanpos]->dialdest);x++) { - ast_log(LOG_DEBUG, "Sending pending digit '%c'\n", pri->pvts[chanpos]->dialdest[x]); - pri_information(pri->pri, pri->pvts[chanpos]->call, - pri->pvts[chanpos]->dialdest[x]); - } - ast_mutex_unlock(&pri->pvts[chanpos]->lock); + chanpos = pri_fixup_principle(pri, chanpos, e->ring.call); + if (chanpos > -1) { + ast_mutex_lock(&pri->pvts[chanpos]->lock); + pri->pvts[chanpos]->setup_ack = 1; + /* Send any queued digits */ + for (x=0;x<strlen(pri->pvts[chanpos]->dialdest);x++) { + ast_log(LOG_DEBUG, "Sending pending digit '%c'\n", pri->pvts[chanpos]->dialdest[x]); + pri_information(pri->pri, pri->pvts[chanpos]->call, + pri->pvts[chanpos]->dialdest[x]); + } + ast_mutex_unlock(&pri->pvts[chanpos]->lock); + } else + ast_log(LOG_WARNING, "Unable to move channel %d!\n", e->setup_ack.channel); } break; case PRI_EVENT_NOTIFY: |