diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-11-15 12:17:39 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-11-15 12:17:39 -0800 |
commit | 177db62ef7566e129a52a3ee1afcd4bfb6073452 (patch) | |
tree | 16363b8c998305a2243477a8b240a0472c18ff6a | |
parent | 1356d7c2c178adf68fbb8b745524b8f20c0b292e (diff) | |
download | unicorn-177db62ef7566e129a52a3ee1afcd4bfb6073452.tar.gz |
Since they're all optional, make them non-fatal, but make sure we log them so we can diagnose what (if anything) is going wrong.
-rw-r--r-- | lib/unicorn/socket_helper.rb | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/unicorn/socket_helper.rb b/lib/unicorn/socket_helper.rb index 1c56be2..886d0f3 100644 --- a/lib/unicorn/socket_helper.rb +++ b/lib/unicorn/socket_helper.rb @@ -29,23 +29,23 @@ module Unicorn # highly portable, but off by default because we don't do keepalive if defined?(TCP_NODELAY) && ! (val = opt[:tcp_nodelay]).nil? - sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, val ? 1 : 0) rescue nil + sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, val ? 1 : 0) end unless (val = opt[:tcp_nopush]).nil? val = val ? 1 : 0 if defined?(TCP_CORK) # Linux - sock.setsockopt(IPPROTO_TCP, TCP_CORK, val) rescue nil + sock.setsockopt(IPPROTO_TCP, TCP_CORK, val) elsif defined?(TCP_NOPUSH) # TCP_NOPUSH is untested (FreeBSD) - sock.setsockopt(IPPROTO_TCP, TCP_NOPUSH, val) rescue nil + sock.setsockopt(IPPROTO_TCP, TCP_NOPUSH, val) end end # No good reason to ever have deferred accepts off if defined?(TCP_DEFER_ACCEPT) - sock.setsockopt(SOL_TCP, TCP_DEFER_ACCEPT, 1) rescue nil + sock.setsockopt(SOL_TCP, TCP_DEFER_ACCEPT, 1) elsif defined?(SO_ACCEPTFILTER) && defined?(FILTER_ARG) - sock.setsockopt(SOL_SOCKET, SO_ACCEPTFILTER, FILTER_ARG) rescue nil + sock.setsockopt(SOL_SOCKET, SO_ACCEPTFILTER, FILTER_ARG) end end @@ -61,6 +61,11 @@ module Unicorn log_buffer_sizes(sock, " after: ") end sock.listen(opt[:backlog] || 1024) + rescue => e + if respond_to?(:logger) + logger.error "error setting socket options: #{e.inspect}" + logger.error e.backtrace.join("\n") + end end def log_buffer_sizes(sock, pfx = '') |