static void bridge_stasis_queue_join_action(struct ast_bridge *self,
	struct ast_bridge_channel *bridge_channel)
{
	ast_channel_lock(bridge_channel->chan);
	command_prestart_queue_command(bridge_channel->chan, add_channel_to_bridge,
		ao2_bump(self), __ao2_cleanup);
	ast_channel_unlock(bridge_channel->chan);
}
Example #2
0
static void bridge_stasis_queue_join_action(struct ast_bridge *self,
        struct ast_bridge_channel *bridge_channel, struct ast_bridge_channel *swap)
{
    struct defer_bridge_add_obj *defer;

    defer = ao2_alloc_options(sizeof(*defer), defer_bridge_add_dtor,
                              AO2_ALLOC_OPT_LOCK_NOLOCK);
    if (!defer) {
        return;
    }
    ao2_ref(self, +1);
    defer->bridge = self;
    if (swap) {
        ast_channel_ref(swap->chan);
        defer->swap = swap->chan;
    }

    ast_channel_lock(bridge_channel->chan);
    command_prestart_queue_command(bridge_channel->chan, defer_bridge_add,
                                   defer, __ao2_cleanup);
    ast_channel_unlock(bridge_channel->chan);
}