Merged revisions 60137 via svnmerge from
authorRussell Bryant <russell@russellbryant.com>
Wed, 4 Apr 2007 17:41:37 +0000 (17:41 +0000)
committerRussell Bryant <russell@russellbryant.com>
Wed, 4 Apr 2007 17:41:37 +0000 (17:41 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

................
r60137 | russell | 2007-04-04 12:40:10 -0500 (Wed, 04 Apr 2007) | 14 lines

Merged revisions 60134 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r60134 | russell | 2007-04-04 12:38:47 -0500 (Wed, 04 Apr 2007) | 6 lines

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/trunk@60141 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index bb3c647..116b77a 100644 (file)
@@ -1682,14 +1682,14 @@ static int action_redirect(struct mansession *s, const struct message *m)
                astman_send_error(s, m, buf);
                return 0;
        }
-       if (chan->_state != AST_STATE_UP) {
+       if (ast_check_hangup(chan)) {
                astman_send_error(s, m, "Redirect failed, channel not up.\n");
                ast_channel_unlock(chan);
                return 0;
        }
        if (!ast_strlen_zero(name2))
                chan2 = ast_get_channel_by_name_locked(name2);
-       if (chan2 && chan2->_state != AST_STATE_UP) {
+       if (chan2 && ast_check_hangup(chan2)) {
                astman_send_error(s, m, "Redirect failed, extra channel not up.\n");
                ast_channel_unlock(chan);
                ast_channel_unlock(chan2);