diff options
author | Kinsey Moore <kmoore@digium.com> | 2013-07-19 19:23:39 +0000 |
---|---|---|
committer | Kinsey Moore <kmoore@digium.com> | 2013-07-19 19:23:39 +0000 |
commit | 5a8f32703c445f7d09b5e029e85d76692626a67f (patch) | |
tree | b8ad7eea354b19249f7ccf593f65584e5c1b5625 /main/manager_channels.c | |
parent | 0b83761f9a99d18105ad6cb13dd0282a85641f03 (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.c | 12 |
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", |