Subject: | [PATCH] Apache 2.4.24+ "strict mode" test failures |
From version 2.4.24 onwards, Apache defaults to "strict HTTP mode".
See https://httpd.apache.org/docs/2.4/mod/core.html#httpprotocoloptions
This makes t/apache/read.t and t/filter/in_bbs_inject_header.t
fail with a 400 server error. Proposed patches attached.
(This is also <https://bugs.debian.org/849082>, and I sent these patches to dev@perl.apache.org on Dec 25th but they still haven't made it through. Either they were lost or are still stuck in a moderation queue; so retrying here.)
--
Niko Tyni
ntyni@debian.org
Subject: | 380_inject_header_line_terminators.patch |
From d59229cf4f5b91ed58e25e27977e76f59096b72d Mon Sep 17 00:00:00 2001
From: Niko Tyni <ntyni@debian.org>
Date: Sat, 24 Dec 2016 23:07:28 +0200
Subject: [PATCH 2/2] Fix in_bbs_inject_header line terminators for Apache
2.4.24 compatibility
rfc7230 3.5 says:
Although the line terminator for the start-line and header fields is
the sequence CRLF, a recipient MAY recognize a single LF as a line
terminator and ignore any preceding CR.
Apache with strict enabled chooses not to implement the MAY.
Author: Stefan Fritsch <sf@sfritsch.de>
Bug-Debian: https://bugs.debian.org/849082
---
t/filter/TestFilter/in_bbs_inject_header.pm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/t/filter/TestFilter/in_bbs_inject_header.pm b/t/filter/TestFilter/in_bbs_inject_header.pm
index b09d6f9..5380c65 100644
--- a/t/filter/TestFilter/in_bbs_inject_header.pm
+++ b/t/filter/TestFilter/in_bbs_inject_header.pm
@@ -181,7 +181,7 @@ sub handler : FilterConnectionHandler {
if ($data and $data =~ /^POST/) {
# demonstrate how to add a header while processing other headers
- my $header = "$header1_key: $header1_val\n";
+ my $header = "$header1_key: $header1_val\r\n";
push @{ $ctx->{buckets} }, APR::Bucket->new($c->bucket_alloc, $header);
debug "queued header [$header]";
}
@@ -199,7 +199,7 @@ sub handler : FilterConnectionHandler {
# we hit the headers and body separator, which is a good
# time to add extra headers:
for my $key (keys %headers) {
- my $header = "$key: $headers{$key}\n";
+ my $header = "$key: $headers{$key}\r\n";
push @{ $ctx->{buckets} }, APR::Bucket->new($c->bucket_alloc, $header);
debug "queued header [$header]";
}
--
2.11.0