diff options
author | Eric Wong <e@80x24.org> | 2020-08-31 04:41:40 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2020-09-01 00:19:21 +0000 |
commit | 0877ff2595baf86c10b27b6dd2364f5235457430 (patch) | |
tree | fb66681321905423a411b5f5ad15b593a93a04bb /lib/PublicInbox/Daemon.pm | |
parent | 823dbcacf7829fd0f42748ae7712a76fa4c64a76 (diff) | |
download | public-inbox-0877ff2595baf86c10b27b6dd2364f5235457430.tar.gz |
ParentPipe was a subset of EOFpipe, except EOFpipe correctly accounts for theoretical(*) spurious wakeups on the pipe. (*) AFAIK, spurious wakeups are/were more likely on TCP sockets due to checksum failures, something that's not a problem on local pipes. We're also not sharing pipes like we do with listen sockets on accept(2), so there's no chance of another process grabbing bytes (unless we have bugs in our code).
Diffstat (limited to 'lib/PublicInbox/Daemon.pm')
-rw-r--r-- | lib/PublicInbox/Daemon.pm | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/PublicInbox/Daemon.pm b/lib/PublicInbox/Daemon.pm index 45475183..000ba169 100644 --- a/lib/PublicInbox/Daemon.pm +++ b/lib/PublicInbox/Daemon.pm @@ -17,7 +17,7 @@ STDERR->autoflush(1); use PublicInbox::DS qw(now); use PublicInbox::Syscall qw($SFD_NONBLOCK); require PublicInbox::Listener; -require PublicInbox::ParentPipe; +use PublicInbox::EOFpipe; use PublicInbox::Sigfd; my @CMD; my ($set_user, $oldset); @@ -468,8 +468,6 @@ sub master_quit ($) { sub master_loop { pipe(my ($p0, $p1)) or die "failed to create parent-pipe: $!"; - # 1031: F_SETPIPE_SZ, 4096: page size - fcntl($p1, 1031, 4096) if $^O eq 'linux'; my $set_workers = $worker_processes; reopen_logs(); my $ignore_winch; @@ -603,7 +601,7 @@ sub daemon_loop ($$$$) { if ($worker_processes > 0) { $refresh->(); # preload by default my $fh = master_loop(); # returns if in child process - PublicInbox::ParentPipe->new($fh, \&worker_quit); + PublicInbox::EOFpipe->new($fh, \&worker_quit, undef); } else { reopen_logs(); $set_user->() if $set_user; |