Don't hold channel resources longer than we need them

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Spencer 2003-07-22 15:16:55 +00:00
parent c05524beb1
commit 7fa873f2b2
1 changed files with 7 additions and 1 deletions

View File

@ -148,7 +148,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localu
watchers[0] = in;
while(o) {
/* Keep track of important channels */
if (o->stillgoing) {
if (o->stillgoing && o->chan) {
watchers[pos++] = o->chan;
found = 1;
}
@ -228,6 +228,8 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localu
case AST_CONTROL_BUSY:
if (option_verbose > 2)
ast_verbose( VERBOSE_PREFIX_3 "%s is busy\n", o->chan->name);
ast_hangup(o->chan)
o->chan = NULL;
o->stillgoing = 0;
if (in->cdr)
ast_cdr_busy(in->cdr);
@ -236,6 +238,8 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localu
case AST_CONTROL_CONGESTION:
if (option_verbose > 2)
ast_verbose( VERBOSE_PREFIX_3 "%s is circuit-busy\n", o->chan->name);
ast_hangup(o->chan)
o->chan = NULL;
o->stillgoing = 0;
if (in->cdr)
ast_cdr_busy(in->cdr);
@ -277,6 +281,8 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localu
}
ast_frfree(f);
} else {
ast_hangup(o->chan)
o->chan = NULL;
o->stillgoing = 0;
}
}