summaryrefslogtreecommitdiff
path: root/main/manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/manager.c')
-rw-r--r--main/manager.c58
1 files changed, 33 insertions, 25 deletions
diff --git a/main/manager.c b/main/manager.c
index d599a4bde..4410cd7c5 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -2921,7 +2921,26 @@ static void astman_start_ack(struct mansession *s, const struct message *m)
void astman_send_listack(struct mansession *s, const struct message *m, char *msg, char *listflag)
{
- astman_send_response_full(s, m, "Success", msg, listflag);
+ astman_send_response_full(s, m, "Success", msg, "Start");
+}
+
+void astman_send_list_complete_start(struct mansession *s, const struct message *m, const char *event_name, int count)
+{
+ const char *id = astman_get_header(m, "ActionID");
+
+ astman_append(s, "Event: %s\r\n", event_name);
+ if (!ast_strlen_zero(id)) {
+ astman_append(s, "ActionID: %s\r\n", id);
+ }
+ astman_append(s,
+ "EventList: Complete\r\n"
+ "ListItems: %d\r\n",
+ count);
+}
+
+void astman_send_list_complete_end(struct mansession *s)
+{
+ astman_append(s, "\r\n");
}
/*! \brief Lock the 'mansession' structure. */
@@ -3347,7 +3366,7 @@ static int action_getconfig(struct mansession *s, const struct message *m)
}
if (!ast_strlen_zero(category) && catcount == 0) { /* TODO: actually, a config with no categories doesn't even get loaded */
- astman_append(s, "No categories found\r\n");
+ astman_append(s, "Error: No categories found\r\n");
}
ast_config_destroy(cfg);
@@ -3385,7 +3404,7 @@ static int action_listcategories(struct mansession *s, const struct message *m)
}
if (catcount == 0) { /* TODO: actually, a config with no categories doesn't even get loaded */
- astman_append(s, "Error: no categories found\r\n");
+ astman_append(s, "Error: No categories found\r\n");
}
ast_config_destroy(cfg);
@@ -4214,12 +4233,8 @@ static int action_hangup(struct mansession *s, const struct message *m)
regfree(&regexbuf);
ast_free(regex_string);
- astman_append(s,
- "Event: ChannelsHungupListComplete\r\n"
- "EventList: Complete\r\n"
- "ListItems: %d\r\n"
- "%s"
- "\r\n", channels_matched, idText);
+ astman_send_list_complete_start(s, m, "ChannelsHungupListComplete", channels_matched);
+ astman_send_list_complete_end(s);
return 0;
}
@@ -4309,7 +4324,7 @@ static int action_getvar(struct mansession *s, const struct message *m)
return 0;
}
-static void generate_status(struct mansession *s, struct ast_channel *chan, char **vars, int varc, int all_variables, char *id_text)
+static void generate_status(struct mansession *s, struct ast_channel *chan, char **vars, int varc, int all_variables, char *id_text, int *count)
{
struct timeval now;
long elapsed_seconds;
@@ -4339,7 +4354,6 @@ static void generate_status(struct mansession *s, struct ast_channel *chan, char
} else {
variable_str = ast_str_create(1024);
}
-
if (!variable_str) {
return;
}
@@ -4421,6 +4435,7 @@ static void generate_status(struct mansession *s, struct ast_channel *chan, char
(long)elapsed_seconds,
ast_str_buffer(variable_str),
id_text);
+ ++*count;
ao2_cleanup(bridge);
}
@@ -4466,7 +4481,7 @@ static int action_status(struct mansession *s, const struct message *m)
}
}
- astman_send_ack(s, m, "Channel status will follow");
+ astman_send_listack(s, m, "Channel status will follow", "start");
if (!ast_strlen_zero(id)) {
snprintf(id_text, sizeof(id_text), "ActionID: %s\r\n", id);
@@ -4482,8 +4497,7 @@ static int action_status(struct mansession *s, const struct message *m)
for (; chan; all ? chan = ast_channel_iterator_next(it_chans) : 0) {
ast_channel_lock(chan);
- generate_status(s, chan, vars.name, vars.argc, all_variables, id_text);
- channels++;
+ generate_status(s, chan, vars.name, vars.argc, all_variables, id_text, &channels);
ast_channel_unlock(chan);
chan = ast_channel_unref(chan);
@@ -4493,11 +4507,9 @@ static int action_status(struct mansession *s, const struct message *m)
ast_channel_iterator_destroy(it_chans);
}
- astman_append(s,
- "Event: StatusComplete\r\n"
- "%s"
- "Items: %d\r\n"
- "\r\n", id_text, channels);
+ astman_send_list_complete_start(s, m, "StatusComplete", channels);
+ astman_append(s, "Items: %d\r\n", channels);
+ astman_send_list_complete_end(s);
return 0;
}
@@ -5940,12 +5952,8 @@ static int action_coreshowchannels(struct mansession *s, const struct message *m
}
ao2_iterator_destroy(&it_chans);
- astman_append(s,
- "Event: CoreShowChannelsComplete\r\n"
- "EventList: Complete\r\n"
- "ListItems: %d\r\n"
- "%s"
- "\r\n", numchans, idText);
+ astman_send_list_complete_start(s, m, "CoreShowChannelsComplete", numchans);
+ astman_send_list_complete_end(s);
return 0;
}