[asterisk-commits] russell: branch 1.4 r58165 - in /branches/1.4: ./ main/manager.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Tue Mar 6 17:25:20 MST 2007


Author: russell
Date: Tue Mar  6 18:25:19 2007
New Revision: 58165

URL: http://svn.digium.com/view/asterisk?view=rev&rev=58165
Log:
Merged revisions 58164 via svnmerge from 
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)

........

Modified:
    branches/1.4/   (props changed)
    branches/1.4/main/manager.c

Propchange: branches/1.4/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.

Modified: branches/1.4/main/manager.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/main/manager.c?view=diff&rev=58165&r1=58164&r2=58165
==============================================================================
--- branches/1.4/main/manager.c (original)
+++ branches/1.4/main/manager.c Tue Mar  6 18:25:19 2007
@@ -1558,8 +1558,19 @@
 		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)) {



More information about the asterisk-commits mailing list