diff options
author | dg <dg@FreeBSD.org> | 1997-03-31 12:30:01 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1997-03-31 12:30:01 +0000 |
commit | b95c5ce5786c8b14b3a68ddfb63837b22a905aa7 (patch) | |
tree | f924aad136dc4e0ea04eb11fe492055cab1e297d /lib/libc | |
parent | db96cd70748c6a478dc6c7b64b65afa26d720741 (diff) | |
download | FreeBSD-src-b95c5ce5786c8b14b3a68ddfb63837b22a905aa7.zip FreeBSD-src-b95c5ce5786c8b14b3a68ddfb63837b22a905aa7.tar.gz |
In accept1(), falloc() is called after the process has awoken, but prior
to removing the connection from the queue. The problem here is that
falloc() may block and this would allow another process to accept the
connection instead. If this happens to leave the queue empty, then the
system will panic with an "accept: nothing queued".
Also changed a wakeup() to a wakeup_one() to avoid the "thundering herd"
problem on new connections in Apache (or any other application that has
multiple processes blocked in accept() for the same socket).
Diffstat (limited to 'lib/libc')
0 files changed, 0 insertions, 0 deletions