aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcitats <citats@f38db490-d61c-443f-a65b-d21fe96a405b>2004-03-27 07:34:37 +0000
committercitats <citats@f38db490-d61c-443f-a65b-d21fe96a405b>2004-03-27 07:34:37 +0000
commit40646976f71b9598f3aaf3fa6b5ee642fb1924cd (patch)
tree8fb63a5adf8ae4381ad7d033befd4d8b3a708f51
parent5acf40987d242dc3f7c9329b8b9b61b3e512113a (diff)
Fixup read/write locking
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2573 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xapps/app_ices.c4
-rwxr-xr-xapps/app_nbscat.c4
-rwxr-xr-xchannel.c15
3 files changed, 14 insertions, 9 deletions
diff --git a/apps/app_ices.c b/apps/app_ices.c
index 294ecc604..27abab808 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 e99d2f265..6c2808551 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 4c46e7017..0abc3521e 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;
}