From 10675ec65c81492fef322567db9f545d5b7d6d58 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 27 Feb 2016 22:36:32 +0000 Subject: daemon: refresh before forking This means we always load the PSGI server code early for -httpd. This may make things less compatible with existing PSGI/Plack apps, but we prioritize our httpd for the uses of public-inbox itself, first. And any existing PSGI/Plack app which wants to may adapt themselves to being preload-friendly. --- lib/PublicInbox/Daemon.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/PublicInbox/Daemon.pm b/lib/PublicInbox/Daemon.pm index 2878e33b..b8482d36 100644 --- a/lib/PublicInbox/Daemon.pm +++ b/lib/PublicInbox/Daemon.pm @@ -363,6 +363,7 @@ sub daemon_loop ($$) { my ($refresh, $post_accept) = @_; my $parent_pipe; if ($worker_processes > 0) { + $refresh->(); # preload by default $parent_pipe = master_loop(); # returns if in child process my $fd = fileno($parent_pipe); Danga::Socket->AddOtherFds($fd => sub { kill('TERM', $$) } ); @@ -370,10 +371,10 @@ sub daemon_loop ($$) { reopen_logs(); $set_user->() if $set_user; $SIG{USR2} = sub { worker_quit() if upgrade() }; + $refresh->(); } $uid = $gid = undef; reopen_logs(); - $refresh->(); $SIG{QUIT} = $SIG{INT} = $SIG{TERM} = *worker_quit; $SIG{USR1} = *reopen_logs; $SIG{HUP} = $refresh; -- cgit v1.2.3-24-ge0c7