diff options
author | glebius <glebius@FreeBSD.org> | 2004-11-11 09:39:04 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2004-11-11 09:39:04 +0000 |
commit | dc109677f9c0d4a165d01451145032213f8278d0 (patch) | |
tree | e10f5566bade0e90e48d1a055642ab70ebb1519b /usr.sbin/syslogd | |
parent | 385d6f2851b5108bd2615ea8e79b3124a832dd06 (diff) | |
download | FreeBSD-src-dc109677f9c0d4a165d01451145032213f8278d0.zip FreeBSD-src-dc109677f9c0d4a165d01451145032213f8278d0.tar.gz |
Double receive buffer size on sockets.
PR: bin/72366
Ok'd by: dwmalone
Approved by: julian (mentor)
Obtained from: OpenBSD
MFC after: 1 month
Diffstat (limited to 'usr.sbin/syslogd')
-rw-r--r-- | usr.sbin/syslogd/syslogd.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index ed266d4..247ca21 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -336,6 +336,7 @@ static void unmapped(struct sockaddr *); static void wallmsg(struct filed *, struct iovec *); static int waitdaemon(int, int, int); static void timedout(int); +static void double_rbuf(int); int main(int argc, char *argv[]) @@ -510,8 +511,11 @@ main(int argc, char *argv[]) dprintf("cannot create %s (%d)\n", fx->name, errno); if (fx == &funix_default || fx == &funix_secure) die(0); - else + else { STAILQ_REMOVE(&funixes, fx, funix, next); + continue; + } + double_rbuf(fx->s); } } if (SecureMode <= 1) @@ -2560,6 +2564,8 @@ socksetup(int af, const char *bindhostname) continue; } + double_rbuf(*s); + (*socks)++; s++; } @@ -2576,3 +2582,14 @@ socksetup(int af, const char *bindhostname) return (socks); } + +static void +double_rbuf(int fd) +{ + socklen_t slen, len; + + if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &len, &slen) == 0) { + len *= 2; + setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &len, slen); + } +} |