summaryrefslogtreecommitdiff
path: root/apps/app_confbridge.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2016-01-25 16:05:09 -0600
committerRichard Mudgett <rmudgett@digium.com>2016-01-27 16:46:20 -0600
commit7932336a3d1e09ee88b8416ebc1abbdb8692660a (patch)
treee65ae43608067ef08036251cb00106ca6ac19f2b /apps/app_confbridge.c
parent894045e7cf00ad0f375e0cf879745fd3d0564cc4 (diff)
app_confbridge: Add ability to get the muted conference state.
* Added CONFBRIDGE_INFO(muted,) for querying the muted conference state. * Added Muted header to AMI ConfbridgeListRooms action response list events to indicate the muted conference state. * Added Muted column to CLI "confbridge list" output to indicate the muted conference state and made the locked column a yes/no value instead of a locked/unlocked value. ASTERISK-20987 Reported by: hristo Change-Id: I4076bd8ea1c23a3afd4f5833e9291b49a0c448b1
Diffstat (limited to 'apps/app_confbridge.c')
-rw-r--r--apps/app_confbridge.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c
index 8ded51026..18e192ca2 100644
--- a/apps/app_confbridge.c
+++ b/apps/app_confbridge.c
@@ -194,6 +194,9 @@ ASTERISK_REGISTER_FILE()
<enum name="marked">
<para>Get the number of marked users in the conference.</para>
</enum>
+ <enum name="muted">
+ <para>Determine if the conference is muted. (0 or 1)</para>
+ </enum>
<enum name="parties">
<para>Get the number of users in the conference.</para>
</enum>
@@ -2486,11 +2489,16 @@ static char *handle_cli_confbridge_list(struct ast_cli_entry *e, int cmd, struct
if (a->argc == 2) {
struct ao2_iterator iter;
- ast_cli(a->fd, "Conference Bridge Name Users Marked Locked?\n");
- ast_cli(a->fd, "================================ ====== ====== ========\n");
+ ast_cli(a->fd, "Conference Bridge Name Users Marked Locked Muted\n");
+ ast_cli(a->fd, "================================ ====== ====== ====== =====\n");
iter = ao2_iterator_init(conference_bridges, 0);
while ((conference = ao2_iterator_next(&iter))) {
- ast_cli(a->fd, "%-32s %6u %6u %s\n", conference->name, conference->activeusers + conference->waitingusers, conference->markedusers, (conference->locked ? "locked" : "unlocked"));
+ ast_cli(a->fd, "%-32s %6u %6u %-6s %s\n",
+ conference->name,
+ conference->activeusers + conference->waitingusers,
+ conference->markedusers,
+ AST_CLI_YESNO(conference->locked),
+ AST_CLI_YESNO(conference->muted));
ao2_ref(conference, -1);
}
ao2_iterator_destroy(&iter);
@@ -2980,12 +2988,14 @@ static int action_confbridgelistrooms(struct mansession *s, const struct message
"Parties: %u\r\n"
"Marked: %u\r\n"
"Locked: %s\r\n"
+ "Muted: %s\r\n"
"\r\n",
id_text,
conference->name,
conference->activeusers + conference->waitingusers,
conference->markedusers,
- conference->locked ? "Yes" : "No");
+ AST_YESNO(conference->locked),
+ AST_YESNO(conference->muted));
ao2_unlock(conference);
ao2_ref(conference, -1);
@@ -3256,30 +3266,31 @@ static int func_confbridge_info(struct ast_channel *chan, const char *cmd, char
/* get the correct count for the type requested */
ao2_lock(conference);
- if (!strncasecmp(args.type, "parties", 7)) {
+ if (!strcasecmp(args.type, "parties")) {
AST_LIST_TRAVERSE(&conference->active_list, user, list) {
count++;
}
AST_LIST_TRAVERSE(&conference->waiting_list, user, list) {
count++;
}
- } else if (!strncasecmp(args.type, "admins", 6)) {
+ } else if (!strcasecmp(args.type, "admins")) {
AST_LIST_TRAVERSE(&conference->active_list, user, list) {
if (ast_test_flag(&user->u_profile, USER_OPT_ADMIN)) {
count++;
}
}
- } else if (!strncasecmp(args.type, "marked", 6)) {
+ } else if (!strcasecmp(args.type, "marked")) {
AST_LIST_TRAVERSE(&conference->active_list, user, list) {
if (ast_test_flag(&user->u_profile, USER_OPT_MARKEDUSER)) {
count++;
}
}
- } else if (!strncasecmp(args.type, "locked", 6)) {
+ } else if (!strcasecmp(args.type, "locked")) {
count = conference->locked;
+ } else if (!strcasecmp(args.type, "muted")) {
+ count = conference->muted;
} else {
- ast_log(LOG_ERROR, "Invalid keyword '%s' passed to CONFBRIDGE_INFO. Should be one of: "
- "parties, admins, marked, or locked.\n", args.type);
+ ast_log(LOG_ERROR, "Invalid keyword '%s' passed to CONFBRIDGE_INFO.\n", args.type);
}
snprintf(buf, len, "%d", count);
ao2_unlock(conference);