From 401803a9e717ba05c8a73f9bf60d1175b316bb77 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 29 Jan 2021 12:42:57 +0500 Subject: lei: less error-prone FD mapping Keeping track of non-standard FDs gets tricky, so make it easier by relying on st_dev/st_ino mapping in the transmitted objects. We'll keep using numbers for the standard FDs since we need to be able to easily redirect them in the producer (main daemon) process for (gzip|bzip2|xz) if writing to a compressed mbox. --- lib/PublicInbox/LeiOverview.pm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'lib/PublicInbox/LeiOverview.pm') diff --git a/lib/PublicInbox/LeiOverview.pm b/lib/PublicInbox/LeiOverview.pm index f9a28138..c67e2747 100644 --- a/lib/PublicInbox/LeiOverview.pm +++ b/lib/PublicInbox/LeiOverview.pm @@ -220,14 +220,13 @@ sub ovv_each_smsg_cb { # runs in wq worker usually }; } elsif ($l2m && $l2m->{-wq_s1}) { my ($lei_ipc, @io) = $lei->atfork_parent_wq($l2m); - # n.b. $io[0] = qry_status_wr, $io[1] = mbox|stdout, - # $io[4] becomes a notification pipe that triggers EOF + # $io[-1] becomes a notification pipe that triggers EOF # in this wq worker when all outstanding ->write_mail # calls are complete - die "BUG: \$io[4] $io[4] unexpected" if $io[4]; - pipe($l2m->{each_smsg_done}, $io[4]) or die "pipe: $!"; - fcntl($io[4], 1031, 4096) if $^O eq 'linux'; + pipe($l2m->{each_smsg_done}, $io[$#io + 1]) or die "pipe: $!"; + fcntl($io[-1], 1031, 4096) if $^O eq 'linux'; # F_SETPIPE_SZ delete @$lei_ipc{qw(l2m opt mset_opt cmd)}; + $lei_ipc->{each_smsg_not_done} = $#io; my $git = $ibxish->git; # (LeiXSearch|Inbox|ExtSearch)->git $self->{git} = $git; my $git_dir = $git->{git_dir}; -- cgit v1.2.3-24-ge0c7