summaryrefslogtreecommitdiff
path: root/main/manager_channels.c
diff options
context:
space:
mode:
authorKinsey Moore <kmoore@digium.com>2013-07-19 19:23:39 +0000
committerKinsey Moore <kmoore@digium.com>2013-07-19 19:23:39 +0000
commit5a8f32703c445f7d09b5e029e85d76692626a67f (patch)
treeb8ad7eea354b19249f7ccf593f65584e5c1b5625 /main/manager_channels.c
parent0b83761f9a99d18105ad6cb13dd0282a85641f03 (diff)
Filter channels used as internal mechanisms
This adds new flags to the channel tech properties that flag it as different types of implementation detail used exclusively to provide a feature. Examples of channels that would have these flags include the announcement and recording channels used by confbridge which are the only two marked as such by this patch. Review: https://reviewboard.asterisk.org/r/2633/ (closes issue ASTERISK-21873) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@394808 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/manager_channels.c')
-rw-r--r--main/manager_channels.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/main/manager_channels.c b/main/manager_channels.c
index bc9e83d6e..6e8621973 100644
--- a/main/manager_channels.c
+++ b/main/manager_channels.c
@@ -533,6 +533,11 @@ struct ast_str *ast_manager_build_channel_state_string_prefix(
return NULL;
}
+ if (snapshot->tech_properties & (AST_CHAN_TP_ANNOUNCER | AST_CHAN_TP_RECORDER)) {
+ ast_free(out);
+ return NULL;
+ }
+
res = ast_str_set(&out, 0,
"%sChannel: %s\r\n"
"%sChannelState: %d\r\n"
@@ -560,6 +565,7 @@ struct ast_str *ast_manager_build_channel_state_string_prefix(
prefix, snapshot->uniqueid);
if (!res) {
+ ast_free(out);
return NULL;
}
@@ -1209,6 +1215,9 @@ static void channel_hold_cb(void *data, struct stasis_subscription *sub,
}
channel_event_string = ast_manager_build_channel_state_string(obj->snapshot);
+ if (!channel_event_string) {
+ return;
+ }
if (obj->blob) {
musicclass = ast_json_string_get(ast_json_object_get(obj->blob, "musicclass"));
@@ -1232,6 +1241,9 @@ static void channel_unhold_cb(void *data, struct stasis_subscription *sub,
RAII_VAR(struct ast_str *, channel_event_string, NULL, ast_free);
channel_event_string = ast_manager_build_channel_state_string(obj->snapshot);
+ if (!channel_event_string) {
+ return;
+ }
manager_event(EVENT_FLAG_CALL, "Unhold",
"%s",