diff options
-rw-r--r-- | res/ari/resource_asterisk.c | 10 | ||||
-rw-r--r-- | res/ari/resource_channels.c | 19 | ||||
-rw-r--r-- | res/res_ari_asterisk.c | 2 | ||||
-rw-r--r-- | res/res_ari_channels.c | 2 | ||||
-rw-r--r-- | rest-api/api-docs/asterisk.json | 12 | ||||
-rw-r--r-- | rest-api/api-docs/channels.json | 8 |
6 files changed, 47 insertions, 6 deletions
diff --git a/res/ari/resource_asterisk.c b/res/ari/resource_asterisk.c index 6f2eb8027..268c07132 100644 --- a/res/ari/resource_asterisk.c +++ b/res/ari/resource_asterisk.c @@ -143,12 +143,20 @@ void ast_ari_get_asterisk_info(struct ast_variable *headers, void ast_ari_get_global_var(struct ast_variable *headers, struct ast_get_global_var_args *args, struct ast_ari_response *response) { RAII_VAR(struct ast_json *, json, NULL, ast_json_unref); - RAII_VAR(struct ast_str *, tmp, ast_str_create(32), ast_free); + RAII_VAR(struct ast_str *, tmp, NULL, ast_free); const char *value; ast_assert(response != NULL); + if (ast_strlen_zero(args->variable)) { + ast_ari_response_error( + response, 400, "Bad Request", + "Variable name is required"); + return; + } + + tmp = ast_str_create(32); if (!tmp) { ast_ari_response_alloc_failed(response); return; diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index dd323bac5..29ceb778f 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -648,8 +648,16 @@ void ast_ari_get_channel_var(struct ast_variable *headers, struct ast_get_channe ast_assert(response != NULL); + if (ast_strlen_zero(args->variable)) { + ast_ari_response_error( + response, 400, "Bad Request", + "Variable name is required"); + return; + } + control = find_control(response, args->channel_id); if (control == NULL) { + /* response filled in by find_control */ return; } @@ -669,11 +677,6 @@ void ast_ari_set_channel_var(struct ast_variable *headers, struct ast_set_channe ast_assert(response != NULL); - control = find_control(response, args->channel_id); - if (control == NULL) { - return; - } - if (ast_strlen_zero(args->variable)) { ast_ari_response_error( response, 400, "Bad Request", @@ -681,6 +684,12 @@ void ast_ari_set_channel_var(struct ast_variable *headers, struct ast_set_channe return; } + control = find_control(response, args->channel_id); + if (control == NULL) { + /* response filled in by find_control */ + return; + } + if (stasis_app_control_set_channel_var(control, args->variable, args->value)) { ast_ari_response_error( response, 400, "Bad Request", diff --git a/res/res_ari_asterisk.c b/res/res_ari_asterisk.c index dce634e8a..3f34c7ab6 100644 --- a/res/res_ari_asterisk.c +++ b/res/res_ari_asterisk.c @@ -175,6 +175,7 @@ static void ast_ari_get_global_var_cb( break; case 500: /* Internal Server Error */ case 501: /* Not Implemented */ + case 400: /* Missing variable parameter. */ is_valid = 1; break; default: @@ -234,6 +235,7 @@ static void ast_ari_set_global_var_cb( break; case 500: /* Internal Server Error */ case 501: /* Not Implemented */ + case 400: /* Missing variable parameter. */ is_valid = 1; break; default: diff --git a/res/res_ari_channels.c b/res/res_ari_channels.c index 8a6687bc2..063e766f1 100644 --- a/res/res_ari_channels.c +++ b/res/res_ari_channels.c @@ -1055,6 +1055,7 @@ static void ast_ari_get_channel_var_cb( break; case 500: /* Internal Server Error */ case 501: /* Not Implemented */ + case 400: /* Missing variable parameter. */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -1122,6 +1123,7 @@ static void ast_ari_set_channel_var_cb( break; case 500: /* Internal Server Error */ case 501: /* Not Implemented */ + case 400: /* Missing variable parameter. */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; diff --git a/rest-api/api-docs/asterisk.json b/rest-api/api-docs/asterisk.json index cbed1895c..723c6d820 100644 --- a/rest-api/api-docs/asterisk.json +++ b/rest-api/api-docs/asterisk.json @@ -55,6 +55,12 @@ "allowMultiple": false, "dataType": "string" } + ], + "errorResponses": [ + { + "code": 400, + "reason": "Missing variable parameter." + } ] }, { @@ -79,6 +85,12 @@ "allowMultiple": false, "dataType": "string" } + ], + "errorResponses": [ + { + "code": 400, + "reason": "Missing variable parameter." + } ] } ] diff --git a/rest-api/api-docs/channels.json b/rest-api/api-docs/channels.json index 41b6cc08c..0f3b8e20e 100644 --- a/rest-api/api-docs/channels.json +++ b/rest-api/api-docs/channels.json @@ -754,6 +754,10 @@ ], "errorResponses": [ { + "code": 400, + "reason": "Missing variable parameter." + }, + { "code": 404, "reason": "Channel not found" }, @@ -796,6 +800,10 @@ ], "errorResponses": [ { + "code": 400, + "reason": "Missing variable parameter." + }, + { "code": 404, "reason": "Channel not found" }, |