]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
resource_channels.c: Fix wrong external media parameter parse
authorsungtae kim <sungtae.kim@avoxi.com>
Tue, 31 Aug 2021 07:50:58 +0000 (16:50 +0900)
committerKevin Harwell <kharwell@digium.com>
Thu, 2 Sep 2021 20:18:31 +0000 (15:18 -0500)
Fixed ARI external media handler to accept body parameters.

ASTERISK-29622

Change-Id: I49509c48a6cbc0fb4165bfa4f834b5e8b9ace20d

res/ari/resource_channels.c

index a3d0f31eb9147695f2f4acbb9d648aac2b2e71f9..e792a2a8d1ed23343eefb9db1e5b96a4a0d5f6eb 100644 (file)
@@ -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) {