From 948f8837ce35f527054d230d3e2798c14b97eb1b Mon Sep 17 00:00:00 2001 From: Automerge Script Date: Mon, 7 May 2007 22:18:20 +0000 Subject: [PATCH] automerge commit git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@63328 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- app.c | 14 ++++++++++++++ channel.c | 2 +- include/asterisk/app.h | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) 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); -- 2.47.2