|
|
|
@ -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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|