summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorMatthew Jordan <mjordan@digium.com>2013-07-16 22:33:27 +0000
committerMatthew Jordan <mjordan@digium.com>2013-07-16 22:33:27 +0000
commit19d8f8c8e4be5c14427e60771202f7bb61b4b91e (patch)
treec3db4f07aa3b4468ea3a605b36d87cb57cb9fbcd /apps
parent16233478175bbe0515c33215d3585d521fd6ea55 (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.c11
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)