mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
ARI: channel/bridge recording errors when invalid format specified
Asterisk will now issue 422 if recording is requested against channels or bridges with an unknown format (closes issue ASTERISK-22626) Reported by: Joshua Colp Review: https://reviewboard.asterisk.org/r/2939/ ........ Merged revisions 402001 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@402002 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -439,6 +439,27 @@ void ast_ari_record_bridge(struct ast_variable *headers, struct ast_record_bridg
|
|||||||
stasis_app_recording_if_exists_parse(args->if_exists);
|
stasis_app_recording_if_exists_parse(args->if_exists);
|
||||||
options->beep = args->beep;
|
options->beep = args->beep;
|
||||||
|
|
||||||
|
if (options->terminate_on == STASIS_APP_RECORDING_TERMINATE_INVALID) {
|
||||||
|
ast_ari_response_error(
|
||||||
|
response, 400, "Bad Request",
|
||||||
|
"terminateOn invalid");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options->if_exists == -1) {
|
||||||
|
ast_ari_response_error(
|
||||||
|
response, 400, "Bad Request",
|
||||||
|
"ifExists invalid");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ast_get_format_for_file_ext(options->format)) {
|
||||||
|
ast_ari_response_error(
|
||||||
|
response, 422, "Unprocessable Entity",
|
||||||
|
"specified format is unknown on this system");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
recording = stasis_app_control_record(control, options);
|
recording = stasis_app_control_record(control, options);
|
||||||
if (recording == NULL) {
|
if (recording == NULL) {
|
||||||
switch(errno) {
|
switch(errno) {
|
||||||
|
@@ -407,6 +407,13 @@ void ast_ari_record_channel(struct ast_variable *headers,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ast_get_format_for_file_ext(options->format)) {
|
||||||
|
ast_ari_response_error(
|
||||||
|
response, 422, "Unprocessable Entity",
|
||||||
|
"specified format is unknown on this system");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
recording = stasis_app_control_record(control, options);
|
recording = stasis_app_control_record(control, options);
|
||||||
if (recording == NULL) {
|
if (recording == NULL) {
|
||||||
switch(errno) {
|
switch(errno) {
|
||||||
|
@@ -745,6 +745,7 @@ static void ast_ari_record_bridge_cb(
|
|||||||
case 400: /* Invalid parameters */
|
case 400: /* Invalid parameters */
|
||||||
case 404: /* Bridge not found */
|
case 404: /* Bridge not found */
|
||||||
case 409: /* Bridge is not in a Stasis application; A recording with the same name already exists on the system and can not be overwritten because it is in progress or ifExists=fail */
|
case 409: /* Bridge is not in a Stasis application; A recording with the same name already exists on the system and can not be overwritten because it is in progress or ifExists=fail */
|
||||||
|
case 422: /* The format specified is unknown on this system */
|
||||||
is_valid = 1;
|
is_valid = 1;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@@ -993,6 +993,7 @@ static void ast_ari_record_channel_cb(
|
|||||||
case 400: /* Invalid parameters */
|
case 400: /* Invalid parameters */
|
||||||
case 404: /* Channel not found */
|
case 404: /* Channel not found */
|
||||||
case 409: /* Channel is not in a Stasis application; the channel is currently bridged with other hcannels; A recording with the same name already exists on the system and can not be overwritten because it is in progress or ifExists=fail */
|
case 409: /* Channel is not in a Stasis application; the channel is currently bridged with other hcannels; A recording with the same name already exists on the system and can not be overwritten because it is in progress or ifExists=fail */
|
||||||
|
case 422: /* The format specified is unknown on this system */
|
||||||
is_valid = 1;
|
is_valid = 1;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@@ -466,6 +466,10 @@
|
|||||||
{
|
{
|
||||||
"code": 409,
|
"code": 409,
|
||||||
"reason": "Bridge is not in a Stasis application; A recording with the same name already exists on the system and can not be overwritten because it is in progress or ifExists=fail"
|
"reason": "Bridge is not in a Stasis application; A recording with the same name already exists on the system and can not be overwritten because it is in progress or ifExists=fail"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": 422,
|
||||||
|
"reason": "The format specified is unknown on this system"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -721,6 +721,10 @@
|
|||||||
{
|
{
|
||||||
"code": 409,
|
"code": 409,
|
||||||
"reason": "Channel is not in a Stasis application; the channel is currently bridged with other hcannels; A recording with the same name already exists on the system and can not be overwritten because it is in progress or ifExists=fail"
|
"reason": "Channel is not in a Stasis application; the channel is currently bridged with other hcannels; A recording with the same name already exists on the system and can not be overwritten because it is in progress or ifExists=fail"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": 422,
|
||||||
|
"reason": "The format specified is unknown on this system"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user