It is valid to redirect channels via the manager interface that are not in the

UP state.  Instead of checking for that to prevent to ensure a dead channel
doesn't get redirected, just use the ast_check_hangup() API call.
(issue #9457, reported by Callmewind, patch by me)
(related to issue #8977)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@60134 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2007-04-04 17:38:47 +00:00
parent 3f71ad082e
commit 2bed78a613

View File

@@ -885,15 +885,15 @@ static int action_redirect(struct mansession *s, struct message *m)
astman_send_error(s, m, buf);
return 0;
}
if (chan->_state != AST_STATE_UP) {
astman_send_error(s, m, "Redirect failed, channel not up.\n");
if (ast_check_hangup(chan)) {
astman_send_error(s, m, "Redirect failed, channel hung up.\n");
ast_mutex_unlock(&chan->lock);
return 0;
}
if (!ast_strlen_zero(name2))
chan2 = ast_get_channel_by_name_locked(name2);
if (chan2 && chan2->_state != AST_STATE_UP) {
astman_send_error(s, m, "Redirect failed, extra channel not up.\n");
if (chan2 && ast_check_hangup(chan2)) {
astman_send_error(s, m, "Redirect failed, extra channel hung up.\n");
ast_mutex_unlock(&chan->lock);
ast_mutex_unlock(&chan2->lock);
return 0;