- my $l2m = $lei->{l2m} or $dedupe->prepare_dedupe;
- if ($l2m && !$ibxish) { # remote https?:// mboxrd
- delete $l2m->{-wq_s1};
- my $g2m = $l2m->can('git_to_mail');
- my $wcb = $l2m->write_cb($lei);
- sub {
- my ($smsg, undef, $eml) = @_; # no mitem in $_[1]
- $wcb->(undef, $smsg, $eml);
- };
- } 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
- # 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';
- delete @$lei_ipc{qw(l2m opt mset_opt cmd)};
- my $git = $ibxish->git; # (LeiXSearch|Inbox|ExtSearch)->git
- $self->{git} = $git;
- my $git_dir = $git->{git_dir};
- sub {
- my ($smsg, $mitem) = @_;
- $smsg->{pct} = get_pct($mitem) if $mitem;
- $l2m->wq_do('write_mail', \@io, $git_dir, $smsg,
- $lei_ipc);
- }
- } elsif ($l2m) {
- my $wcb = $l2m->write_cb($lei);
- my $git = $ibxish->git; # (LeiXSearch|Inbox|ExtSearch)->git
- $self->{git} = $git; # for ovv_atexit_child
- my $g2m = $l2m->can('git_to_mail');