res_parking: Fail gracefully if parking lot is full.
Currently, if a parking lot is full, bridge setup returns -1, causing dialplan execution to terminate without TryExec. However, such failures should be handled more gracefully, the same way they are on other paths, as indicated by the module's author, here: http://lists.digium.com/pipermail/asterisk-dev/2018-December/077144.html Now, callers will hear the parking failure announcement, and dialplan will continue, which is consistent with existing failure modes. Resolves: #624
This commit is contained in:
parent
d2b6248196
commit
786f45d94e
|
@ -567,7 +567,7 @@ static int park_app_exec(struct ast_channel *chan, const char *data)
|
|||
RAII_VAR(struct ast_bridge *, parking_bridge, NULL, ao2_cleanup);
|
||||
|
||||
struct ast_bridge_features chan_features;
|
||||
int res;
|
||||
int res = 0;
|
||||
int silence_announcements = 0;
|
||||
int blind_transfer;
|
||||
|
||||
|
@ -591,15 +591,16 @@ static int park_app_exec(struct ast_channel *chan, const char *data)
|
|||
|
||||
/* Initialize bridge features for the channel. */
|
||||
res = ast_bridge_features_init(&chan_features);
|
||||
if (res) {
|
||||
/* Now for the fun part... park it! */
|
||||
if (res || ast_bridge_join(parking_bridge, chan, NULL, &chan_features, NULL, 0)) {
|
||||
if (!silence_announcements && !blind_transfer) {
|
||||
ast_stream_and_wait(chan, "pbx-parkingfailed", "");
|
||||
}
|
||||
ast_bridge_features_cleanup(&chan_features);
|
||||
publish_parked_call_failure(chan);
|
||||
return -1;
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Now for the fun part... park it! */
|
||||
ast_bridge_join(parking_bridge, chan, NULL, &chan_features, NULL, 0);
|
||||
|
||||
/*
|
||||
* If the bridge was broken for a hangup that isn't real, then
|
||||
* don't run the h extension, because the channel isn't really
|
||||
|
|
Loading…
Reference in New Issue