]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 69127 via svnmerge from
authorJoshua Colp <jcolp@digium.com>
Wed, 13 Jun 2007 18:16:00 +0000 (18:16 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 13 Jun 2007 18:16:00 +0000 (18:16 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r69127 | file | 2007-06-13 14:12:48 -0400 (Wed, 13 Jun 2007) | 2 lines

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.4@69128 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/app.c

index 89fdb26d4bfffbf68613e8bdf5b8bd35123d8f32..dbcdcac647080d5305df8ab09b144920def4c757 100644 (file)
@@ -806,12 +806,16 @@ int ast_app_group_set_channel(struct ast_channel *chan, const 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);