diff --git a/res/res_pjsip/pjsip_options.c b/res/res_pjsip/pjsip_options.c index 2229664cc4..891de899cf 100644 --- a/res/res_pjsip/pjsip_options.c +++ b/res/res_pjsip/pjsip_options.c @@ -1530,10 +1530,11 @@ static int sip_options_endpoint_compositor_add_task(void *obj) ast_debug(3, "Adding endpoint compositor '%s' to AOR '%s'\n", task_data->endpoint_state_compositor->name, task_data->aor_options->name); + ao2_ref(task_data->endpoint_state_compositor, +1); if (AST_VECTOR_APPEND(&task_data->aor_options->compositors, - ao2_bump(task_data->endpoint_state_compositor))) { + task_data->endpoint_state_compositor)) { /* Failed to add so no need to update the endpoint status. Nothing changed. */ - ao2_cleanup(task_data->endpoint_state_compositor); + ao2_ref(task_data->endpoint_state_compositor, -1); return 0; } diff --git a/res/res_pjsip_history.c b/res/res_pjsip_history.c index 8f44d390e7..e6e9ac200b 100644 --- a/res/res_pjsip_history.c +++ b/res/res_pjsip_history.c @@ -1135,7 +1135,8 @@ static struct vector_history_t *filter_history(struct ast_cli_args *a) } else if (!res) { continue; } else { - if (AST_VECTOR_APPEND(output, ao2_bump(entry))) { + ao2_bump(entry); + if (AST_VECTOR_APPEND(output, entry)) { ao2_cleanup(entry); } } diff --git a/res/stasis/messaging.c b/res/stasis/messaging.c index 979b687abd..4a86d58755 100644 --- a/res/stasis/messaging.c +++ b/res/stasis/messaging.c @@ -459,8 +459,9 @@ static struct message_subscription *get_or_create_subscription(struct ast_endpoi ao2_link(endpoint_subscriptions, sub); } else { ast_rwlock_wrlock(&tech_subscriptions_lock); - if (AST_VECTOR_APPEND(&tech_subscriptions, ao2_bump(sub))) { - /* Release the ao2_bump that was for the vector and allocation references. */ + ao2_ref(sub, +1); + if (AST_VECTOR_APPEND(&tech_subscriptions, sub)) { + /* Release the refs that were for the vector and the allocation. */ ao2_ref(sub, -2); sub = NULL; }