]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiToMail.pm
lei_mail_sync: rely on flock(2), avoid IPC
[public-inbox.git] / lib / PublicInbox / LeiToMail.pm
index 1221d3c77e1f6a7d521017d7414a44780763bf78..d3253d9b01139bf6a2ea7b29cd0a5619485d2f41 100644 (file)
@@ -361,6 +361,7 @@ sub _v2_write_cb ($$) {
                $eml //= PublicInbox::Eml->new($bref);
                return if $dedupe && $dedupe->is_dup($eml, $smsg);
                $lei->{v2w}->ipc_do('add', $eml); # V2Writable->add
+               ++$lei->{-nr_write};
        }
 }
 
@@ -396,7 +397,8 @@ sub new {
        } elsif ($fmt =~ /\Aimaps?\z/) {
                require PublicInbox::NetWriter;
                require PublicInbox::URIimap;
-               my $net = PublicInbox::NetWriter->new;
+               # {net} may exist from "lei up" for auth
+               my $net = $lei->{net} // PublicInbox::NetWriter->new;
                $net->{quiet} = $lei->{opt}->{quiet};
                my $uri = PublicInbox::URIimap->new($dst)->canonical;
                $net->add_url($$uri);
@@ -408,9 +410,9 @@ sub new {
                $lei->{net} = $net;
                $self->{base_type} = 'imap';
                $lei->{opt}->{save} //= \1 if $lei->{cmd} eq 'q';
-       } elsif ($fmt eq 'text') {
+       } elsif ($fmt eq 'text' || $fmt eq 'reply') {
                require PublicInbox::LeiViewText;
-               $lei->{lvt} = PublicInbox::LeiViewText->new($lei);
+               $lei->{lvt} = PublicInbox::LeiViewText->new($lei, $fmt);
                $self->{base_type} = 'text';
                @conflict = qw(mua save);
        } elsif ($fmt eq 'v2') {
@@ -456,8 +458,10 @@ sub _pre_augment_maildir {
 
 sub clobber_dst_prepare ($;$) {
        my ($lei, $f) = @_;
-       my $wait = (defined($f) && $lei->{sto}) ?
-                       $lei->{sto}->ipc_do('lms_forget_folders', $f) : undef;
+       if (my $lms = defined($f) ? $lei->lms : undef) {
+               $lms->lms_write_prepare;
+               $lms->forget_folders($f);
+       }
        my $dedupe = $lei->{dedupe} or return;
        $dedupe->reset_dedupe if $dedupe->can('reset_dedupe');
 }
@@ -783,6 +787,4 @@ sub net_merge_all_done {
        $self->wq_close(1);
 }
 
-no warnings 'once'; # the following works even when LeiAuth is lazy-loaded
-*net_merge_all = \&PublicInbox::LeiAuth::net_merge_all;
 1;