[asterisk-commits] jrose: branch 12 r399553 - /branches/12/main/dial.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Sep 20 17:04:30 CDT 2013
Author: jrose
Date: Fri Sep 20 17:04:25 2013
New Revision: 399553
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=399553
Log:
originate/call forwarding: Fix a crash when forwarding a call from originate
(closes issue ASTERISK-22487)
Reported by: David M. Lee
Review: https://reviewboard.asterisk.org/r/2868/
Modified:
branches/12/main/dial.c
Modified: branches/12/main/dial.c
URL: http://svnview.digium.com/svn/asterisk/branches/12/main/dial.c?view=diff&rev=399553&r1=399552&r2=399553
==============================================================================
--- branches/12/main/dial.c (original)
+++ branches/12/main/dial.c Fri Sep 20 17:04:25 2013
@@ -398,6 +398,15 @@
*stuff++ = '\0';
tech = tmp;
device = stuff;
+ } else {
+ const char *forward_context;
+ char destination[AST_MAX_CONTEXT + AST_MAX_EXTENSION + 1];
+
+ ast_channel_lock(original);
+ forward_context = pbx_builtin_getvar_helper(original, "FORWARD_CONTEXT");
+ snprintf(destination, sizeof(destination), "%s@%s", tmp, S_OR(forward_context, ast_channel_context(original)));
+ ast_channel_unlock(original);
+ device = ast_strdupa(destination);
}
/* Drop old destination information */
@@ -409,11 +418,13 @@
channel->device = ast_strdup(device);
AST_LIST_UNLOCK(&dial->channels);
+
+ /* Drop the original channel */
+ ast_hangup(original);
+ channel->owner = NULL;
+
/* Finally give it a go... send it out into the world */
begin_dial_channel(channel, chan, chan ? 0 : 1);
-
- /* Drop the original channel */
- ast_hangup(original);
return 0;
}
More information about the asterisk-commits
mailing list