http_server: ignore ENOTCONN (mostly from shutdown(2))
authorEric Wong <normalperson@yhbt.net>
Fri, 27 Apr 2012 18:48:16 +0000 (27 11:48 -0700)
committerEric Wong <normalperson@yhbt.net>
Fri, 27 Apr 2012 18:48:16 +0000 (27 11:48 -0700)
Since there's nothing unicorn can do to avoid this error
on unconnected/halfway-connected clients, ignoring ENOTCONN
is a safe bet.

Rainbows! has long had this rescue as it called getpeername(2)
on untrusted sockets

lib/unicorn/http_server.rb

index f942e2f..14a6f9a 100644 (file)
@@ -507,7 +507,8 @@ class Unicorn::HttpServer
   # the socket is closed at the end of this function
   def handle_error(client, e)
     msg = case e
-    when EOFError,Errno::ECONNRESET,Errno::EPIPE,Errno::EINVAL,Errno::EBADF
+    when EOFError,Errno::ECONNRESET,Errno::EPIPE,Errno::EINVAL,Errno::EBADF,
+         Errno::ENOTCONN
       Unicorn::Const::ERROR_500_RESPONSE
     when Unicorn::RequestURITooLongError
       Unicorn::Const::ERROR_414_RESPONSE