]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
ensure buffer policy is restored after RAS is done with a channel (bug #4648)
authorRussell Bryant <russell@russellbryant.com>
Thu, 7 Jul 2005 15:15:59 +0000 (15:15 +0000)
committerRussell Bryant <russell@russellbryant.com>
Thu, 7 Jul 2005 15:15:59 +0000 (15:15 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@6043 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_zapras.c

index d835e12f8de09ff946e063c502a624e833fd7ccd..09c93bdb1fa74a6f6aa0ec30d44ad3072460a00f 100755 (executable)
@@ -125,8 +125,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) {
@@ -162,20 +168,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;
                }
        }