about summary refs log tree commit homepage
path: root/lib/PublicInbox/MID.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-10-02 21:15:07 +0000
committerEric Wong <e@80x24.org>2015-10-02 21:19:39 +0000
commit22d8fcc3d37b9ce13a5088f1d0557078c9a84062 (patch)
treed142185177ea717dcf262dfe7d71aef7ab86544e /lib/PublicInbox/MID.pm
parente4db71c8ce14cbb61aea0f39e29cb61b23ffd109 (diff)
downloadpublic-inbox-22d8fcc3d37b9ce13a5088f1d0557078c9a84062.tar.gz
We use it as a general compressor for identifiers such as
subject paths, so using the "mid_" prefix probably is not
appropriate.
Diffstat (limited to 'lib/PublicInbox/MID.pm')
-rw-r--r--lib/PublicInbox/MID.pm19
1 files changed, 7 insertions, 12 deletions
diff --git a/lib/PublicInbox/MID.pm b/lib/PublicInbox/MID.pm
index 677a9d59..3d404ef8 100644
--- a/lib/PublicInbox/MID.pm
+++ b/lib/PublicInbox/MID.pm
@@ -4,7 +4,7 @@ package PublicInbox::MID;
 use strict;
 use warnings;
 use base qw/Exporter/;
-our @EXPORT_OK = qw/mid_clean mid_compress mid2path/;
+our @EXPORT_OK = qw/mid_clean id_compress mid2path/;
 use Digest::SHA qw/sha1_hex/;
 use constant MID_MAX => 40; # SHA-1 hex length
 
@@ -19,18 +19,13 @@ sub mid_clean {
 }
 
 # this is idempotent
-sub mid_compress {
-        my ($mid, $force) = @_;
+sub id_compress {
+        my ($id, $force) = @_;
 
-        # 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 (!$force && length($mid) <= MID_MAX);
-        sha1_hex($mid);
+        if ($force || $id =~ /[^\w\-]/ || length($id) > MID_MAX) {
+                return sha1_hex($id);
+        }
+        $id;
 }
 
 sub mid2path {