about summary refs log tree commit homepage
path: root/lib/PublicInbox/WWW.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-09-03 03:00:28 +0000
committerEric Wong <e@80x24.org>2015-09-03 03:06:00 +0000
commit43238d3688a51d98ce47151173aa7971e231a3bb (patch)
treeb1fc31be8763eefcc2393d1fa44ad75581059fa1 /lib/PublicInbox/WWW.pm
parent793da75fbcb5a2c546b3d582f39761fff3d8292d (diff)
downloadpublic-inbox-43238d3688a51d98ce47151173aa7971e231a3bb.tar.gz
Provide a fallback for legacy SHA-1 messages, but do not
advertise shorter URLs anymore for data portability concerns.

This fixes a regression introduced in
commit 81a9c1b476987d845b340ab9013d26cf4487cb9a
("search: disable Message-ID compression in Xapian")
which ended up breaking thread-related endpoints for
large Message-IDs, as lookups on the SHA-1 message no longer
worked.
Diffstat (limited to 'lib/PublicInbox/WWW.pm')
-rw-r--r--lib/PublicInbox/WWW.pm14
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index 16fd16aa..11b54027 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -116,8 +116,18 @@ sub invalid_list {
 sub invalid_list_mid {
         my ($ctx, $listname, $mid) = @_;
         my $ret = invalid_list($ctx, $listname, $mid);
-        $ctx->{mid} = uri_unescape($mid) unless $ret;
-        $ret;
+        return $ret if $ret;
+
+        $ctx->{mid} = $mid = uri_unescape($mid);
+        if ($mid =~ /\A[a-f0-9]{40}\z/) {
+                if ($mid = mid2blob($ctx)) {
+                        require Email::Simple;
+                        use PublicInbox::MID qw/mid_clean/;
+                        $mid = Email::Simple->new($mid);
+                        $ctx->{mid} = mid_clean($mid->header('Message-ID'));
+                }
+        }
+        undef;
 }
 
 # /$LISTNAME/new.atom                     -> Atom feed, includes replies