]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 58164 via svnmerge from
authorRussell Bryant <russell@russellbryant.com>
Wed, 7 Mar 2007 00:25:19 +0000 (00:25 +0000)
committerRussell Bryant <russell@russellbryant.com>
Wed, 7 Mar 2007 00:25:19 +0000 (00:25 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r58164 | russell | 2007-03-06 18:20:13 -0600 (Tue, 06 Mar 2007) | 4 lines

If the channels acquired using the manager Redirect action are not up, then
don't attempt to do anything with them.  It could lead to weird behavior,
including crashes.  (issue #8977)

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@58165 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index 4c6dc30b930eceb05c9b927e807e2fe38b43efc6..4e4abd06440df4827695e9372f631d4c46bf5ec8 100644 (file)
@@ -1558,8 +1558,19 @@ 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) {
+               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) {
+               astman_send_error(s, m, "Redirect failed, extra channel not up.\n");
+               ast_channel_unlock(chan);
+               ast_channel_unlock(chan2);
+               return 0;
+       }
        res = ast_async_goto(chan, context, exten, pi);
        if (!res) {
                if (!ast_strlen_zero(name2)) {