stream_input: call shutdown(2) if a client EOFs on us
authorEric Wong <normalperson@yhbt.net>
Fri, 27 Apr 2012 21:42:38 +0000 (27 14:42 -0700)
committerEric Wong <normalperson@yhbt.net>
Fri, 27 Apr 2012 21:42:38 +0000 (27 14:42 -0700)
In case the Rack app forks before a client upload is complete,
shutdown(2) the socket to ensure the client isn't attempting to
read from us (even if it explicitly stopped writes).

lib/unicorn/stream_input.rb

index 4ca5a04..c8a4240 100644 (file)
@@ -139,7 +139,11 @@ private
     # we do support clients that shutdown(SHUT_WR) after the
     # _entire_ request has been sent, and those will not have
     # raised EOFError on us.
-    @socket.close if @socket
+    if @socket
+      @socket.shutdown
+      @socket.close
+    end
+  ensure
     raise Unicorn::ClientShutdown, "bytes_read=#{@bytes_read}", []
   end
 end