mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-30 02:26:23 +00:00
Merge "res_parking: Fix blind transfer dynamic lots creation."
This commit is contained in:
14
CHANGES
14
CHANGES
@@ -250,6 +250,20 @@ Queue
|
|||||||
'queue show'.
|
'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 ------------
|
--- Functionality changes from Asterisk 13.7.0 to Asterisk 13.8.0 ------------
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
@@ -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_connected_line_copy_from_caller(ast_channel_connected(semi2), ast_channel_caller(semi1));
|
||||||
|
|
||||||
ast_channel_language_set(semi2, ast_channel_language(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. */
|
/* Crossover the accountcode and peeraccount to cross the unreal bridge. */
|
||||||
ast_channel_accountcode_set(semi2, ast_channel_peeraccount(semi1));
|
ast_channel_accountcode_set(semi2, ast_channel_peeraccount(semi1));
|
||||||
ast_channel_peeraccount_set(semi2, ast_channel_accountcode(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));
|
ast_channel_cc_params_init(semi2, ast_channel_get_cc_config_params(semi1));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -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);
|
lot = parking_lot_find_by_name(lot_name);
|
||||||
if (!lot) {
|
if (!lot) {
|
||||||
lot = parking_create_dynamic_lot(lot_name, parkee);
|
lot = parking_create_dynamic_lot(lot_name, parker);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!lot) {
|
if (!lot) {
|
||||||
|
@@ -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. */
|
/* Before we actually dial out let's inherit appropriate information. */
|
||||||
ast_channel_lock_both(parker, parkee);
|
ast_channel_lock_both(parker, parkee);
|
||||||
ast_channel_req_accountcodes(parkee, parker, AST_CHANNEL_REQUESTOR_REPLACEMENT);
|
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_connected_line_copy_from_caller(ast_channel_connected(parkee), ast_channel_caller(parker));
|
||||||
ast_channel_inherit_variables(parker, parkee);
|
ast_channel_inherit_variables(parker, parkee);
|
||||||
ast_channel_datastore_inherit(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);
|
ast_channel_unlock(parker->chan);
|
||||||
|
|
||||||
lot = parking_lot_find_by_name(lot_name);
|
lot = parking_lot_find_by_name(lot_name);
|
||||||
|
if (!lot) {
|
||||||
|
lot = parking_create_dynamic_lot(lot_name, parker->chan);
|
||||||
|
}
|
||||||
if (!lot) {
|
if (!lot) {
|
||||||
ast_log(AST_LOG_WARNING, "Cannot Park %s: lot %s unknown\n",
|
ast_log(AST_LOG_WARNING, "Cannot Park %s: lot %s unknown\n",
|
||||||
ast_channel_name(parker->chan), lot_name);
|
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);
|
SCOPED_MODULE_USE(AST_MODULE_SELF);
|
||||||
|
|
||||||
return parking_park_call(bridge_channel, NULL, 0);
|
parking_park_call(bridge_channel, NULL, 0);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
Reference in New Issue
Block a user