Re-add support for non-portable socket options
commit563d03f649ef31d2aec3505cbbed1e015493b8fc
authorEric Wong <normalperson@yhbt.net>
Wed, 1 Jul 2009 02:16:43 +0000 (30 19:16 -0700)
committerEric Wong <normalperson@yhbt.net>
Wed, 1 Jul 2009 20:35:27 +0000 (1 13:35 -0700)
treec08a5605671250f523c6ddc6e2e86d767aeac4b0
parentd247b5d95a3ad2de65cc909db21fdfbc6194b4c9
Re-add support for non-portable socket options

Now that we support tunnelling arbitrary protocols over HTTP as
well as "100 Continue" responses, TCP_NODELAY actually becomes
useful to us.  TCP_NODELAY is actually reasonably portable
nowadays; even.

While we're adding non-portable options, TCP_CORK/TCP_NOPUSH can
be enabled, too.  Unlike some other servers, these can't be
disabled explicitly/intelligently to force a flush, however.
However, these may still improve performance with "normal" HTTP
applications (Mongrel has always had TCP_CORK enabled in Linux).

While we're adding OS-specific features, we might as well
support TCP_DEFER_ACCEPT in Linux and FreeBSD the "httpready"
accept filter to prevent abuse.

These options can all be enabled on a per-listener basis.
lib/unicorn/configurator.rb
lib/unicorn/socket_helper.rb