From: Joshua Colp Date: Wed, 13 Jun 2007 18:12:48 +0000 (+0000) Subject: Return group counting to previous behavior where you could only have one group per... X-Git-Tag: 1.2.19~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0156942fe022084bcbe9d744e23f42cc751679c3;p=thirdparty%2Fasterisk.git Return group counting to previous behavior where you could only have one group per category. (issue #9711 reported by irroot) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@69127 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/app.c b/app.c index f997752480..33b318dd2c 100644 --- a/app.c +++ b/app.c @@ -1047,12 +1047,16 @@ int ast_app_group_set_channel(struct ast_channel *chan, char *data) len += strlen(category) + 1; AST_LIST_LOCK(&groups); - AST_LIST_TRAVERSE(&groups, gi, list) { - if (gi->chan == chan && !strcasecmp(gi->group, group) && (ast_strlen_zero(category) || (!ast_strlen_zero(gi->category) && !strcasecmp(gi->category, category)))) + AST_LIST_TRAVERSE_SAFE_BEGIN(&groups, gi, list) { + if ((gi->chan == chan) && ((ast_strlen_zero(category) && ast_strlen_zero(gi->category)) || (!ast_strlen_zero(gi->category) && !strcasecmp(gi->category, category)))) { + AST_LIST_REMOVE_CURRENT(&groups, list); + free(gi); break; + } } + AST_LIST_TRAVERSE_SAFE_END - if (!gi && (gi = calloc(1, len))) { + if ((gi = calloc(1, len))) { gi->chan = chan; gi->group = (char *) gi + sizeof(*gi); strcpy(gi->group, group);