about summary refs log tree commit homepage
path: root/lib/PublicInbox/Feed.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2014-04-22 09:24:45 +0000
committerEric Wong <e@80x24.org>2014-04-22 09:32:47 +0000
commit48dc8ff5e67714985897047c189bdf019b796a60 (patch)
treeb0f196789c42969d28de8ed606c9478e9090bf0d /lib/PublicInbox/Feed.pm
parent7a5c9dd00ed82ffb71cd5bec41aa1c615de12ada (diff)
downloadpublic-inbox-48dc8ff5e67714985897047c189bdf019b796a60.tar.gz
While we're at it, make sure strange characters are escaped properly
in Message-IDs.  We'll need tests for all this behavior.
Diffstat (limited to 'lib/PublicInbox/Feed.pm')
-rw-r--r--lib/PublicInbox/Feed.pm15
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm
index 3fc3775b..93ee80bb 100644
--- a/lib/PublicInbox/Feed.pm
+++ b/lib/PublicInbox/Feed.pm
@@ -262,11 +262,13 @@ sub add_to_feed {
         my $midurl = $feed_opts->{midurl} || 'http://example.com/m/';
         my $fullurl = $feed_opts->{fullurl} || 'http://example.com/f/';
 
-        my $content = PublicInbox::View->as_feed_entry($mime, $fullurl);
-        defined($content) or return 0;
-
         my $mid = utf8_header($mime, "Message-ID") or return 0;
-        $mid =~ s/\A<//; $mid =~ s/>\z//;
+        # FIXME: refactor
+        my (undef, $href) = PublicInbox::View::trim_message_id($mid);
+
+        my $content = PublicInbox::View->as_feed_entry($mime,
+                                                        "$fullurl$href.html");
+        defined($content) or return 0;
 
         my $subject = utf8_header($mime, "Subject") || "";
         length($subject) or return 0;
@@ -279,7 +281,6 @@ sub add_to_feed {
         my $email = $from[0]->address;
         defined $email or $email = "";
 
-        my $url = $midurl . uri_escape($mid);
         my $date = utf8_header($mime, "Date");
         $date or return 0;
         $date = feed_date($date) or return 0;
@@ -288,7 +289,7 @@ sub add_to_feed {
                 title => $subject,
                 updated => $date,
                 content => { type => "html", content => $content },
-                link => $url,
+                link => $midurl . $href,
                 id => $add,
         );
         1;
@@ -303,7 +304,7 @@ sub dump_html_line {
                 my $mid = utf8_header($simple, "Message-ID");
                 $mid =~ s/\A<//;
                 $mid =~ s/>\z//;
-                my $url = $args->[1] . uri_escape($mid);
+                my $url = $args->[1] . xs_html(uri_escape($mid));
                 my $from = utf8_header($simple, "From");
                 my @from = Email::Address->parse($from);
                 $from = $from[0]->name;