Merge "res_parking: Fix blind transfer dynamic lots creation."

This commit is contained in:
Joshua Colp
2016-03-26 14:25:46 -05:00
committed by Gerrit Code Review
4 changed files with 23 additions and 4 deletions

14
CHANGES
View File

@@ -250,6 +250,20 @@ Queue
'queue show'.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.8.0 to Asterisk 13.9.0 ------------
------------------------------------------------------------------------------
res_parking:
- The dynamic parking lot creation channel variables PARKINGDYNAMIC,
PARKINGDYNCONTEXT, PARKINGDYNEXTEN, and PARKINGDYNPOS are now looked
for in the parker's channel instead of the parked channel. This is only
of significance if the parker uses blind transfer or the DTMF one-step
parking feature. You need to use the double underscore '__' inheritance
for these variables. The indefinite inheritance is also recommended
for the PARKINGEXTEN variable.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.7.0 to Asterisk 13.8.0 ------------
------------------------------------------------------------------------------

View File

@@ -687,13 +687,13 @@ void ast_unreal_call_setup(struct ast_channel *semi1, struct ast_channel *semi2)
ast_connected_line_copy_from_caller(ast_channel_connected(semi2), ast_channel_caller(semi1));
ast_channel_language_set(semi2, ast_channel_language(semi1));
ast_channel_musicclass_set(semi2, ast_channel_musicclass(semi1));
ast_channel_parkinglot_set(semi2, ast_channel_parkinglot(semi1));
/* Crossover the accountcode and peeraccount to cross the unreal bridge. */
ast_channel_accountcode_set(semi2, ast_channel_peeraccount(semi1));
ast_channel_peeraccount_set(semi2, ast_channel_accountcode(semi1));
ast_channel_musicclass_set(semi2, ast_channel_musicclass(semi1));
ast_channel_cc_params_init(semi2, ast_channel_get_cc_config_params(semi1));
/*

View File

@@ -496,7 +496,7 @@ struct ast_bridge *park_common_setup(struct ast_channel *parkee, struct ast_chan
lot = parking_lot_find_by_name(lot_name);
if (!lot) {
lot = parking_create_dynamic_lot(lot_name, parkee);
lot = parking_create_dynamic_lot(lot_name, parker);
}
if (!lot) {

View File

@@ -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_channel_datastore_inherit(parker, parkee);
@@ -481,6 +482,9 @@ static int parking_park_call(struct ast_bridge_channel *parker, char *exten, siz
ast_channel_unlock(parker->chan);
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);
@@ -497,7 +501,8 @@ static int feature_park_call(struct ast_bridge_channel *bridge_channel, void *ho
{
SCOPED_MODULE_USE(AST_MODULE_SELF);
return parking_park_call(bridge_channel, NULL, 0);
parking_park_call(bridge_channel, NULL, 0);
return 0;
}
/*!