diff options
author | Matthew Jordan <mjordan@digium.com> | 2013-07-16 22:33:27 +0000 |
---|---|---|
committer | Matthew Jordan <mjordan@digium.com> | 2013-07-16 22:33:27 +0000 |
commit | 19d8f8c8e4be5c14427e60771202f7bb61b4b91e (patch) | |
tree | c3db4f07aa3b4468ea3a605b36d87cb57cb9fbcd /apps | |
parent | 16233478175bbe0515c33215d3585d521fd6ea55 (diff) |
Add 'kick all' capability to ConfBridge CLI command
This patch adds the ability to kick all users out of a conference from the
ConfBridge kick CLI command. It is invoked by passing 'all' as the channel
parameter to the CLI command, i.e., "confbridge kick <conf> all".
Note that this patch was modified slightly to conform to trunk.
(closes issue ASTERISK-21827)
Reported by: dorianlogan
patches:
kickall-patch_v2.diff uploaded by dorianlogan (License 6504)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@394531 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_confbridge.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c index 8919b7e24..8dd2686fd 100644 --- a/apps/app_confbridge.c +++ b/apps/app_confbridge.c @@ -2069,6 +2069,7 @@ int conf_handle_dtmf(struct ast_bridge_channel *bridge_channel, static int kick_conference_participant(struct confbridge_conference *conference, const char *channel) { + int res = -1; struct confbridge_user *user = NULL; SCOPED_AO2LOCK(bridge_lock, conference); @@ -2077,6 +2078,10 @@ static int kick_conference_participant(struct confbridge_conference *conference, user->kicked = 1; ast_bridge_remove(conference->bridge, user->chan); return 0; + } else if (!strcasecmp("all", channel)) { + user->kicked = 1; + ast_bridge_remove(conference->bridge, user->chan); + res = 0; } } AST_LIST_TRAVERSE(&conference->waiting_list, user, list) { @@ -2084,10 +2089,14 @@ static int kick_conference_participant(struct confbridge_conference *conference, user->kicked = 1; ast_bridge_remove(conference->bridge, user->chan); return 0; + } else if (!strcasecmp("all", channel)) { + user->kicked = 1; + ast_bridge_remove(conference->bridge, user->chan); + res = 0; } } - return -1; + return res; } static char *complete_confbridge_name(const char *line, const char *word, int pos, int state) |