diff options
author | Jason Downs <downsj@cvs.openbsd.org> | 1996-07-14 00:27:10 +0000 |
---|---|---|
committer | Jason Downs <downsj@cvs.openbsd.org> | 1996-07-14 00:27:10 +0000 |
commit | 0e67b049852bbcfe1c12d08059f295f7711a0693 (patch) | |
tree | dc31e50ebad56fe145cd96d47616332ee15a5f4d | |
parent | dce0746176555e09623132c4d0535740ec089e1f (diff) |
netbsd pr#2623: fix VJ compression and active filter, John Kohl
<jtk@kolvir.arlington.ma.us>
-rw-r--r-- | usr.sbin/pppd/sys-bsd.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/usr.sbin/pppd/sys-bsd.c b/usr.sbin/pppd/sys-bsd.c index d8891d71f41..5512f007ad5 100644 --- a/usr.sbin/pppd/sys-bsd.c +++ b/usr.sbin/pppd/sys-bsd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sys-bsd.c,v 1.3 1996/04/21 23:41:29 deraadt Exp $ */ +/* $OpenBSD: sys-bsd.c,v 1.4 1996/07/14 00:27:09 downsj Exp $ */ /* * sys-bsd.c - System-dependent procedures for setting up @@ -23,7 +23,7 @@ */ #ifndef lint -static char rcsid[] = "$OpenBSD: sys-bsd.c,v 1.3 1996/04/21 23:41:29 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: sys-bsd.c,v 1.4 1996/07/14 00:27:09 downsj Exp $"; #endif /* @@ -645,6 +645,7 @@ get_loop_output() { int rv = 0; int n; + struct ppp_idle idle; while ((n = read(loop_master, inbuf, sizeof(inbuf))) >= 0) { if (loop_chars(inbuf, n)) @@ -658,7 +659,16 @@ get_loop_output() syslog(LOG_ERR, "read from loopback: %m"); die(1); } - + if (get_idle_time(0, &idle)) { + /* somebody sent a packet which poked the active filter. */ + /* VJ compression may result in get_loop_output() never + matching the idle filter since it's applied here in user space + after the kernel has compressed the packet. + The kernel applies the active filter before the VJ compression. */ + if (idle.xmit_idle < idle_time_limit) + rv = 1; + SYSDEBUG((LOG_DEBUG, "xmit idle %d", idle.xmit_idle)); + } return rv; } |