about summary refs log tree commit homepage
diff options
context:
space:
mode:
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)
treeb670d05121fe444947e541f00bfd7d8801ea0953
parenta4de697505d95858e6bd62b3bc0474688a3522d7 (diff)
downloadunicorn-a6077391bb62d0b13016084b0eea36b987afe8f0.tar.gz
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>
	<20150519232858.GA23515@dcvr.yhbt.net>
-rw-r--r--lib/unicorn/http_server.rb6
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
         reexec
       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"
           soft_kill_each_worker(:QUIT)
           self.worker_processes = 0
-        else
-          logger.info "SIGWINCH ignored because we're not daemonized"
         end
       when :TTIN
         respawn = true