Merge variable lists

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2097 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Spencer 2004-01-30 06:48:01 +00:00
parent 81cf763a97
commit 068fd1d839
1 changed files with 13 additions and 4 deletions

View File

@ -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 */