about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/MID.pm8
-rw-r--r--t/view.t9
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/PublicInbox/MID.pm b/lib/PublicInbox/MID.pm
index d097011b..c75aa0e1 100644
--- a/lib/PublicInbox/MID.pm
+++ b/lib/PublicInbox/MID.pm
@@ -20,6 +20,14 @@ sub mid_clean {
 # this is idempotent
 sub mid_compressed {
         my ($mid) = @_;
+
+        # XXX dirty hack! FIXME!
+        # Some HTTP servers (apache2 2.2.22-13+deb7u5 on my system)
+        # apparently do not handle "%25" in the URL path component correctly.
+        # I'm not yet sure if it's something weird with my rewrite rules
+        # or what; will need to debug...
+        return sha1_hex($mid) if (index($mid, '%') >= 0);
+
         return $mid if (length($mid) <= MID_MAX);
         sha1_hex($mid);
 }
diff --git a/t/view.t b/t/view.t
index 3107285c..463fc076 100644
--- a/t/view.t
+++ b/t/view.t
@@ -144,4 +144,13 @@ EOF
         like($html, qr/\bhi = bye\b/, "HTML output decoded QP");
 }
 
+
+{        # XXX dirty hack
+        use PublicInbox::MID qw/mid_compressed/;
+        like(mid_compressed('foo%bar@wtf'), qr/\A[a-f0-9]{40}\z/,
+                "percent always converted to sha1 to workaround buggy httpds");
+        is(mid_compressed('foobar@wtf'), 'foobar@wtf',
+                'regular MID not compressed');
+}
+
 done_testing();