From 9fca20acc17f48d415406b8a7c3e162a6c5ffe01 Mon Sep 17 00:00:00 2001 From: James Golovich Date: Sat, 27 Mar 2004 07:34:37 +0000 Subject: [PATCH] Fixup read/write locking git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_ices.c | 4 ++-- apps/app_nbscat.c | 4 ++-- channel.c | 15 ++++++++++----- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/apps/app_ices.c b/apps/app_ices.c index 294ecc6047..27abab8085 100755 --- a/apps/app_ices.c +++ b/apps/app_ices.c @@ -113,7 +113,7 @@ static int ices_exec(struct ast_channel *chan, void *data) } oreadformat = chan->readformat; - res = ast_set_read_format(chan, AST_FORMAT_SLINEAR); + res = ast_set_read_format(chan, AST_FORMAT_SLINEAR, 0); if (res < 0) { close(fds[0]); close(fds[1]); @@ -164,7 +164,7 @@ static int ices_exec(struct ast_channel *chan, void *data) if (pid > -1) kill(pid, SIGKILL); if (!res && oreadformat) - ast_set_read_format(chan, oreadformat); + ast_set_read_format(chan, oreadformat, 0); return res; } diff --git a/apps/app_nbscat.c b/apps/app_nbscat.c index e99d2f265a..6c28085516 100755 --- a/apps/app_nbscat.c +++ b/apps/app_nbscat.c @@ -109,7 +109,7 @@ static int NBScat_exec(struct ast_channel *chan, void *data) ast_stopstream(chan); owriteformat = chan->writeformat; - res = ast_set_write_format(chan, AST_FORMAT_SLINEAR); + res = ast_set_write_format(chan, AST_FORMAT_SLINEAR, 0); if (res < 0) { ast_log(LOG_WARNING, "Unable to set write format to signed linear\n"); return -1; @@ -173,7 +173,7 @@ static int NBScat_exec(struct ast_channel *chan, void *data) if (pid > -1) kill(pid, SIGKILL); if (!res && owriteformat) - ast_set_write_format(chan, owriteformat); + ast_set_write_format(chan, owriteformat, 0); return res; } diff --git a/channel.c b/channel.c index 4c46e70174..0abc3521e8 100755 --- a/channel.c +++ b/channel.c @@ -1505,7 +1505,8 @@ int ast_set_write_format(struct ast_channel *chan, int fmts, int needlock) int native; int res; - ast_mutex_lock(&chan->lock); + if (needlock) + ast_mutex_lock(&chan->lock); native = chan->nativeformats; fmt = fmts; @@ -1513,7 +1514,8 @@ int ast_set_write_format(struct ast_channel *chan, int fmts, int needlock) if (res < 0) { ast_log(LOG_NOTICE, "Unable to find a path from %s to %s\n", ast_getformatname(fmts), ast_getformatname(chan->nativeformats)); - ast_mutex_unlock(&chan->lock); + if (needlock) + ast_mutex_unlock(&chan->lock); return -1; } @@ -1528,7 +1530,8 @@ int ast_set_write_format(struct ast_channel *chan, int fmts, int needlock) chan->pvt->writetrans = ast_translator_build_path(chan->pvt->rawwriteformat, chan->writeformat); if (option_debug) ast_log(LOG_DEBUG, "Set channel %s to write format %s\n", chan->name, ast_getformatname(chan->writeformat)); - ast_mutex_unlock(&chan->lock); + if (needlock) + ast_mutex_unlock(&chan->lock); return 0; } @@ -1547,7 +1550,8 @@ int ast_set_read_format(struct ast_channel *chan, int fmts, int needlock) if (res < 0) { ast_log(LOG_NOTICE, "Unable to find a path from %s to %s\n", ast_getformatname(chan->nativeformats), ast_getformatname(fmts)); - ast_mutex_unlock(&chan->lock); + if (needlock) + ast_mutex_unlock(&chan->lock); return -1; } @@ -1563,7 +1567,8 @@ int ast_set_read_format(struct ast_channel *chan, int fmts, int needlock) if (option_debug) ast_log(LOG_DEBUG, "Set channel %s to read format %s\n", chan->name, ast_getformatname(chan->readformat)); - ast_mutex_unlock(&chan->lock); + if (needlock) + ast_mutex_unlock(&chan->lock); return 0; }