]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_confbridge: Fix error messages on exiting conference.
authorRichard Mudgett <rmudgett@digium.com>
Tue, 5 Feb 2013 18:50:50 +0000 (18:50 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 5 Feb 2013 18:50:50 +0000 (18:50 +0000)
A marked user ending a conference with only end_marked users generates
error messages:
ERROR[0000][C-00000000]: confbridge/conf_state.c:47 conf_invalid_event_fn: Invalid event for confbridge user ''

* The MULTI_MARKED state was doing too much when it was kicking out the
end_marked users from the conference.  The kicked out users will clean up
after themselves when they exit the conference.

(closes issue ASTERISK-20991)
Reported by: Jeremy Kister
Tested by: rmudgett
........

Merged revisions 380892 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@380893 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/confbridge/conf_state_multi_marked.c

index 2529266099f7d0194f8f37dd41352afb8a2c3835..21c56720755ca6b81a6b3d832b29ab20d1627158 100644 (file)
@@ -95,8 +95,6 @@ static void leave_marked(struct conference_bridge_user *cbu)
                AST_LIST_TRAVERSE_SAFE_BEGIN(&cbu->conference_bridge->active_list, cbu_iter, list) {
                        /* Kick ENDMARKED cbu_iters */
                        if (ast_test_flag(&cbu_iter->u_profile, USER_OPT_ENDMARKED)) {
-                               AST_LIST_REMOVE_CURRENT(list);
-                               cbu_iter->conference_bridge->activeusers--;
                                cbu_iter->kicked = 1;
                                ast_bridge_remove(cbu_iter->conference_bridge->bridge, cbu_iter->chan);
                        } else if (ast_test_flag(&cbu_iter->u_profile, USER_OPT_WAITMARKED) &&
@@ -139,7 +137,8 @@ static void leave_marked(struct conference_bridge_user *cbu)
                        case 0:
                                conf_change_state(cbu, CONF_STATE_SINGLE_MARKED);
                                break;
-                       case 1: break; /* Stay in marked */
+                       case 1:
+                               break; /* Stay in marked */
                        }
                        break;
                }
@@ -149,7 +148,8 @@ static void leave_marked(struct conference_bridge_user *cbu)
                case 0:
                        conf_change_state(cbu, CONF_STATE_MULTI);
                        break;
-               default: break; /* Stay in marked */
+               default:
+                       break; /* Stay in marked */
                }
        }
 }