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