Index: pbx.c =================================================================== RCS file: /usr/cvsroot/asterisk/pbx.c,v retrieving revision 1.284 diff -u -r1.284 pbx.c --- pbx.c 13 Oct 2005 23:35:57 -0000 1.284 +++ pbx.c 14 Oct 2005 22:01:05 -0000 @@ -5885,15 +5885,24 @@ { struct ast_var_t *newvariable; struct varshead *headp; - + char *nametail = name; if (name[strlen(name)-1] == ')') return ast_func_write(chan, name, value); headp = (chan) ? &chan->varshead : &globals; + /* For comparison purposes, we have to strip leading underscores */ + if (nametail[0] == '_') { + if (nametail[1] == '_') { + nametail += 2; + } else { + nametail += 1; + } + } + AST_LIST_TRAVERSE (headp, newvariable, entries) { - if (strcasecmp(ast_var_name(newvariable), name) == 0) { + if (strcasecmp(ast_var_name(newvariable), nametail) == 0) { /* there is already such a variable, delete it */ AST_LIST_REMOVE(headp, newvariable, entries); ast_var_delete(newvariable);