]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
It is valid to redirect channels via the manager interface that are not in the
authorRussell Bryant <russell@russellbryant.com>
Wed, 4 Apr 2007 17:38:47 +0000 (17:38 +0000)
committerRussell Bryant <russell@russellbryant.com>
Wed, 4 Apr 2007 17:38:47 +0000 (17:38 +0000)
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

manager.c

index 30210a2f5fab4f705505f2f1bd224626d81b52fc..e83c55e20cfbad0cc089b3511c0a4c645e8eceba 100644 (file)
--- a/manager.c
+++ b/manager.c
@@ -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;