about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-02-19 05:09:53 -0700
committerEric Wong <e@80x24.org>2021-02-19 19:25:24 +0000
commit74e31aec6f66f695850bacf6379a034ea49a1d28 (patch)
tree60e0d3945958867570d1da9576eca0db964e87f8 /lib
parentfc69b9b91323c62e8abeaa8723f4d3fffdac0e27 (diff)
downloadpublic-inbox-74e31aec6f66f695850bacf6379a034ea49a1d28.tar.gz
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/NetReader.pm5
1 files 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