diff --git a/CHANGES b/CHANGES index da516efdc2a63719f10fc333ed7d732df5977ab0..4b607b7a2dfa68b9051f6ed8885926386143713b 100644 --- a/CHANGES +++ b/CHANGES @@ -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 ------------ ------------------------------------------------------------------------------ diff --git a/main/core_unreal.c b/main/core_unreal.c index 19f2d1f6516668410d03e69800353cb87783d612..da0bb43bba67202f07bdbaa924f7545eaee6759a 100644 --- a/main/core_unreal.c +++ b/main/core_unreal.c @@ -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)); /* diff --git a/res/parking/parking_applications.c b/res/parking/parking_applications.c index 616627a3bcb32bf29a888d298589b29598919434..ea7223eac69ac9c034205a58260c71f0385f9365 100644 --- a/res/parking/parking_applications.c +++ b/res/parking/parking_applications.c @@ -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) { diff --git a/res/parking/parking_bridge_features.c b/res/parking/parking_bridge_features.c index 4d1416eb84ae73807995a84b8e63fb02401036fd..e053ed74edd6b481036274c817a553b00cc0ab8d 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_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; } /*!