diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-01-30 06:48:01 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-01-30 06:48:01 +0000 |
commit | 9ddb7f444ac4249ceb922e34ff0aec366cb1f666 (patch) | |
tree | 52356a00e56b590cb015bc187bf80631b6b7a47c /channel.c | |
parent | 3deb041660dc93cdbe457cc2f06cefe316b6e865 (diff) |
Merge variable lists
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2097 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channel.c')
-rwxr-xr-x | channel.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -1929,7 +1929,7 @@ static int ast_do_masquerade(struct ast_channel *original) int x,i; int res=0; char *tmp; - void *tmpv; + struct ast_var_t *varptr; struct ast_frame *cur, *prev; struct ast_channel_pvt *p; struct ast_channel *clone = original->masq; @@ -2037,10 +2037,19 @@ static int ast_do_masquerade(struct ast_channel *original) for (x=0;x<AST_MAX_FDS;x++) { original->fds[x] = clone->fds[x]; } - /* Move the variables */ - tmpv = original->varshead.first; + /* Append variables from clone channel into original channel */ + /* XXX Is this always correct? We have to in order to keep MACROS working XXX */ + varptr = original->varshead.first; + if (varptr) { + while(varptr->entries.next) { + varptr = varptr->entries.next; + } + varptr->entries.next = clone->varshead.first; + } else { + original->varshead.first = clone->varshead.first; + } + clone->varshead.first = NULL; original->varshead.first = clone->varshead.first; - clone->varshead.first = tmpv; /* Presense of ADSI capable CPE follows clone */ original->adsicpe = clone->adsicpe; /* Bridge remains the same */ |