]> Sergey Matveev's repositories - public-inbox.git/commitdiff
uri_escape => uri_escape_utf8
authorEric Wong <e@80x24.org>
Mon, 28 Apr 2014 04:50:17 +0000 (04:50 +0000)
committerEric Wong <e@80x24.org>
Mon, 28 Apr 2014 04:51:46 +0000 (04:51 +0000)
We should be able to deal with URIs with non-ASCII characters in
them.  I only found this problem when looking at archives with
non-English spam :x

lib/PublicInbox/Hval.pm
lib/PublicInbox/View.pm
public-inbox.cgi

index 1a83cf10a54561f698f45a6671d6ed1f99734548..a93e8c247ea6cce2fd7b85398cb2405ef3dd06fa 100644 (file)
@@ -7,7 +7,7 @@ use strict;
 use warnings;
 use fields qw(raw);
 use Encode qw(find_encoding);
-use URI::Escape qw(uri_escape);
+use URI::Escape qw(uri_escape_utf8);
 
 my $enc_ascii = find_encoding('us-ascii');
 
@@ -52,7 +52,7 @@ sub ascii_html {
 }
 
 sub as_html { ascii_html($_[0]->{raw}) }
-sub as_href { ascii_html(uri_escape($_[0]->{raw})) }
+sub as_href { ascii_html(uri_escape_utf8($_[0]->{raw})) }
 
 sub raw {
        if (defined $_[1]) {
index 663eff5b9ac496f6f71ea1a24d63922058b4557c..c6ecee6ef9060eb1ac8e67fa7c2007228cfe82ed 100644 (file)
@@ -4,7 +4,7 @@ package PublicInbox::View;
 use strict;
 use warnings;
 use PublicInbox::Hval;
-use URI::Escape qw/uri_escape/;
+use URI::Escape qw/uri_escape_utf8/;
 use Encode qw/find_encoding/;
 use Encode::MIME::Header;
 use Email::MIME::ContentType qw/parse_content_type/;
@@ -213,12 +213,13 @@ sub html_footer {
 
        my $subj = $mime->header('Subject') || '';
        $subj = "Re: $subj" unless $subj =~ /\bRe:/;
-       my $irp = uri_escape($mime->header_obj->header_raw('Message-ID') || '');
+       my $irp = uri_escape_utf8(
+                       $mime->header_obj->header_raw('Message-ID') || '');
        delete $cc{$to};
-       $to = uri_escape($to);
-       $subj = uri_escape($subj);
+       $to = uri_escape_utf8($to);
+       $subj = uri_escape_utf8($subj);
 
-       my $cc = uri_escape(join(',', values %cc));
+       my $cc = uri_escape_utf8(join(',', values %cc));
        my $href = "mailto:$to?In-Reply-To=$irp&Cc=${cc}&Subject=$subj";
 
        '<a href="' . ascii_html($href) . '">reply</a>';
index 26b0fc618798d3e86f2038811bf6a727b20f7063..87cc6943b1b344abe75e38ea5d6e0c4cb5466690 100755 (executable)
@@ -15,7 +15,7 @@ use warnings;
 use CGI qw(:cgi -nosticky); # PSGI/FastCGI/mod_perl compat
 use Encode qw(find_encoding);
 use PublicInbox::Config;
-use URI::Escape qw(uri_escape uri_unescape);
+use URI::Escape qw(uri_escape_utf8 uri_unescape);
 our $enc_utf8 = find_encoding('UTF-8');
 our $LISTNAME_RE = qr!\A/([\w\.\-]+)!;
 our $pi_config;
@@ -165,7 +165,8 @@ sub get_mid_html {
        return r404() unless $x;
 
        require PublicInbox::View;
-       my $mid_href = PublicInbox::Hval::ascii_html(uri_escape($ctx->{mid}));
+       my $mid_href = PublicInbox::Hval::ascii_html(
+                                               uri_escape_utf8($ctx->{mid}));
        my $pfx = "../f/$mid_href.html";
        require Email::MIME;
        [ 200, [ 'Content-Type' => 'text/html' ],