diff options
-rw-r--r-- | include/asterisk/stasis_app.h | 2 | ||||
-rw-r--r-- | res/ari/resource_channels.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/include/asterisk/stasis_app.h b/include/asterisk/stasis_app.h index b11670ac5..749f8ed69 100644 --- a/include/asterisk/stasis_app.h +++ b/include/asterisk/stasis_app.h @@ -140,6 +140,8 @@ enum stasis_app_subscribe_res { * after adding the subscription. * * \return \ref stasis_app_subscribe_res return code. + * + * \note Do not hold any channel locks if subscribing to a channel. */ enum stasis_app_subscribe_res stasis_app_subscribe(const char *app_name, const char **event_source_uris, int event_sources_count, diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index a00b29532..10d190534 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -642,6 +642,9 @@ void ast_ari_originate(struct ast_variable *headers, return; } + snapshot = ast_channel_snapshot_create(chan); + ast_channel_unlock(chan); + if (!ast_strlen_zero(args->app)) { /* channel: + channel ID + null terminator */ char uri[9 + strlen(ast_channel_uniqueid(chan))]; @@ -651,10 +654,7 @@ void ast_ari_originate(struct ast_variable *headers, stasis_app_subscribe(args->app, uris, 1, NULL); } - snapshot = ast_channel_snapshot_create(chan); ast_ari_response_ok(response, ast_channel_snapshot_to_json(snapshot)); - - ast_channel_unlock(chan); ast_channel_unref(chan); } |