From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH 4/6] net_reader: handle single-message IMAP mailboxes
Date: Fri, 19 Feb 2021 05:09:53 -0700 [thread overview]
Message-ID: <20210219120955.13891-5-e@80x24.org> (raw)
In-Reply-To: <20210219120955.13891-1-e@80x24.org>
Due to an off-by-one error, we were unable to read mailboxes
with only a single message of UID:1. Without this fix, the
message with UID:1 could only be read after UID:2 was created;
so there's no permanent data loss as long as a new message
showed up.
This affects all releases of public-inbox-watch with IMAP
support, though it probably went unnoticed because single
message inboxes are rare.
---
lib/PublicInbox/NetReader.pm | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/PublicInbox/NetReader.pm b/lib/PublicInbox/NetReader.pm
index 61ea538b..22ba4be7 100644
--- a/lib/PublicInbox/NetReader.pm
+++ b/lib/PublicInbox/NetReader.pm
@@ -353,17 +353,18 @@ sub _imap_fetch_all ($$$) {
PublicInbox::IMAPTracker->new($url) : 0;
my ($l_uidval, $l_uid) = $itrk ? $itrk->get_last : ();
$l_uidval //= $r_uidval; # first time
- $l_uid //= 1;
+ $l_uid //= 0;
if ($l_uidval != $r_uidval) {
return "E: $url UIDVALIDITY mismatch\n".
"E: local=$l_uidval != remote=$r_uidval";
}
my $r_uid = $r_uidnext - 1;
- if ($l_uid != 1 && $l_uid > $r_uid) {
+ if ($l_uid > $r_uid) {
return "E: $url local UID exceeds remote ($l_uid > $r_uid)\n".
"E: $url strangely, UIDVALIDLITY matches ($l_uidval)\n";
}
return if $l_uid >= $r_uid; # nothing to do
+ $l_uid ||= 1;
warn "# $url fetching UID $l_uid:$r_uid\n" unless $self->{quiet};
$mic->Uid(1); # the default, we hope
next prev parent reply other threads:[~2021-02-19 12:09 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-19 12:09 [PATCH 0/6] lei: start working on IMAP writes Eric Wong
2021-02-19 12:09 ` [PATCH 1/6] t/lei-externals: favor "-o format:$PATHNAME" over "-f" Eric Wong
2021-02-19 12:09 ` [PATCH 2/6] lei_to_mail: get rid of empty _post_augment_maildir Eric Wong
2021-02-19 12:09 ` [PATCH 3/6] tests: require Mail::IMAPClient for IMAP tests Eric Wong
2021-02-19 12:09 ` Eric Wong [this message]
2021-02-19 12:09 ` [PATCH 5/6] net_writer: start implementing IMAP write support Eric Wong
2021-02-19 12:09 ` [PATCH 6/6] URIimap: overload "" to ->as_string Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://public-inbox.org/README
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210219120955.13891-5-e@80x24.org \
--to=e@80x24.org \
--cc=meta@public-inbox.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).