*/
static void bridge_agent_hold_dissolving(struct ast_bridge *self)
{
- ao2_global_obj_replace_unref(agent_holding, NULL);
+ ao2_global_obj_release(agent_holding);
ast_bridge_base_v_table.dissolving(self);
}
* want to put the agent back into the holding bridge for the
* next caller.
*/
- ast_bridge_join(holding, logged, NULL, &features, NULL, 1);
+ ast_bridge_join(holding, logged, NULL, &features, NULL,
+ AST_BRIDGE_JOIN_PASS_REFERENCE);
if (logged != agent->logged) {
/* This channel is no longer the logged in agent. */
break;
}
ast_indicate(chan, AST_CONTROL_RINGING);
- ast_bridge_join(caller_bridge, chan, NULL, &caller_features, NULL, 1);
+ ast_bridge_join(caller_bridge, chan, NULL, &caller_features, NULL,
+ AST_BRIDGE_JOIN_PASS_REFERENCE);
ast_bridge_features_cleanup(&caller_features);
return -1;
agent->logged = ast_channel_ref(chan);
agent->last_disconnect = ast_tvnow();
time(&agent->login_start);
+ agent->deferred_logoff = 0;
agent_unlock(agent);
agent_login_channel_config(agent, chan);