about summary refs log tree commit homepage
path: root/lib/PublicInbox/LeiOverview.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-01-29 12:42:57 +0500
committerEric Wong <e@80x24.org>2021-01-30 01:08:19 +0000
commit401803a9e717ba05c8a73f9bf60d1175b316bb77 (patch)
treea8c41470d994cddd362dc45071c5df836ee48fe2 /lib/PublicInbox/LeiOverview.pm
parent89c34c8ea543ade16e5a68bf1c2b83bf885c46ea (diff)
downloadpublic-inbox-401803a9e717ba05c8a73f9bf60d1175b316bb77.tar.gz
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.
Diffstat (limited to 'lib/PublicInbox/LeiOverview.pm')
-rw-r--r--lib/PublicInbox/LeiOverview.pm9
1 files changed, 4 insertions, 5 deletions
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};