diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-07-06 01:41:54 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-07-06 01:41:54 +0000 |
commit | 2596bd04e83494a91723a059c52ae7ced6a78517 (patch) | |
tree | 2d8b21febbe517700fdaed57de6aa2b9252000e4 /apps/app_zapras.c | |
parent | c0c3c1d601ef1208080d5669e594bec9c1927176 (diff) |
ensure buffer policy is restored after RAS is done with a channel (bug #4589, slightly simpler fix)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6037 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_zapras.c')
-rwxr-xr-x | apps/app_zapras.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/apps/app_zapras.c b/apps/app_zapras.c index 69900ea44..faed71565 100755 --- a/apps/app_zapras.c +++ b/apps/app_zapras.c @@ -130,8 +130,14 @@ static void run_ras(struct ast_channel *chan, char *args) int status; int res; int signalled = 0; - struct zt_bufferinfo bi; + struct zt_bufferinfo savebi; int x; + + res = ioctl(chan->fds[0], ZT_GET_BUFINFO, &savebi); + if(res) { + ast_log(LOG_WARNING, "Unable to check buffer policy on channel %s\n", chan->name); + return; + } pid = spawn_ras(chan, args); if (pid < 0) { @@ -167,20 +173,11 @@ static void run_ras(struct ast_channel *chan, char *args) x = 1; ioctl(chan->fds[0], ZT_AUDIOMODE, &x); - /* Double check buffering too */ - res = ioctl(chan->fds[0], ZT_GET_BUFINFO, &bi); - if (!res) { - /* XXX This is ZAP_BLOCKSIZE XXX */ - bi.bufsize = 204; - bi.txbufpolicy = ZT_POLICY_IMMEDIATE; - bi.rxbufpolicy = ZT_POLICY_IMMEDIATE; - bi.numbufs = 4; - res = ioctl(chan->fds[0], ZT_SET_BUFINFO, &bi); - if (res < 0) { - ast_log(LOG_WARNING, "Unable to set buffer policy on channel %s\n", chan->name); - } - } else - ast_log(LOG_WARNING, "Unable to check buffer policy on channel %s\n", chan->name); + /* Restore saved values */ + res = ioctl(chan->fds[0], ZT_SET_BUFINFO, &savebi); + if (res < 0) { + ast_log(LOG_WARNING, "Unable to set buffer policy on channel %s\n", chan->name); + } break; } } |