[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