From 79d6d222d63602ecde3fe6d6ae7983b0e1b60707 Mon Sep 17 00:00:00 2001 From: sungtae kim <sungtae.kim@avoxi.com> Date: Tue, 31 Aug 2021 16:50:58 +0900 Subject: [PATCH] resource_channels.c: Fix wrong external media parameter parse Fixed ARI external media handler to accept body parameters. ASTERISK-29622 Change-Id: I49509c48a6cbc0fb4165bfa4f834b5e8b9ace20d --- res/ari/resource_channels.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index a3d0f31eb9..e792a2a8d1 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -2188,6 +2188,18 @@ void ast_ari_channels_external_media(struct ast_variable *headers, ast_assert(response != NULL); + /* Parse any query parameters out of the body parameter */ + if (args->variables) { + struct ast_json *json_variables; + + ast_ari_channels_external_media_parse_body(args->variables, args); + json_variables = ast_json_object_get(args->variables, "variables"); + if (json_variables + && json_to_ast_variables(response, json_variables, &variables)) { + return; + } + } + if (ast_strlen_zero(args->app)) { ast_ari_response_error(response, 400, "Bad Request", "app cannot be empty"); return; @@ -2222,17 +2234,6 @@ void ast_ari_channels_external_media(struct ast_variable *headers, args->direction = "both"; } - if (args->variables) { - struct ast_json *json_variables; - - ast_ari_channels_external_media_parse_body(args->variables, args); - json_variables = ast_json_object_get(args->variables, "variables"); - if (json_variables - && json_to_ast_variables(response, json_variables, &variables)) { - return; - } - } - if (strcasecmp(args->encapsulation, "rtp") == 0 && strcasecmp(args->transport, "udp") == 0) { external_media_rtp_udp(args, variables, response); } else if (strcasecmp(args->encapsulation, "audiosocket") == 0 && strcasecmp(args->transport, "tcp") == 0) { -- GitLab