diff options
Diffstat (limited to 'lib/unicorn/worker.rb')
-rw-r--r-- | lib/unicorn/worker.rb | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/unicorn/worker.rb b/lib/unicorn/worker.rb index 5ddf379..d2445d5 100644 --- a/lib/unicorn/worker.rb +++ b/lib/unicorn/worker.rb @@ -1,4 +1,5 @@ # -*- encoding: binary -*- +# frozen_string_literal: false require "raindrops" # This class and its members can be considered a stable interface @@ -65,15 +66,15 @@ class Unicorn::Worker end # writing and reading 4 bytes on a pipe is atomic on all POSIX platforms # Do not care in the odd case the buffer is full, here. - @master.kgio_trywrite([signum].pack('l')) + @master.write_nonblock([signum].pack('l'), exception: false) rescue Errno::EPIPE # worker will be reaped soon end # this only runs when the Rack app.call is not running - # act like a listener - def kgio_tryaccept # :nodoc: - case buf = @to_io.kgio_tryread(4) + # act like Socket#accept_nonblock(exception: false) + def accept_nonblock(*_unused) # :nodoc: + case buf = @to_io.read_nonblock(4, exception: false) when String # unpack the buffer and trigger the signal handler signum = buf.unpack('l') @@ -82,7 +83,7 @@ class Unicorn::Worker when nil # EOF: master died, but we are at a safe place to exit fake_sig(:QUIT) when :wait_readable # keep waiting - return false + return :wait_readable end while true # loop, as multiple signals may be sent end |