diff options
author | Eric Wong <e@80x24.org> | 2017-02-10 19:01:39 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2017-02-10 19:03:56 +0000 |
commit | a814858366f4ceab4ebe783be35e523efe9798b4 (patch) | |
tree | eafaa033c966ab422bb749094215d867bbae613d | |
parent | d89381efe5b6f4d1233aba16907bb457ff5f1f13 (diff) | |
download | unicorn-a814858366f4ceab4ebe783be35e523efe9798b4.tar.gz |
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.
-rw-r--r-- | lib/unicorn/tee_input.rb | 4 |
1 files changed, 1 insertions, 3 deletions
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 |