diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-11-08 04:35:57 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-11-08 04:35:57 +0000 |
commit | 5a55a162d7d811f3bf31ef8247fc9b900e6237da (patch) | |
tree | fdfad07246db3043991f439140faab2a260dcfd4 /channels/chan_agent.c | |
parent | 578e6fddfeec4b995b24137b1fae772619a42f8c (diff) |
Trustingly add Thorston's deadlock patch
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1708 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_agent.c')
-rwxr-xr-x | channels/chan_agent.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index 7421f5d53..593de03cf 100755 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -1154,10 +1154,14 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode) if( options ) if( strchr( options, 's' ) ) play_announcement = 0; + ast_mutex_unlock(&p->lock); + ast_mutex_unlock(&agentlock); if( !res && play_announcement ) res = ast_streamfile(chan, filename, chan->language); if (!res) ast_waitstream(chan, ""); + ast_mutex_lock(&agentlock); + ast_mutex_lock(&p->lock); if (!res) { res = ast_set_read_format(chan, ast_best_codec(chan->nativeformats)); if (res) @@ -1173,6 +1177,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode) res = -1; if (callbackmode && !res) { /* Just say goodbye and be done with it */ + ast_mutex_unlock(&agentlock); if (!res) res = ast_safe_sleep(chan, 500); res = ast_streamfile(chan, "vm-goodbye", chan->language); @@ -1181,7 +1186,6 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode) if (!res) res = ast_safe_sleep(chan, 1000); ast_mutex_unlock(&p->lock); - ast_mutex_unlock(&agentlock); } else if (!res) { #ifdef HONOR_MUSIC_CLASS /* check if the moh class was changed with setmusiconhold */ |