[svn-commits] murf: branch 1.4 r70062 - in /branches/1.4: ./ main/channel.c
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Tue Jun 19 13:23:23 CDT 2007
Author: murf
Date: Tue Jun 19 13:23:23 2007
New Revision: 70062
URL: http://svn.digium.com/view/asterisk?view=rev&rev=70062
Log:
Merged revisions 70053 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r70053 | murf | 2007-06-19 12:07:59 -0600 (Tue, 19 Jun 2007) | 1 line
This fixes 9246, where channel variables are not available in the 'h' exten, on a 'ZOMBIE' channel. The fix is to consolidate the channel variables during a masquerade, and then copy the merged variables back onto the clone, so the zombie has the same vars that the 'original' has.
........
Modified:
branches/1.4/ (props changed)
branches/1.4/main/channel.c
Propchange: branches/1.4/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.
Modified: branches/1.4/main/channel.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/main/channel.c?view=diff&rev=70062&r1=70061&r2=70062
==============================================================================
--- branches/1.4/main/channel.c (original)
+++ branches/1.4/main/channel.c Tue Jun 19 13:23:23 2007
@@ -3461,10 +3461,20 @@
*/
static void clone_variables(struct ast_channel *original, struct ast_channel *clone)
{
+ struct ast_var_t *current, *newvar;
/* Append variables from clone channel into original channel */
/* XXX Is this always correct? We have to in order to keep MACROS working XXX */
if (AST_LIST_FIRST(&clone->varshead))
AST_LIST_APPEND_LIST(&original->varshead, &clone->varshead, entries);
+ AST_LIST_HEAD_INIT_NOLOCK(&clone->varshead);
+
+ /* then, dup the varshead list into the clone */
+
+ AST_LIST_TRAVERSE(&original->varshead, current, entries) {
+ newvar = ast_var_assign(current->name, current->value);
+ if (newvar)
+ AST_LIST_INSERT_TAIL(&clone->varshead, newvar, entries);
+ }
}
/*!
@@ -3668,7 +3678,6 @@
AST_LIST_HEAD_INIT_NOLOCK(&clone->datastores);
clone_variables(original, clone);
- AST_LIST_HEAD_INIT_NOLOCK(&clone->varshead);
/* Presense of ADSI capable CPE follows clone */
original->adsicpe = clone->adsicpe;
/* Bridge remains the same */
More information about the svn-commits
mailing list