From e2630fcd516b8f794bf342d9fd267b0c905e79ce Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Wed, 18 Dec 2013 19:28:05 +0000 Subject: channels: Return allocated channels locked. This change makes ast_channel_alloc return allocated channels locked. By doing so no other thread can acquire, lock, and manipulate the channel before it is completely set up. (closes issue AST-1256) Review: https://reviewboard.asterisk.org/r/3067/ ........ Merged revisions 404204 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@404210 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_skinny.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'channels/chan_skinny.c') diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index a65862ff3..bb270d6a9 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -5393,6 +5393,8 @@ static struct ast_channel *skinny_new(struct skinny_line *l, struct skinny_subli sub = ast_calloc(1, sizeof(*sub)); if (!sub) { ast_log(LOG_WARNING, "Unable to allocate Skinny subchannel\n"); + ast_channel_unlock(tmp); + ast_channel_unref(tmp); return NULL; } else { ast_mutex_init(&sub->lock); @@ -5500,6 +5502,8 @@ static struct ast_channel *skinny_new(struct skinny_line *l, struct skinny_subli ast_channel_stage_snapshot_done(tmp); + ast_channel_unlock(tmp); + if (state != AST_STATE_DOWN) { if (ast_pbx_start(tmp)) { ast_log(LOG_WARNING, "Unable to start PBX on %s\n", ast_channel_name(tmp)); -- cgit v1.2.3