@@ -18,7 +18,6 @@ module Yahns::SocketHelper # :nodoc: 
   end
 
   def set_server_sockopt(sock, opt)
-    opt = {backlog: 1024}.merge!(opt)
     sock.close_on_exec = true # needed for inherited sockets
 
     TCPSocket === sock and sock.setsockopt(:IPPROTO_TCP, :TCP_NODELAY, 1)
@@ -31,7 +30,7 @@ module Yahns::SocketHelper # :nodoc: 
       end
       log_buffer_sizes(sock, " after: ")
     end
-    sock.listen(opt[:backlog])
+    sock.listen(opt[:backlog]) if opt[:backlog]
   rescue => e
     Yahns::Log.exception(@logger, "#{sock_name(sock)} #{opt.inspect}", e)
   end
@@ -48,7 +47,6 @@ module Yahns::SocketHelper # :nodoc: 
   # object in which case it is immediately returned
   def bind_listen(address, opt)
     return address unless String === address
-    opt ||= {}
 
     sock = if address[0] == ?/
       if File.exist?(address)
@@ -80,6 +78,7 @@ module Yahns::SocketHelper # :nodoc: 
       raise ArgumentError, "Don't know how to bind: #{address}"
     end
     sock.nonblock = opt[:nonblock] || false
+    opt[:backlog] ||= (2 ** 31) - 1 # let the kernel clamp
     set_server_sockopt(sock, opt)
     sock
   end