lib/PublicInbox/MID.pm | 8 ++++++++ t/view.t | 9 +++++++++ diff --git a/lib/PublicInbox/MID.pm b/lib/PublicInbox/MID.pm index d097011bf4ae21b58075def04f2306cd66a22f54..c75aa0e166ec3709515d0a3825c789006ec5d0fd 100644 --- a/lib/PublicInbox/MID.pm +++ b/lib/PublicInbox/MID.pm @@ -20,6 +20,14 @@ # 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 3107285c1dd0dbfb7e4c6cf7a937ca291db23f00..463fc0764d9a9e2587e72a038c719a5926d10255 100644 --- a/t/view.t +++ b/t/view.t @@ -144,4 +144,13 @@ like($orig, qr/hi =3D bye=/, "our test used QP correctly"); 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();