]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
resource_channels.c: Fix validation response for externalMedia with AudioSockets
authorSean Bright <sean@seanbright.com>
Sun, 1 Mar 2026 21:22:30 +0000 (21:22 +0000)
committerSean Bright <sean@seanbright.com>
Mon, 2 Mar 2026 18:26:48 +0000 (18:26 +0000)
The AudioSocket encapsulation for externalMedia requires a UUID to be
provided in the `data` parameter of the ARI call. If not provided, we
should return a 400 Bad Request instead of a 500 Internal Server
Error.

Pointed out by AVT in the community forum[1].

1: https://community.asterisk.org/t/externalmedia-audiosocket-on-asterisk-22/112149

res/ari/resource_channels.c

index 3acb0e072c4bfa60ac70ee8270e8f5db8794c99d..1077eebd493f9c6de85b1bc99700e2d460ff346a 100644 (file)
@@ -2162,11 +2162,6 @@ static int external_media_audiosocket_tcp(struct ast_ari_channels_external_media
        struct ast_channel *chan;
        struct varshead *vars;
 
-       if (ast_strlen_zero(args->data)) {
-               ast_ari_response_error(response, 400, "Bad Request", "data can not be empty");
-               return 1;
-       }
-
        if (ast_asprintf(&endpoint, "AudioSocket/%s/%s",
                args->external_host, args->data) == -1) {
                return 1;
@@ -2381,7 +2376,9 @@ void ast_ari_channels_external_media(struct ast_variable *headers,
                                "An internal error prevented this request from being handled");
                }
        } else if (strcasecmp(args->encapsulation, "audiosocket") == 0 && strcasecmp(args->transport, "tcp") == 0) {
-               if (external_media_audiosocket_tcp(args, variables, response)) {
+               if (ast_strlen_zero(args->data)) {
+                       ast_ari_response_error(response, 400, "Bad Request", "data can not be empty");
+               } else if (external_media_audiosocket_tcp(args, variables, response)) {
                        ast_ari_response_error(
                                response, 500, "Internal Server Error",
                                "An internal error prevented this request from being handled");