diff options
author | Jeremy Evans <code@jeremyevans.net> | 2017-03-13 08:28:54 -0700 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2017-03-13 19:11:27 +0000 |
commit | d0afe48696a643a5d7400b3db1d68cfd81e8cd38 (patch) | |
tree | 45628f8dd1abe65f121767465b8761c8fac3ad15 | |
parent | ea1a4360d66a833d75fbd887388d8cd4fe4ae299 (diff) | |
download | unicorn-d0afe48696a643a5d7400b3db1d68cfd81e8cd38.tar.gz |
This reduces the stack depth, making GC more efficient.
-rw-r--r-- | lib/unicorn/http_server.rb | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/lib/unicorn/http_server.rb b/lib/unicorn/http_server.rb index a5bd2c4..40a154d 100644 --- a/lib/unicorn/http_server.rb +++ b/lib/unicorn/http_server.rb @@ -541,14 +541,12 @@ class Unicorn::HttpServer worker = Unicorn::Worker.new(worker_nr) before_fork.call(self, worker) - pid = if @worker_exec - worker_spawn(worker) - else - fork do - after_fork_internal - worker_loop(worker) - exit - end + pid = @worker_exec ? worker_spawn(worker) : fork + + unless pid + after_fork_internal + worker_loop(worker) + exit end @workers[pid] = worker |