summaryrefslogtreecommitdiff
path: root/res/ari/resource_bridges.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/ari/resource_bridges.c')
-rw-r--r--res/ari/resource_bridges.c42
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,