diff options
author | Eric Wong <e@80x24.org> | 2019-05-26 22:15:44 +0000 |
---|---|---|
committer | Eric Wong <bofh@yhbt.net> | 2024-01-15 01:45:38 +0000 |
commit | 31d0539878b0e2247a4f98bc0241e05d4738e500 (patch) | |
tree | a3bf7466aeaeaddb7bc77f6129a9ca332c705140 /lib/unicorn/http_server.rb | |
parent | a86f5380f04ceba6ffb8e25caa0bdea8a37932a6 (diff) | |
download | unicorn-31d0539878b0e2247a4f98bc0241e05d4738e500.tar.gz |
It's fairly easy given unicorn was designed with synchronous I/O in mind. The overhead of backtraces from EOFError on readpartial should be rare given our requirement to only accept requests from fast, reliable clients on LAN (e.g. nginx or yet-another-horribly-named-server).
Diffstat (limited to 'lib/unicorn/http_server.rb')
-rw-r--r-- | lib/unicorn/http_server.rb | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/unicorn/http_server.rb b/lib/unicorn/http_server.rb index f1b4a54..2f1eb1b 100644 --- a/lib/unicorn/http_server.rb +++ b/lib/unicorn/http_server.rb @@ -389,12 +389,13 @@ class Unicorn::HttpServer # the Ruby itself and not require a separate malloc (on 32-bit MRI 1.9+). # Most reads are only one byte here and uncommon, so it's not worth a # persistent buffer, either: - @self_pipe[0].kgio_tryread(11) + @self_pipe[0].read_nonblock(11, exception: false) end def awaken_master return if $$ != @master_pid - @self_pipe[1].kgio_trywrite('.') # wakeup master process from select + # wakeup master process from select + @self_pipe[1].write_nonblock('.', exception: false) end # reaps all unreaped workers @@ -565,7 +566,8 @@ class Unicorn::HttpServer 500 end if code - client.kgio_trywrite(err_response(code, @request.response_start_sent)) + code = err_response(code, @request.response_start_sent) + client.write_nonblock(code, exception: false) end client.close rescue |