diff options
author | Eric Wong <e@80x24.org> | 2021-09-21 07:41:50 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-09-21 19:18:35 +0000 |
commit | 8eaa877179910dce156179e9025d1e0df34089d8 (patch) | |
tree | 989189ccfd54d820144ce9593a9694fa18522d67 /lib/PublicInbox/LeiInspect.pm | |
parent | 0c385e6500f26babc47a0768b730ea38e290a5f5 (diff) | |
download | public-inbox-8eaa877179910dce156179e9025d1e0df34089d8.tar.gz |
NNTP servers, IMAP servers, and various MUAs may recycle "unique" identifiers due to software bugs or careless BOFHs. Warn about them, but always be prepared to account for them.
Diffstat (limited to 'lib/PublicInbox/LeiInspect.pm')
-rw-r--r-- | lib/PublicInbox/LeiInspect.pm | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/PublicInbox/LeiInspect.pm b/lib/PublicInbox/LeiInspect.pm index ab2c98d9..722ba5b2 100644 --- a/lib/PublicInbox/LeiInspect.pm +++ b/lib/PublicInbox/LeiInspect.pm @@ -32,11 +32,9 @@ sub inspect_imap_uid ($$) { my ($lei, $uid_uri) = @_; my $ent = {}; my $lms = $lei->lms or return $ent; - my $oidhex = $lms->imap_oid($lei, $uid_uri); - if (ref(my $err = $oidhex)) { # arg2folder error - $lei->qerr(@{$err->{qerr}}) if $err->{qerr}; - } - $ent->{$$uid_uri} = $oidhex; + my @oidhex = $lms->imap_oidhex($lei, $uid_uri); + $ent->{$$uid_uri} = @oidhex == 1 ? $oidhex[0] : + ((@oidhex == 0) ? undef : \@oidhex); $ent; } @@ -54,8 +52,10 @@ sub inspect_nntp_range { } $end //= $beg; for my $art ($beg..$end) { - my $oidbin = $lms->imap_oidbin($folders->[0], $art); - $ent->{$art} = $oidbin ? unpack('H*', $oidbin) : undef; + my @oidhex = map { unpack('H*', $_) } + $lms->num_oidbin($folders->[0], $art); + $ent->{$art} = @oidhex == 1 ? $oidhex[0] : + ((@oidhex == 0) ? undef : \@oidhex); } $ret; } |