about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-11-15 12:17:39 -0800
committerEric Wong <normalperson@yhbt.net>2009-11-15 12:17:39 -0800
commit177db62ef7566e129a52a3ee1afcd4bfb6073452 (patch)
tree16363b8c998305a2243477a8b240a0472c18ff6a
parent1356d7c2c178adf68fbb8b745524b8f20c0b292e (diff)
downloadunicorn-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.rb15
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 = '')