about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/ContentId.pm3
-rw-r--r--t/v2writable.t10
2 files changed, 9 insertions, 4 deletions
diff --git a/lib/PublicInbox/ContentId.pm b/lib/PublicInbox/ContentId.pm
index 9082b769..279eec0c 100644
--- a/lib/PublicInbox/ContentId.pm
+++ b/lib/PublicInbox/ContentId.pm
@@ -21,7 +21,8 @@ sub content_digest ($) {
         # in SearchIdx, so treat them the same for this:
         my %seen;
         foreach my $mid (@{mids($hdr)}) {
-                $dig->add('mid: '.$mid);
+                # do NOT consider the Message-ID as part of the content_id
+                # if we got here, we've already got Message-ID reuse
                 $seen{$mid} = 1;
         }
         foreach my $mid (@{references($hdr)}) {
diff --git a/t/v2writable.t b/t/v2writable.t
index 85b48d2a..6cabf0d5 100644
--- a/t/v2writable.t
+++ b/t/v2writable.t
@@ -61,11 +61,15 @@ if ('ensure git configs are correct') {
 
         @warn = ();
         $mime->header_set('Message-Id', '<a-mid@b>', '<c@d>');
-        ok($im->add($mime), 'secondary MID used');
+        is($im->add($mime), undef, 'secondary MID ignored if first matches');
+        my $sec = PublicInbox::MIME->new($mime->as_string);
+        $sec->header_set('Date');
+        $sec->header_set('Message-Id', '<a-mid@b>', '<c@d>');
+        ok($im->add($sec), 'secondary MID used if data is different');
         like(join(' ', @warn), qr/mismatched/, 'warned about mismatch');
         like(join(' ', @warn), qr/alternative/, 'warned about alternative');
         is_deeply([ '<a-mid@b>', '<c@d>' ],
-                [ $mime->header_obj->header_raw('Message-Id') ],
+                [ $sec->header_obj->header_raw('Message-Id') ],
                 'no new Message-Id added');
 
         my $sane_mid = qr/\A<[\w\-]+\@localhost>\z/;
@@ -85,7 +89,7 @@ if ('ensure git configs are correct') {
         my $gen = PublicInbox::Import::digest2mid(content_digest($mime));
         unlike($gen, qr![\+/=]!, 'no URL-unfriendly chars in Message-Id');
         my $fake = PublicInbox::MIME->new($mime->as_string);
-        $fake->header_set('Message-Id', $gen);
+        $fake->header_set('Message-Id', "<$gen>");
         ok($im->add($fake), 'fake added easily');
         is_deeply(\@warn, [], 'no warnings from a faker');
         ok($im->add($mime), 'random MID made');