Index: channels/chan_local.c =================================================================== --- channels/chan_local.c (revision 311604) +++ channels/chan_local.c (working copy) @@ -821,11 +821,14 @@ } ast_set_cc_interfaces_chanvar(p->chan, reduced_dest); + ast_channel_ref(p->chan); + ao2_unlock(p); + ast_channel_unlock(p->chan); + if (!ast_exists_extension(p->chan, p->chan->context, p->chan->exten, 1, S_COR(p->owner->caller.id.number.valid, p->owner->caller.id.number.str, NULL))) { ast_log(LOG_NOTICE, "No such extension/context %s@%s while calling Local channel\n", p->chan->exten, p->chan->context); - ao2_unlock(p); - ast_channel_unlock(p->chan); + ast_channel_unref(p->chan); ao2_ref(p, -1); return -1; } @@ -834,8 +837,7 @@ if (!(res = ast_pbx_start(p->chan))) ast_set_flag(p, LOCAL_LAUNCHED_PBX); - ao2_unlock(p); - ast_channel_unlock(p->chan); + ast_channel_unref(p->chan); ao2_ref(p, -1); return res; }