about summary refs log tree commit homepage
diff options
authorEric Wong <e@80x24.org>2015-05-20 22:15:48 +0000
committerEric Wong <e@80x24.org>2015-05-20 23:07:14 +0000
commita6077391bb62d0b13016084b0eea36b987afe8f0 (patch)
parenta4de697505d95858e6bd62b3bc0474688a3522d7 (diff)
Some process managers such as foreman and daemontools rely on
unicorn not daemonizing, but we still want to be able to process
SIGWINCH in that case.

stdout and stderr may be redirected to a pipe (for cronolog or
similar process), so those are less likely to be attached to a TTY
than stdin.  This also allows users to process SIGWINCH when running
inside a regular terminal if they redirect stdin to /dev/null.

Reported-by: Dan Moore <dan@vaporwa.re>
References: <etPan.555b4293.5b47a5b7.e617@danbookpro>
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/unicorn/http_server.rb b/lib/unicorn/http_server.rb
index 82747b8..cf8e122 100644
--- a/lib/unicorn/http_server.rb
+++ b/lib/unicorn/http_server.rb
@@ -294,13 +294,13 @@ class Unicorn::HttpServer
       when :USR2 # exec binary, stay alive in case something went wrong
       when :WINCH
-        if Unicorn::Configurator::RACKUP[:daemonized]
+        if $stdin.tty?
+          logger.info "SIGWINCH ignored because we're not daemonized"
+        else
           respawn = false
           logger.info "gracefully stopping all workers"
           self.worker_processes = 0
-        else
-          logger.info "SIGWINCH ignored because we're not daemonized"
       when :TTIN
         respawn = true