ARI: Fix crash when POST /playback/{id}/control does not have an operation parameter.

(closes issue ASTERISK-22680)
Reported by: John Bigelow


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@401107 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Richard Mudgett
2013-10-16 21:20:21 +00:00
parent 0fc343958a
commit ec516d1896

View File

@@ -68,7 +68,6 @@ void ast_ari_stop_playback(struct ast_variable *headers,
} }
res = stasis_app_playback_operation(playback, STASIS_PLAYBACK_STOP); res = stasis_app_playback_operation(playback, STASIS_PLAYBACK_STOP);
switch (res) { switch (res) {
case STASIS_PLAYBACK_OPER_OK: case STASIS_PLAYBACK_OPER_OK:
ast_ari_response_no_content(response); ast_ari_response_no_content(response);
@@ -93,6 +92,11 @@ void ast_ari_control_playback(struct ast_variable *headers,
enum stasis_app_playback_media_operation oper; enum stasis_app_playback_media_operation oper;
enum stasis_playback_oper_results res; enum stasis_playback_oper_results res;
if (!args->operation) {
ast_ari_response_error(response, 400,
"Bad Request", "Missing operation");
return;
}
if (strcmp(args->operation, "unpause") == 0) { if (strcmp(args->operation, "unpause") == 0) {
oper = STASIS_PLAYBACK_UNPAUSE; oper = STASIS_PLAYBACK_UNPAUSE;
} else if (strcmp(args->operation, "pause") == 0) { } else if (strcmp(args->operation, "pause") == 0) {
@@ -108,7 +112,6 @@ void ast_ari_control_playback(struct ast_variable *headers,
"Bad Request", "Invalid operation %s", "Bad Request", "Invalid operation %s",
args->operation); args->operation);
return; return;
} }
playback = stasis_app_playback_find_by_id(args->playback_id); playback = stasis_app_playback_find_by_id(args->playback_id);
@@ -119,7 +122,6 @@ void ast_ari_control_playback(struct ast_variable *headers,
} }
res = stasis_app_playback_operation(playback, oper); res = stasis_app_playback_operation(playback, oper);
switch (res) { switch (res) {
case STASIS_PLAYBACK_OPER_OK: case STASIS_PLAYBACK_OPER_OK:
ast_ari_response_no_content(response); ast_ari_response_no_content(response);