From: Eric Wong <e@80x24.org>
Date: Sat, 27 Feb 2016 22:36:32 +0000 (+0000)
Subject: daemon: refresh before forking
X-Git-Tag: v1.0.0~696
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=10675ec65c81492fef322567db9f545d5b7d6d58;p=public-inbox.git

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.
---

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;