watchers[0] = in;
while(o) {
/* Keep track of important channels */
watchers[0] = in;
while(o) {
/* Keep track of important channels */
+ if (o->stillgoing && o->chan) {
watchers[pos++] = o->chan;
found = 1;
}
watchers[pos++] = o->chan;
found = 1;
}
case AST_CONTROL_BUSY:
if (option_verbose > 2)
ast_verbose( VERBOSE_PREFIX_3 "%s is busy\n", o->chan->name);
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);
o->stillgoing = 0;
if (in->cdr)
ast_cdr_busy(in->cdr);
case AST_CONTROL_CONGESTION:
if (option_verbose > 2)
ast_verbose( VERBOSE_PREFIX_3 "%s is circuit-busy\n", o->chan->name);
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);
o->stillgoing = 0;
if (in->cdr)
ast_cdr_busy(in->cdr);
}
ast_frfree(f);
} else {
}
ast_frfree(f);
} else {
+ ast_hangup(o->chan)
+ o->chan = NULL;