From: Automerge Script Date: Mon, 7 May 2007 22:18:20 +0000 (+0000) Subject: automerge commit X-Git-Tag: 1.2.19-netsec~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=948f8837ce35f527054d230d3e2798c14b97eb1b;p=thirdparty%2Fasterisk.git automerge commit git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@63328 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/app.c b/app.c index dd4a1853bf..f997752480 100644 --- a/app.c +++ b/app.c @@ -1113,6 +1113,20 @@ int ast_app_group_match_get_count(char *groupmatch, char *category) return count; } +int ast_app_group_update(struct ast_channel *old, struct ast_channel *new) +{ + struct ast_group_info *gi = NULL; + + AST_LIST_LOCK(&groups); + AST_LIST_TRAVERSE(&groups, gi, list) { + if (gi->chan == old) + gi->chan = new; + } + AST_LIST_UNLOCK(&groups); + + return 0; +} + int ast_app_group_discard(struct ast_channel *chan) { struct ast_group_info *gi = NULL; diff --git a/channel.c b/channel.c index 55276c9ec0..4c71ce3f62 100644 --- a/channel.c +++ b/channel.c @@ -3106,7 +3106,7 @@ int ast_do_masquerade(struct ast_channel *original) original->fds[x] = clone->fds[x]; } /* Drop group from original */ - ast_app_group_discard(original); + ast_app_group_update(clone, original); clone_variables(original, clone); AST_LIST_HEAD_INIT_NOLOCK(&clone->varshead); /* Presense of ADSI capable CPE follows clone */ diff --git a/include/asterisk/app.h b/include/asterisk/app.h index b09cc8eb87..98a78d2d08 100644 --- a/include/asterisk/app.h +++ b/include/asterisk/app.h @@ -188,6 +188,9 @@ int ast_app_group_match_get_count(char *groupmatch, char *category); /*! Discard all group counting for a channel */ int ast_app_group_discard(struct ast_channel *chan); +/*! Update all group counting for a channel to a new one */ +int ast_app_group_update(struct ast_channel *old, struct ast_channel *new); + /*! Lock the group count list */ int ast_app_group_list_lock(void);