mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-18 15:49:56 +00:00
Remove the unsafe bridge parameter from ast_bridge_hook_callback's.
Most hook callbacks did not need the bridge parameter. The pointer value could become invalid if the channel is moved to another bridge while it is executing. * Fixed some issues in feature_attended_transfer() as a result. * Reduce the bridge inhibit count in attended_transfer_properties_shutdown() after it has restored the bridge channel hooks. * Removed basic bridge requirement on feature_blind_transfer(). It does not require the basic bridge like feature_attended_transfer(). git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@395574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1078,12 +1078,11 @@ static void agent_connect_caller(struct ast_bridge_channel *bridge_channel, stru
|
||||
* The agent is in the new bridge so we can invoke the
|
||||
* mixmonitor hook to only start recording.
|
||||
*/
|
||||
ast_bridge_features_do(AST_BRIDGE_BUILTIN_AUTOMIXMON, caller_bridge,
|
||||
bridge_channel, &options);
|
||||
ast_bridge_features_do(AST_BRIDGE_BUILTIN_AUTOMIXMON, bridge_channel, &options);
|
||||
}
|
||||
}
|
||||
|
||||
static int bridge_agent_hold_ack(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, void *hook_pvt)
|
||||
static int bridge_agent_hold_ack(struct ast_bridge_channel *bridge_channel, void *hook_pvt)
|
||||
{
|
||||
struct agent_pvt *agent = hook_pvt;
|
||||
|
||||
@@ -1101,7 +1100,7 @@ static int bridge_agent_hold_ack(struct ast_bridge *bridge, struct ast_bridge_ch
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bridge_agent_hold_heartbeat(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, void *hook_pvt)
|
||||
static int bridge_agent_hold_heartbeat(struct ast_bridge_channel *bridge_channel, void *hook_pvt)
|
||||
{
|
||||
struct agent_pvt *agent = hook_pvt;
|
||||
int probation_timedout = 0;
|
||||
@@ -1709,7 +1708,7 @@ static void caller_abort_agent(struct agent_pvt *agent)
|
||||
ast_bridge_channel_unlock(logged);
|
||||
}
|
||||
|
||||
static int caller_safety_timeout(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, void *hook_pvt)
|
||||
static int caller_safety_timeout(struct ast_bridge_channel *bridge_channel, void *hook_pvt)
|
||||
{
|
||||
struct agent_pvt *agent = hook_pvt;
|
||||
|
||||
|
||||
@@ -201,7 +201,7 @@ AST_APP_OPTIONS(bridgewait_opts, {
|
||||
AST_APP_OPTION_ARG('S', MUXFLAG_TIMEOUT, OPT_ARG_TIMEOUT),
|
||||
});
|
||||
|
||||
static int bridgewait_timeout_callback(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, void *hook_pvt)
|
||||
static int bridgewait_timeout_callback(struct ast_bridge_channel *bridge_channel, void *hook_pvt)
|
||||
{
|
||||
ast_verb(3, "Channel %s timed out.\n", ast_channel_name(bridge_channel->chan));
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, BRIDGE_CHANNEL_STATE_END);
|
||||
|
||||
@@ -1402,9 +1402,9 @@ static void conf_handle_talker_destructor(void *pvt_data)
|
||||
ast_free(pvt_data);
|
||||
}
|
||||
|
||||
static int conf_handle_talker_cb(struct ast_bridge_channel *bridge_channel, void *pvt_data, int talking)
|
||||
static int conf_handle_talker_cb(struct ast_bridge_channel *bridge_channel, void *hook_pvt, int talking)
|
||||
{
|
||||
const char *conf_name = pvt_data;
|
||||
const char *conf_name = hook_pvt;
|
||||
struct confbridge_conference *conference = ao2_find(conference_bridges, conf_name, OBJ_KEY);
|
||||
struct ast_json *talking_extras;
|
||||
|
||||
|
||||
@@ -2080,9 +2080,10 @@ static void menu_hook_destroy(void *hook_pvt)
|
||||
ast_free(pvt);
|
||||
}
|
||||
|
||||
static int menu_hook_callback(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, void *hook_pvt)
|
||||
static int menu_hook_callback(struct ast_bridge_channel *bridge_channel, void *hook_pvt)
|
||||
{
|
||||
struct dtmf_menu_hook_pvt *pvt = hook_pvt;
|
||||
|
||||
return conf_handle_dtmf(bridge_channel, pvt->user, &pvt->menu_entry, pvt->menu);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user