]> err.no Git - varnish/commit
Revise the kqueue_acceptor with a sledgehammer.
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Tue, 19 Feb 2008 11:10:12 +0000 (11:10 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Tue, 19 Feb 2008 11:10:12 +0000 (11:10 +0000)
commitba89f5cd6d45bea720709e630273811bb84dbb9d
treec7fff5b35fed40d801102b24ac4d12d7ebbf8a65
parent18007a9e2fad1b3559ec065bca6bb854b91888d8
Revise the kqueue_acceptor with a sledgehammer.

Use EV_ONESHOT for all session events to make the kernel delete the
event when it fires, to remove any chance of any race with session
state and kqueue event arming.

For sessions with acceptfilter, this does just what we want (and I
kick myself for not realizing this much sooner).

For sessions where the acceptfilter is not enabled or has given up,
this results in an extra kevent arming operation for each read, but
this is still a much lower overhead than synchrnously deleting
the event when before passing the session on.

Delete all the workarounds and band-aids that had accumulated.

All in all, a win-win-win situation.

I have no idea how many tickets this will close.

git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2514 d4fa192b-c00b-0410-8231-f00ffab90ce4
varnish-cache/bin/varnishd/cache_acceptor_kqueue.c