From 3bd76dd679a88c0c96e2f6979d18bc0096c68c79 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Wed, 19 Oct 2016 12:05:28 -0500 Subject: [PATCH] ARI: Add duplicate channel ID checking for channel creation. This is similar to what is done for origination, but for the 14 and up channel creation method. When attempting to create a channel, if a channel ID is specified and a channel already exists with that ID, then a 409 is returned. Change-Id: I77f9253278c6947939c418073b6b31065489187c --- res/ari/resource_channels.c | 7 ++++++- res/res_ari_channels.c | 1 + rest-api/api-docs/channels.json | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index b00b2378d6..afb4627a07 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -1828,7 +1828,12 @@ void ast_ari_channels_create(struct ast_variable *headers, ao2_cleanup(request_cap); if (!chan_data->chan) { - ast_ari_response_alloc_failed(response); + if (ast_channel_errno() == AST_CHANNEL_ERROR_ID_EXISTS) { + ast_ari_response_error(response, 409, "Conflict", + "Channel with given unique ID already exists"); + } else { + ast_ari_response_alloc_failed(response); + } ast_channel_cleanup(originator); chan_data_destroy(chan_data); return; diff --git a/res/res_ari_channels.c b/res/res_ari_channels.c index b7c088c4d1..9e8eeb4e90 100644 --- a/res/res_ari_channels.c +++ b/res/res_ari_channels.c @@ -386,6 +386,7 @@ static void ast_ari_channels_create_cb( break; case 500: /* Internal Server Error */ case 501: /* Not Implemented */ + case 409: /* Channel with given unique ID already exists. */ is_valid = 1; break; default: diff --git a/rest-api/api-docs/channels.json b/rest-api/api-docs/channels.json index 60ace075d3..4ca8d6582d 100644 --- a/rest-api/api-docs/channels.json +++ b/rest-api/api-docs/channels.json @@ -217,6 +217,12 @@ "allowMultiple": false, "dataType": "string" } + ], + "errorResponses": [ + { + "code": 409, + "reason": "Channel with given unique ID already exists." + } ] } ]