diff options
-rw-r--r-- | lib/PublicInbox/Hval.pm | 1 | ||||
-rw-r--r-- | lib/PublicInbox/ViewVCS.pm | 2 | ||||
-rw-r--r-- | t/plack.t | 27 |
3 files changed, 28 insertions, 2 deletions
diff --git a/lib/PublicInbox/Hval.pm b/lib/PublicInbox/Hval.pm index 5f7ab513..79005d21 100644 --- a/lib/PublicInbox/Hval.pm +++ b/lib/PublicInbox/Hval.pm @@ -55,7 +55,6 @@ sub src_escape ($) { sub ascii_html { my ($s) = @_; - $s =~ s/\r\n/\n/sg; # fixup bad line endings $s =~ s/([<>&'"\x7f\x00-\x1f])/$xhtml_map{$1}/sge; $enc_ascii->encode($s, Encode::HTMLCREF); } diff --git a/lib/PublicInbox/ViewVCS.pm b/lib/PublicInbox/ViewVCS.pm index 1379bd58..2f8e1c4f 100644 --- a/lib/PublicInbox/ViewVCS.pm +++ b/lib/PublicInbox/ViewVCS.pm @@ -164,7 +164,7 @@ sub solve_result { # TODO: detect + convert to ensure validity utf8::decode($$blob); - my $nl = ($$blob =~ tr/\n/\n/); + my $nl = ($$blob =~ s/\r?\n/\n/sg); my $pad = length($nl); $l->linkify_1($$blob); @@ -109,6 +109,23 @@ EOF like($mime->body_raw, qr/hi =3D bye=/, 'our test used QP correctly'); $im->add($mime); + my $crlf = <<EOF; +From: Me + <me\@example.com> +To: $addr +Message-Id: <crlf\@example.com> +Subject: carriage + return + in + long + subject +Date: Fri, 02 Oct 1993 00:00:00 +0000 + +:( +EOF + $crlf =~ s/\n/\r\n/sg; + $im->add(Email::MIME->new($crlf)); + $im->done; } @@ -120,6 +137,16 @@ test_psgi($app, sub { } }); +test_psgi($app, sub { + my ($cb) = @_; + my $res = $cb->(GET('http://example.com/test/crlf@example.com/')); + is($res->code, 200, 'retrieved CRLF as HTML'); + unlike($res->content, qr/\r/, 'no CR in HTML'); + $res = $cb->(GET('http://example.com/test/crlf@example.com/raw')); + is($res->code, 200, 'retrieved CRLF raw'); + like($res->content, qr/\r/, 'CR preserved in raw message'); +}); + # redirect with newsgroup test_psgi($app, sub { my ($cb) = @_; |