diff options
Diffstat (limited to 'res/ari/resource_bridges.c')
-rw-r--r-- | res/ari/resource_bridges.c | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/res/ari/resource_bridges.c b/res/ari/resource_bridges.c index 57c1c2738..cec443dba 100644 --- a/res/ari/resource_bridges.c +++ b/res/ari/resource_bridges.c @@ -332,7 +332,8 @@ static struct ast_channel *prepare_bridge_media_channel(const char *type) * \brief Performs common setup for a bridge playback operation * with both new controls and when existing controls are found. * - * \param args_media media string split from arguments + * \param args_media medias to play + * \param args_media_count number of media items in \c media * \param args_lang language string split from arguments * \param args_offset_ms milliseconds offset split from arguments * \param args_playback_id string to use for playback split from @@ -346,7 +347,8 @@ static struct ast_channel *prepare_bridge_media_channel(const char *type) * \retval -1 operation failed * \retval operation was successful */ -static int ari_bridges_play_helper(const char *args_media, +static int ari_bridges_play_helper(const char **args_media, + size_t args_media_count, const char *args_lang, int args_offset_ms, int args_skipms, @@ -371,8 +373,8 @@ static int ari_bridges_play_helper(const char *args_media, language = S_OR(args_lang, snapshot->language); - playback = stasis_app_control_play_uri(control, args_media, language, - bridge->uniqueid, STASIS_PLAYBACK_TARGET_BRIDGE, args_skipms, + playback = stasis_app_control_play_uri(control, args_media, args_media_count, + language, bridge->uniqueid, STASIS_PLAYBACK_TARGET_BRIDGE, args_skipms, args_offset_ms, args_playback_id); if (!playback) { @@ -396,7 +398,8 @@ static int ari_bridges_play_helper(const char *args_media, return 0; } -static void ari_bridges_play_new(const char *args_media, +static void ari_bridges_play_new(const char **args_media, + size_t args_media_count, const char *args_lang, int args_offset_ms, int args_skipms, @@ -449,9 +452,9 @@ static void ari_bridges_play_new(const char *args_media, } ao2_lock(control); - if (ari_bridges_play_helper(args_media, args_lang, args_offset_ms, - args_skipms, args_playback_id, response, bridge, control, - &json, &playback_url)) { + if (ari_bridges_play_helper(args_media, args_media_count, args_lang, + args_offset_ms, args_skipms, args_playback_id, response, bridge, + control, &json, &playback_url)) { ao2_unlock(control); return; } @@ -497,7 +500,8 @@ enum play_found_result { * \brief Performs common setup for a bridge playback operation * with both new controls and when existing controls are found. * - * \param args_media media string split from arguments + * \param args_media medias to play + * \param args_media_count number of media items in \c media * \param args_lang language string split from arguments * \param args_offset_ms milliseconds offset split from arguments * \param args_playback_id string to use for playback split from @@ -511,7 +515,8 @@ enum play_found_result { * \retval PLAY_FOUND_CHANNEL_UNAVAILABLE The operation failed because * the channel requested to playback with is breaking down. */ -static enum play_found_result ari_bridges_play_found(const char *args_media, +static enum play_found_result ari_bridges_play_found(const char **args_media, + size_t args_media_count, const char *args_lang, int args_offset_ms, int args_skipms, @@ -537,9 +542,9 @@ static enum play_found_result ari_bridges_play_found(const char *args_media, return PLAY_FOUND_CHANNEL_UNAVAILABLE; } - if (ari_bridges_play_helper(args_media, args_lang, args_offset_ms, - args_skipms, args_playback_id, response, bridge, control, - &json, &playback_url)) { + if (ari_bridges_play_helper(args_media, args_media_count, + args_lang, args_offset_ms, args_skipms, args_playback_id, + response, bridge, control, &json, &playback_url)) { ao2_unlock(control); return PLAY_FOUND_FAILURE; } @@ -551,7 +556,8 @@ static enum play_found_result ari_bridges_play_found(const char *args_media, static void ari_bridges_handle_play( const char *args_bridge_id, - const char *args_media, + const char **args_media, + size_t args_media_count, const char *args_lang, int args_offset_ms, int args_skipms, @@ -574,15 +580,15 @@ static void ari_bridges_handle_play( * that will work or else there isn't a channel for this bridge anymore, * in which case we'll revert to ari_bridges_play_new. */ - if (ari_bridges_play_found(args_media, args_lang, args_offset_ms, - args_skipms, args_playback_id, response,bridge, + if (ari_bridges_play_found(args_media, args_media_count, args_lang, + args_offset_ms, args_skipms, args_playback_id, response,bridge, play_channel) == PLAY_FOUND_CHANNEL_UNAVAILABLE) { continue; } return; } - ari_bridges_play_new(args_media, args_lang, args_offset_ms, + ari_bridges_play_new(args_media, args_media_count, args_lang, args_offset_ms, args_skipms, args_playback_id, response, bridge); } @@ -593,6 +599,7 @@ void ast_ari_bridges_play(struct ast_variable *headers, { ari_bridges_handle_play(args->bridge_id, args->media, + args->media_count, args->lang, args->offsetms, args->skipms, @@ -606,6 +613,7 @@ void ast_ari_bridges_play_with_id(struct ast_variable *headers, { ari_bridges_handle_play(args->bridge_id, args->media, + args->media_count, args->lang, args->offsetms, args->skipms, |