lib/PublicInbox/LEI.pm | 5 ++++- lib/PublicInbox/LeiToMail.pm | 1 + lib/PublicInbox/LeiXSearch.pm | 9 ++++++++- diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index f6bc920d4cae9cecf849eb648683703b881eb93e..ba744ef36de5238845eb18ab6e2269e534e2060a 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -298,6 +298,9 @@ } if (my $pgr = $self->{pgr}) { push @$tcafc, @$pgr[1,2]; } + if (my $old_1 = $self->{old_1}) { + push @$tcafc, $old_1; + } for my $f (qw(lxs l2m)) { my $ipc = $self->{$f} or next; push @$tcafc, grep { defined } @@ -340,7 +343,7 @@ if (my $dedupe = delete $ret->{dedupe}) { $ret->{dedupe} = $wq->deep_clone($dedupe); } $self->{env} = $env; - delete @$ret{qw(-lei_store cfg pgr lxs)}; # keep l2m + delete @$ret{qw(-lei_store cfg old_1 pgr lxs)}; # keep l2m my @io = delete @$ret{0..2}; $io[3] = delete($ret->{sock}) // $io[2]; my $l2m = $ret->{l2m}; diff --git a/lib/PublicInbox/LeiToMail.pm b/lib/PublicInbox/LeiToMail.pm index 438fb17582d9400467e0ffff9118e252795587c0..5f38add1179c946e4209b73527ce656da25e219c 100644 --- a/lib/PublicInbox/LeiToMail.pm +++ b/lib/PublicInbox/LeiToMail.pm @@ -405,6 +405,7 @@ if (-f _ && !$lei->{opt}->{augment} and !unlink($dst)) { $! == ENOENT or die "unlink($dst): $!"; } open my $out, $mode, $dst or die "open($dst): $!"; + $lei->{old_1} = $lei->{1}; $lei->{1} = $out; } # Perl does SEEK_END even with O_APPEND :< diff --git a/lib/PublicInbox/LeiXSearch.pm b/lib/PublicInbox/LeiXSearch.pm index d32fe09afa5fe51414dab17b2235ab739bbcc0ae..8d36bca96b17285830beb37cf67978e9fc36dfe4 100644 --- a/lib/PublicInbox/LeiXSearch.pm +++ b/lib/PublicInbox/LeiXSearch.pm @@ -252,7 +252,14 @@ $wq->wq_wait_old; } $lei->{ovv}->ovv_end($lei); if ($has_l2m) { # close() calls LeiToMail reap_compress - close(delete($lei->{1})) if $lei->{1}; + if (my $out = delete $lei->{old_1}) { + if (my $mbout = $lei->{1}) { + close($mbout) or return $lei->fail(<<""); +Error closing $lei->{ovv}->{dst}: $! + + } + $lei->{1} = $out; + } $lei->start_mua; } $lei->dclose;