@ -1014,9 +1014,9 @@ int ast_app_group_set_channel(struct ast_channel *chan, const char *data)
}
AST_RWLIST_WRLOCK ( & groups ) ;
AST_RWLIST_TRAVERSE_SAFE_BEGIN ( & groups , gi , list) {
AST_RWLIST_TRAVERSE_SAFE_BEGIN ( & groups , gi , group_ list) {
if ( ( gi - > chan = = chan ) & & ( ( ast_strlen_zero ( category ) & & ast_strlen_zero ( gi - > category ) ) | | ( ! ast_strlen_zero ( gi - > category ) & & ! strcasecmp ( gi - > category , category ) ) ) ) {
AST_RWLIST_REMOVE_CURRENT ( list) ;
AST_RWLIST_REMOVE_CURRENT ( group_ list) ;
free ( gi ) ;
break ;
}
@ -1033,7 +1033,7 @@ int ast_app_group_set_channel(struct ast_channel *chan, const char *data)
gi - > category = ( char * ) gi + sizeof ( * gi ) + strlen ( group ) + 1 ;
strcpy ( gi - > category , category ) ;
}
AST_RWLIST_INSERT_TAIL ( & groups , gi , list) ;
AST_RWLIST_INSERT_TAIL ( & groups , gi , group_ list) ;
} else {
res = - 1 ;
}
@ -1053,7 +1053,7 @@ int ast_app_group_get_count(const char *group, const char *category)
}
AST_RWLIST_RDLOCK ( & groups ) ;
AST_RWLIST_TRAVERSE ( & groups , gi , list) {
AST_RWLIST_TRAVERSE ( & groups , gi , group_ list) {
if ( ! strcasecmp ( gi - > group , group ) & & ( ast_strlen_zero ( category ) | | ( ! ast_strlen_zero ( gi - > category ) & & ! strcasecmp ( gi - > category , category ) ) ) ) {
count + + ;
}
@ -1079,7 +1079,7 @@ int ast_app_group_match_get_count(const char *groupmatch, const char *category)
}
AST_RWLIST_RDLOCK ( & groups ) ;
AST_RWLIST_TRAVERSE ( & groups , gi , list) {
AST_RWLIST_TRAVERSE ( & groups , gi , group_ list) {
if ( ! regexec ( & regexbuf , gi - > group , 0 , NULL , 0 ) & & ( ast_strlen_zero ( category ) | | ( ! ast_strlen_zero ( gi - > category ) & & ! strcasecmp ( gi - > category , category ) ) ) ) {
count + + ;
}
@ -1096,11 +1096,11 @@ int ast_app_group_update(struct ast_channel *old, struct ast_channel *new)
struct ast_group_info * gi = NULL ;
AST_RWLIST_WRLOCK ( & groups ) ;
AST_RWLIST_TRAVERSE_SAFE_BEGIN ( & groups , gi , list) {
AST_RWLIST_TRAVERSE_SAFE_BEGIN ( & groups , gi , group_ list) {
if ( gi - > chan = = old ) {
gi - > chan = new ;
} else if ( gi - > chan = = new ) {
AST_RWLIST_REMOVE_CURRENT ( list) ;
AST_RWLIST_REMOVE_CURRENT ( group_ list) ;
ast_free ( gi ) ;
}
}
@ -1115,9 +1115,9 @@ int ast_app_group_discard(struct ast_channel *chan)
struct ast_group_info * gi = NULL ;
AST_RWLIST_WRLOCK ( & groups ) ;
AST_RWLIST_TRAVERSE_SAFE_BEGIN ( & groups , gi , list) {
AST_RWLIST_TRAVERSE_SAFE_BEGIN ( & groups , gi , group_ list) {
if ( gi - > chan = = chan ) {
AST_RWLIST_REMOVE_CURRENT ( list) ;
AST_RWLIST_REMOVE_CURRENT ( group_ list) ;
ast_free ( gi ) ;
}
}