mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 20:04:50 +00:00
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. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@70062 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -3461,10 +3461,20 @@ void ast_channel_inherit_variables(const struct ast_channel *parent, struct ast_
|
||||
*/
|
||||
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 @@ int ast_do_masquerade(struct ast_channel *original)
|
||||
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 */
|
||||
|
Reference in New Issue
Block a user