summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/ether.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>2000-10-09 21:18:23 +0000
committerbrian <brian@FreeBSD.org>2000-10-09 21:18:23 +0000
commit38c4d01137dc7f3cd19b75f9b4513c9bab16388e (patch)
tree5fca605418aeeecc4aab375a4c4d001d27a1906d /usr.sbin/ppp/ether.c
parentecc37ebaa1badd59b516817d9bab52a82eaf84b8 (diff)
downloadFreeBSD-src-38c4d01137dc7f3cd19b75f9b4513c9bab16388e.zip
FreeBSD-src-38c4d01137dc7f3cd19b75f9b4513c9bab16388e.tar.gz
Create fd_sets big enough to handle getdtablesize() descriptors.
Diffstat (limited to 'usr.sbin/ppp/ether.c')
-rw-r--r--usr.sbin/ppp/ether.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/usr.sbin/ppp/ether.c b/usr.sbin/ppp/ether.c
index 7d80a69..c9906db 100644
--- a/usr.sbin/ppp/ether.c
+++ b/usr.sbin/ppp/ether.c
@@ -203,15 +203,23 @@ ether_MessageIn(struct etherdevice *dev)
char unknown[14];
const char *msg;
struct timeval t;
- fd_set r;
+ fd_set *r;
+ int ret;
if (dev->cs < 0)
return;
- FD_ZERO(&r);
- FD_SET(dev->cs, &r);
+ if ((r = mkfdset()) == NULL) {
+ log_Printf(LogERROR, "DoLoop: Cannot create fd_set\n");
+ return;
+ }
+ zerofdset(r);
+ FD_SET(dev->cs, r);
t.tv_sec = t.tv_usec = 0;
- if (select(dev->cs + 1, &r, NULL, NULL, &t) <= 0)
+ ret = select(dev->cs + 1, r, NULL, NULL, &t);
+ free(r);
+
+ if (ret <= 0)
return;
if (NgRecvMsg(dev->cs, rep, sizeof msgbuf, NULL) < 0)
OpenPOWER on IntegriCloud