diff options
Diffstat (limited to 'main/stasis_channels.c')
-rw-r--r-- | main/stasis_channels.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/main/stasis_channels.c b/main/stasis_channels.c index a1e7ad209..d7fbc98ab 100644 --- a/main/stasis_channels.c +++ b/main/stasis_channels.c @@ -304,6 +304,10 @@ void ast_channel_publish_dial_forward(struct ast_channel *caller, struct ast_cha RAII_VAR(struct ast_channel_snapshot *, peer_snapshot, NULL, ao2_cleanup); RAII_VAR(struct ast_channel_snapshot *, forwarded_snapshot, NULL, ao2_cleanup); + if (!ast_channel_dial_type()) { + return; + } + ast_assert(peer != NULL); blob = ast_json_pack("{s: s, s: s, s: s}", "dialstatus", S_OR(dialstatus, ""), @@ -405,9 +409,15 @@ struct stasis_message *ast_channel_blob_create_from_cache(const char *channel_id struct ast_json *blob) { RAII_VAR(struct ast_channel_snapshot *, snapshot, - ast_channel_snapshot_get_latest(channel_id), + NULL, ao2_cleanup); + if (!type) { + return NULL; + } + + snapshot = ast_channel_snapshot_get_latest(channel_id); + return create_channel_blob_message(snapshot, type, blob); } @@ -416,6 +426,10 @@ struct stasis_message *ast_channel_blob_create(struct ast_channel *chan, { RAII_VAR(struct ast_channel_snapshot *, snapshot, NULL, ao2_cleanup); + if (!type) { + return NULL; + } + if (chan) { snapshot = ast_channel_snapshot_create(chan); } @@ -644,6 +658,10 @@ void ast_channel_publish_snapshot(struct ast_channel *chan) RAII_VAR(struct ast_channel_snapshot *, snapshot, NULL, ao2_cleanup); RAII_VAR(struct stasis_message *, message, NULL, ao2_cleanup); + if (!ast_channel_snapshot_type()) { + return; + } + if (ast_test_flag(ast_channel_flags(chan), AST_FLAG_SNAPSHOT_STAGE)) { return; } @@ -793,6 +811,10 @@ void ast_publish_channel_state(struct ast_channel *chan) RAII_VAR(struct ast_channel_snapshot *, snapshot, NULL, ao2_cleanup); RAII_VAR(struct stasis_message *, message, NULL, ao2_cleanup); + if (!ast_channel_snapshot_type()) { + return; + } + ast_assert(chan != NULL); if (!chan) { return; |