]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Daemon.pm
daemon: re-enable SIGWINCH without setsid
[public-inbox.git] / lib / PublicInbox / Daemon.pm
index a25dd90fa407e81ac1a430474ee4779d7563c5d5..9125584b3b12b334a078eb1c9aec1ff4aa5f27af 100644 (file)
@@ -112,7 +112,6 @@ sub daemonize () {
        check_absolute('pid-file', $pid_file);
 
        chdir '/' or die "chdir failed: $!";
-       open(STDIN, '+<', '/dev/null') or die "redirect stdin failed: $!";
 
        return unless (defined $pid_file || defined $group || defined $user
                        || $daemonize);
@@ -145,6 +144,8 @@ sub daemonize () {
                die "could not fork: $!\n" unless defined $pid;
                exit if $pid;
 
+               open(STDIN, '+<', '/dev/null') or
+                                       die "redirect stdin failed: $!\n";
                open STDOUT, '>&STDIN' or die "redirect stdout failed: $!\n";
                open STDERR, '>&STDIN' or die "redirect stderr failed: $!\n";
                POSIX::setsid();
@@ -378,7 +379,7 @@ sub master_loop {
                        } elsif ($s eq 'WINCH') {
                                if (-t STDIN || -t STDOUT || -t STDERR) {
                                        warn
-"ignoring SIGWINCH while connected to terminal\n";
+"ignoring SIGWINCH since we are not daemonized\n";
                                        $SIG{WINCH} = 'IGNORE';
                                } else {
                                        $worker_processes = 0;
@@ -449,7 +450,8 @@ sub daemon_loop ($$) {
        $SIG{QUIT} = $SIG{INT} = $SIG{TERM} = *worker_quit;
        $SIG{USR1} = *reopen_logs;
        $SIG{HUP} = $refresh;
-       $SIG{$_} = 'DEFAULT' for qw(CHLD USR2 TTIN TTOU WINCH);
+       $SIG{CHLD} = 'DEFAULT';
+       $SIG{$_} = 'IGNORE' for qw(USR2 TTIN TTOU WINCH);
        # this calls epoll_create:
        @listeners = map {
                PublicInbox::Listener->new($_, $post_accept)