about summary refs log tree commit homepage
path: root/lib/PublicInbox/Daemon.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-05-21 10:37:09 +0000
committerEric Wong <e@80x24.org>2016-05-21 10:37:09 +0000
commit1303b203bc65454476126c0c47f1ca1b0a09c8c6 (patch)
tree8d3c3f6147d33f76a6531481061cb31684ddaba0 /lib/PublicInbox/Daemon.pm
parent57b18b44e1770b163aba55eacf53195a8305398e (diff)
downloadpublic-inbox-1303b203bc65454476126c0c47f1ca1b0a09c8c6.tar.gz
We shouldn't need sigprocmask unless we're running multiple
native threads or using vfork, neither of which is the case,
here.
Diffstat (limited to 'lib/PublicInbox/Daemon.pm')
-rw-r--r--lib/PublicInbox/Daemon.pm27
1 files changed, 8 insertions, 19 deletions
diff --git a/lib/PublicInbox/Daemon.pm b/lib/PublicInbox/Daemon.pm
index dc810106..3d895b09 100644
--- a/lib/PublicInbox/Daemon.pm
+++ b/lib/PublicInbox/Daemon.pm
@@ -141,15 +141,15 @@ sub daemonize () {
         };
 
         if ($daemonize) {
-                my ($pid, $err) = do_fork();
-                die "could not fork: $err\n" unless defined $pid;
+                my $pid = fork;
+                die "could not fork: $!\n" unless defined $pid;
                 exit if $pid;
 
                 open STDOUT, '>&STDIN' or die "redirect stdout failed: $!\n";
                 open STDERR, '>&STDIN' or die "redirect stderr failed: $!\n";
                 POSIX::setsid();
-                ($pid, $err) = do_fork();
-                die "could not fork: $err\n" unless defined $pid;
+                $pid = fork;
+                die "could not fork: $!\n" unless defined $pid;
                 exit if $pid;
         }
         if (defined $pid_file) {
@@ -278,9 +278,9 @@ sub upgrade () {
                 $pid_file .= '.oldbin';
                 write_pid($pid_file);
         }
-        my ($pid, $err) = do_fork();
+        my $pid = fork;
         unless (defined $pid) {
-                warn "fork failed: $err\n";
+                warn "fork failed: $!\n";
                 return;
         }
         if ($pid == 0) {
@@ -305,17 +305,6 @@ sub kill_workers ($) {
         }
 }
 
-sub do_fork () {
-        my $new = POSIX::SigSet->new;
-        $new->fillset;
-        my $old = POSIX::SigSet->new;
-        POSIX::sigprocmask(&POSIX::SIG_BLOCK, $new, $old) or die "SIG_BLOCK: $!";
-        my $pid = fork;
-        my $err = $!;
-        POSIX::sigprocmask(&POSIX::SIG_SETMASK, $old) or die "SIG_SETMASK: $!";
-        ($pid, $err);
-}
-
 sub upgrade_aborted ($) {
         my ($p) = @_;
         warn "reexec PID($p) died with: $?\n";
@@ -418,9 +407,9 @@ sub master_loop {
                         $n = $worker_processes;
                 }
                 foreach my $i ($n..($worker_processes - 1)) {
-                        my ($pid, $err) = do_fork();
+                        my $pid = fork;
                         if (!defined $pid) {
-                                warn "failed to fork worker[$i]: $err\n";
+                                warn "failed to fork worker[$i]: $!\n";
                         } elsif ($pid == 0) {
                                 $set_user->() if $set_user;
                                 return $p0; # run normal work code