about summary refs log tree commit homepage
path: root/lib/PublicInbox/Import.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2020-12-14 11:42:40 +0000
committerEric Wong <e@80x24.org>2020-12-19 09:32:08 +0000
commit6cdb84af2c75b3c66a35c8c4973f455da15dd0a4 (patch)
tree3069edc4159050252f1a6d15295b01a566f367d2 /lib/PublicInbox/Import.pm
parent478a8d308d952af5ae957136c2ab09455f2a767c (diff)
downloadpublic-inbox-6cdb84af2c75b3c66a35c8c4973f455da15dd0a4.tar.gz
Still unstable, this builds off the equally unstable extindex :P

This will be used for caching/memoization of traditional mail
stores (IMAP, Maildir, etc) while providing indexing via Xapian,
along with compression, and checksumming from git.

Most notably, this adds the ability to add/remove per-message
keywords (draft, seen, flagged, answered) as described in the
JMAP specification (RFC 8621 section 4.1.1).

We'll use `.' (a single period) as an $eidx_key since it's an
invalid {inboxdir} or {newsgroup} name.
Diffstat (limited to 'lib/PublicInbox/Import.pm')
-rw-r--r--lib/PublicInbox/Import.pm4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/PublicInbox/Import.pm b/lib/PublicInbox/Import.pm
index 2cb4896a..b7be4c46 100644
--- a/lib/PublicInbox/Import.pm
+++ b/lib/PublicInbox/Import.pm
@@ -405,6 +405,10 @@ sub add {
         if ($smsg) {
                 $smsg->{blob} = $self->get_mark(":$blob");
                 $smsg->{raw_bytes} = $n;
+                if (my $oidx = delete $smsg->{-oidx}) { # used by LeiStore
+                        return if $oidx->blob_exists($smsg->{blob});
+                }
+                # XXX do we need this? it's in git at this point
                 $smsg->{-raw_email} = \$raw_email;
         }
         my $ref = $self->{ref};