ensure buffer policy is restored after RAS is done with a channel (bug #4589, slightl...
authorKevin P. Fleming <kpfleming@digium.com>
Wed, 6 Jul 2005 01:41:54 +0000 (01:41 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Wed, 6 Jul 2005 01:41:54 +0000 (01:41 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6037 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_zapras.c

index 69900ea..faed715 100755 (executable)
@@ -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;
                }
        }