From a814858366f4ceab4ebe783be35e523efe9798b4 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 10 Feb 2017 19:01:39 +0000 Subject: tee_input: simplify condition for IO#write IO#write already elides the write(2) syscall for empty buffers, so there's no need to complicate our instruction sequence footprint for the rare case of an empty buffer. The only cases a Rack app will have an empty buffer are: 1) `env['rack.input'].read` without args 2) `env['rack.input'].gets` Neither of these calls are safe for server-independent Rack apps as the client can OOM the app. unicorn itself provides no facility for limiting maximum rack.input size. Instead, unicorn relies on nginx to limit input size using the client_max_body_size directive. --- lib/unicorn/tee_input.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'lib/unicorn') diff --git a/lib/unicorn/tee_input.rb b/lib/unicorn/tee_input.rb index 3c6d18a..6f66162 100644 --- a/lib/unicorn/tee_input.rb +++ b/lib/unicorn/tee_input.rb @@ -125,9 +125,7 @@ private end def tee(buffer) - if buffer && buffer.size > 0 - @tmp.write(buffer) - end + @tmp.write(buffer) if buffer buffer end end -- cgit v1.2.3-24-ge0c7