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
changes/59/4159/4
Mark Michelson 9 years ago
parent e459b8dadf
commit 3bd76dd679

@ -1828,7 +1828,12 @@ void ast_ari_channels_create(struct ast_variable *headers,
ao2_cleanup(request_cap); ao2_cleanup(request_cap);
if (!chan_data->chan) { if (!chan_data->chan) {
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_ari_response_alloc_failed(response);
}
ast_channel_cleanup(originator); ast_channel_cleanup(originator);
chan_data_destroy(chan_data); chan_data_destroy(chan_data);
return; return;

@ -386,6 +386,7 @@ static void ast_ari_channels_create_cb(
break; break;
case 500: /* Internal Server Error */ case 500: /* Internal Server Error */
case 501: /* Not Implemented */ case 501: /* Not Implemented */
case 409: /* Channel with given unique ID already exists. */
is_valid = 1; is_valid = 1;
break; break;
default: default:

@ -217,6 +217,12 @@
"allowMultiple": false, "allowMultiple": false,
"dataType": "string" "dataType": "string"
} }
],
"errorResponses": [
{
"code": 409,
"reason": "Channel with given unique ID already exists."
}
] ]
} }
] ]

Loading…
Cancel
Save