diff options
author | Eric Wong <e@80x24.org> | 2021-10-22 08:22:45 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-10-22 19:07:37 +0000 |
commit | 96a5e841a169166457d9cf485e27a0d6cbe7ed75 (patch) | |
tree | 9b65be674bc25308f97bba782b39050cdf39cdb0 /lib | |
parent | 45f87867107724371d80a563099ab93eda1d919b (diff) | |
download | public-inbox-96a5e841a169166457d9cf485e27a0d6cbe7ed75.tar.gz |
In case an IMAP folder is deleted, just set an error and ignore it rather than creating an empty folder which we attempt to export keywords to for non-existent messages.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/PublicInbox/LeiExportKw.pm | 11 | ||||
-rw-r--r-- | lib/PublicInbox/NetReader.pm | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/PublicInbox/LeiExportKw.pm b/lib/PublicInbox/LeiExportKw.pm index ceeef7f2..12c8f406 100644 --- a/lib/PublicInbox/LeiExportKw.pm +++ b/lib/PublicInbox/LeiExportKw.pm @@ -67,9 +67,13 @@ sub input_path_url { $self->{lms}->each_src($input, \&export_kw_md, $self, $mdir); } elsif ($input =~ m!\Aimaps?://!i) { my $uri = PublicInbox::URIimap->new($input); - my $mic = $self->{nwr}->mic_for_folder($uri); - $self->{lms}->each_src($$uri, \&export_kw_imap, $self, $mic); - $mic->expunge; + if (my $mic = $self->{nwr}->mic_for_folder($uri)) { + $self->{lms}->each_src($$uri, \&export_kw_imap, + $self, $mic); + $mic->expunge; + } else { + $self->{lei}->child_error(0, "$input unavailable: $@"); + } } else { die "BUG: $input not supported" } } @@ -108,6 +112,7 @@ EOM $self->{nwr} = bless $net, 'PublicInbox::NetWriter'; $self->{imap_mod_kw} = $net->can($self->{-merge_kw} ? 'imap_add_kw' : 'imap_set_kw'); + $self->{nwr}->{-skip_creat} = 1; } my $ops = {}; $lei->{auth}->op_merge($ops, $self) if $lei->{auth}; diff --git a/lib/PublicInbox/NetReader.pm b/lib/PublicInbox/NetReader.pm index 4da19ab9..032b4fda 100644 --- a/lib/PublicInbox/NetReader.pm +++ b/lib/PublicInbox/NetReader.pm @@ -359,6 +359,7 @@ sub imap_common_init ($;$) { mic_for($self, $uri, $mic_common, $lei) // die "Unable to continue\n"; next unless $self->isa('PublicInbox::NetWriter'); + next if $self->{-skip_creat}; my $dst = $orig_uri->mailbox // next; next if $mic->exists($dst); # already exists $mic->create($dst) or die "CREATE $dst failed <$orig_uri>: $@"; |