Commit b574b3073c for asterisk.org
commit b574b3073c46b0b85c619d1dd6472a73c7d10d66
Author: Sean Bright <sean@seanbright.com>
Date: Sun Mar 1 21:22:30 2026 +0000
resource_channels.c: Fix validation response for externalMedia with AudioSockets
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
diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c
index 3acb0e072c..1077eebd49 100644
--- a/res/ari/resource_channels.c
+++ b/res/ari/resource_channels.c
@@ -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");