mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-21 04:46:29 +00:00
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
This commit is contained in:
@@ -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."
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
Reference in New Issue
Block a user