diff options
Diffstat (limited to 'res/parking/parking_bridge_features.c')
-rw-r--r-- | res/parking/parking_bridge_features.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/res/parking/parking_bridge_features.c b/res/parking/parking_bridge_features.c index ab0ea6f44..b4884dbfb 100644 --- a/res/parking/parking_bridge_features.c +++ b/res/parking/parking_bridge_features.c @@ -236,6 +236,7 @@ static struct ast_channel *park_local_transfer(struct ast_channel *parker, const /* Before we actually dial out let's inherit appropriate information. */ ast_channel_lock_both(parker, parkee); ast_channel_req_accountcodes(parkee, parker, AST_CHANNEL_REQUESTOR_REPLACEMENT); + ast_channel_parkinglot_set(parkee, ast_channel_parkinglot(parker)); ast_connected_line_copy_from_caller(ast_channel_connected(parkee), ast_channel_caller(parker)); ast_channel_inherit_variables(parker, parkee); ast_bridge_set_transfer_variables(parkee, ast_channel_name(parker), 0); @@ -473,21 +474,17 @@ static int parking_park_bridge_channel(struct ast_bridge_channel *bridge_channel static int parking_park_call(struct ast_bridge_channel *parker, char *exten, size_t length) { RAII_VAR(struct parking_lot *, lot, NULL, ao2_cleanup); - const char *lot_name = NULL; + const char *lot_name; ast_channel_lock(parker->chan); - lot_name = find_channel_parking_lot_name(parker->chan); - if (!ast_strlen_zero(lot_name)) { - lot_name = ast_strdupa(lot_name); - } + lot_name = ast_strdupa(find_channel_parking_lot_name(parker->chan)); ast_channel_unlock(parker->chan); - if (ast_strlen_zero(lot_name)) { - return -1; - } - lot = parking_lot_find_by_name(lot_name); if (!lot) { + lot = parking_create_dynamic_lot(lot_name, parker->chan); + } + if (!lot) { ast_log(AST_LOG_WARNING, "Cannot Park %s: lot %s unknown\n", ast_channel_name(parker->chan), lot_name); return -1; @@ -503,7 +500,8 @@ static int feature_park_call(struct ast_bridge_channel *bridge_channel, void *ho { SCOPED_MODULE_USE(parking_get_module_info()->self); - return parking_park_call(bridge_channel, NULL, 0); + parking_park_call(bridge_channel, NULL, 0); + return 0; } /*! |