From df28954a84f6f161efada39db61ff8a33b4f987a Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Fri, 10 Apr 2009 17:32:25 +0000 Subject: [PATCH] Make sure tc is unlocked before calling ast_call since calling a Local channel could result in a deadlock. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@187770 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_dial.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/app_dial.c b/apps/app_dial.c index 21ba4b8051..573e4c54ca 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -1916,6 +1916,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags else ast_copy_string(tc->exten, chan->exten, sizeof(tc->exten)); + ast_channel_unlock(tc); res = ast_call(tc, numsubst, 0); /* Place the call, but don't wait on the answer */ /* Save the info in cdr's that we called them */ @@ -1931,7 +1932,6 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags chan->hangupcause = tc->hangupcause; } ast_channel_unlock(chan); - ast_channel_unlock(tc); ast_hangup(tc); tc = NULL; ast_free(tmp); @@ -1941,7 +1941,6 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags senddialevent(chan, tc, numsubst); ast_verb(3, "Called %s\n", numsubst); ast_channel_unlock(chan); - ast_channel_unlock(tc); if (!ast_test_flag64(peerflags, OPT_ORIGINAL_CLID)) { ast_set_callerid(tc, tmpexten, get_cid_name(cidname, sizeof(cidname), chan), NULL); }