]> Sergey Matveev's repositories - public-inbox.git/commitdiff
view: account for threads lacking a common parent
authorEric Wong <e@80x24.org>
Wed, 6 Apr 2016 08:23:15 +0000 (08:23 +0000)
committerEric Wong <e@80x24.org>
Wed, 6 Apr 2016 08:25:09 +0000 (08:25 +0000)
In the per-message view, we still need to account for threads
lacking a common parent.  This can happen when threads are
broken by some broken clients or if somebody sends the same
message twice to the same inbox with a different Message-ID.

lib/PublicInbox/View.pm

index c25c5d575f54f27264e48c7d28579cd8d2443598..070240ec664e0241f0ad194b751ae16336b37ce0 100644 (file)
@@ -819,13 +819,18 @@ sub inline_dump {
                my $mid = mid_clean($hdr->header_raw('Message-ID'));
                _inline_header($dst, $state, $upfx, $hdr, $level);
        } else {
-               my $dot = $level == 0 ? '' : '` ';
-               my $pfx = '      [not found] ' .  indent_for($level) . $dot;
-               $$dst .= $pfx;
-               my $mid = PublicInbox::Hval->new_msgid($node->messageid);
-               my $href = $mid->as_href;
-               my $html = $mid->as_html;
-               $$dst .= qq{&lt;<a\nhref="$upfx../$href/">$html</a>&gt;\n};
+               my $mid = $node->messageid;
+               if ($mid eq 'subject dummy') {
+                       $$dst .= "\t[no common parent]\n";
+               } else {
+                       $$dst .= '      [not found] ';
+                       my $dot = $level == 0 ? '' : '` ';
+                       $$dst .= indent_for($level) . $dot;
+                       $mid = PublicInbox::Hval->new_msgid($mid);
+                       my $href = "$upfx../" . $mid->as_href . '/';
+                       my $html = $mid->as_html;
+                       $$dst .= qq{&lt;<a\nhref="$href">$html</a>&gt;\n};
+               }
        }
        inline_dump($dst, $state, $upfx, $node->child, $level+1);
        inline_dump($dst, $state, $upfx, $node->next, $level);