mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-19 01:05:15 +03:00
testing/apache2-mod-perl: add fedora patches
This commit is contained in:
parent
f5608240f6
commit
c5c23eafc1
5 changed files with 258 additions and 6 deletions
|
@ -4,7 +4,7 @@
|
|||
pkgname=apache2-mod-perl
|
||||
_pkgreal=mod_perl
|
||||
pkgver=2.0.10
|
||||
pkgrel=2
|
||||
pkgrel=3
|
||||
pkgdesc="Perl Module for Apache2"
|
||||
url="https://perl.apache.org/"
|
||||
arch="all"
|
||||
|
@ -14,6 +14,10 @@ depends_dev="$pkgname"
|
|||
makedepends="apache2-dev perl-dev perl-linux-pid apr-dev apr-util-dev"
|
||||
subpackages="$pkgname-doc $pkgname-dev"
|
||||
source="https://www-eu.apache.org/dist/perl/$_pkgreal-$pkgver.tar.gz
|
||||
mod_perl-2.0.10-http_syntax.patch
|
||||
mod_perl-2.0.10-inject_header_line_terminators.patch
|
||||
mod_perl-2.0.10-restrict_perl_section_to_server_scope.patch
|
||||
mod_perl-2.0.7-fix_pipelines_reponse_deadlock_in_tests.patch
|
||||
$pkgname.conf"
|
||||
builddir="$srcdir/$_pkgreal-$pkgver"
|
||||
|
||||
|
@ -27,7 +31,7 @@ build() {
|
|||
|
||||
check() {
|
||||
cd "$builddir"
|
||||
make test
|
||||
make -j1 test
|
||||
}
|
||||
|
||||
|
||||
|
@ -50,9 +54,9 @@ dev() {
|
|||
"$subpkgdir"/usr/lib/perl5/vendor_perl/auto/Apache2
|
||||
}
|
||||
|
||||
md5sums="cef55e715b5770a63b3becbe9d271121 mod_perl-2.0.10.tar.gz
|
||||
326cad2b2324c4a59fde4c232e8465b1 apache2-mod-perl.conf"
|
||||
sha256sums="d1cf83ed4ea3a9dfceaa6d9662ff645177090749881093051020bf42f9872b64 mod_perl-2.0.10.tar.gz
|
||||
02b359afff4da0c4a94cc2c253505f301f8b4fca5a14655fdd846f07cbd33530 apache2-mod-perl.conf"
|
||||
sha512sums="0bf1a885cb32a3393e95f87e71983097613e263b9052dbf22494663b506e36a25d0256afed24285232276d9f43ebd3adaa18b91129bfb62116a8ccb023855bca mod_perl-2.0.10.tar.gz
|
||||
bd4d84d4f464edaa59d514e604e3f33a7f7504084cb9f36ecff76a952cb2af1278185defdc2ad44bbc9f762bdfaabcca942808cf016ba5370e010db9f164f837 mod_perl-2.0.10-http_syntax.patch
|
||||
5ad666766994116c59569581c5e9e09cec17e4122348885f639be1ad0a0efe57ba6694fd11af3acad9f66c85432f864dc627f2a6ee2cee4ead61a2e27af2c33f mod_perl-2.0.10-inject_header_line_terminators.patch
|
||||
efc80b02b405f05dc1ed7648d7b838d09222049ce7e5487f50052c65c57ea6418a39e5abebc15e5a3cc670a10f0e80749cac0488961d71fa13b9dc86919f4400 mod_perl-2.0.10-restrict_perl_section_to_server_scope.patch
|
||||
4529097462c5deb40ca548c91776638118a4ec7e2701e5b2b9c89dc0cf116574bcd2f5115afccc192a4cfd906916bc0a13489f4d77e9fe6d05c6017eb3c04004 mod_perl-2.0.7-fix_pipelines_reponse_deadlock_in_tests.patch
|
||||
15a430ce597e370997a08d6aa1b5e55d4fa723ecac031fe39906c8cc767b90d5bf63e3026dfaa8b10ae8b09a17832f4f07cb8b2fdcd6c9ef427edfaf4e8a48b0 apache2-mod-perl.conf"
|
||||
|
|
33
testing/apache2-mod-perl/mod_perl-2.0.10-http_syntax.patch
Normal file
33
testing/apache2-mod-perl/mod_perl-2.0.10-http_syntax.patch
Normal file
|
@ -0,0 +1,33 @@
|
|||
From 4a803fdb4c9eae8538293fe31c9222eecb6465be Mon Sep 17 00:00:00 2001
|
||||
From: Niko Tyni <ntyni@debian.org>
|
||||
Date: Fri, 23 Dec 2016 18:27:23 +0200
|
||||
Subject: [PATCH 1/2] Fix t/apache/read.t HTTP syntax for Apache 2.4.24
|
||||
compatibility
|
||||
|
||||
HTTP/1.1 RFC 7230, section 2.6. "Protocol Versioning" says the HTTP name
|
||||
is case sensitive. Starting with Apache 2.4.24, using lower case will
|
||||
make the server issue a 400 Bad request response, causing a test failure.
|
||||
|
||||
https://tools.ietf.org/html/rfc7230#section-2.6
|
||||
|
||||
Bug-Debian: https://bugs.debian.org/849082
|
||||
---
|
||||
t/apache/read.t | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/t/apache/read.t b/t/apache/read.t
|
||||
index 83670c9..9f7f504 100644
|
||||
--- a/t/apache/read.t
|
||||
+++ b/t/apache/read.t
|
||||
@@ -24,7 +24,7 @@ close $fh;
|
||||
|
||||
my $size = length $data;
|
||||
|
||||
-for my $string ("POST $location http/1.0",
|
||||
+for my $string ("POST $location HTTP/1.0",
|
||||
"Content-length: $size",
|
||||
"") {
|
||||
my $line = "$string\r\n";
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
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
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
From jani@ulrik.uio.no Wed Oct 05 09:38:47 2011
|
||||
To: 644169@bugs.debian.org
|
||||
Subject: Re: Bug#644169: libapache2-mod-perl2: PerlOptions -Sections not
|
||||
permitted in server config, but should be
|
||||
From: Jan Ingvoldstad <jani+debian-2011+@ifi.uio.no>
|
||||
Date: Wed, 05 Oct 2011 11:38:37 +0200
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Content-Type: text/plain; charset=utf-8
|
||||
|
||||
Here is a patch that ensures that <Perl> (and Pod) sections are only
|
||||
allowed in the server configuration and not per directory, which
|
||||
incidentally matches the specification table here:
|
||||
|
||||
http://perl.apache.org/docs/2.0/user/config/config.html#mod_perl_Directives_Argument_Types_and_Allowed_Location
|
||||
|
||||
The patch has been tested on the same system where I identified the
|
||||
problem.
|
||||
|
||||
The patch solves the issue for me, and leaves only the following
|
||||
issues, as far as I can tell:
|
||||
|
||||
- Should there be fine-grained control as "PerlOptions -Sections"
|
||||
implies or not?
|
||||
|
||||
- The mod_perl documentation (online and in the module) probably
|
||||
needs to be changed to reflect that PerlOptions -Sections does not
|
||||
work.
|
||||
|
||||
Description: allow Perl and Pod sections only in server config
|
||||
Author: Jan Ingvoldstad <jani+debian-mod-perl-2011+@ifi.uio.no>
|
||||
Last-Update: 2011-10-05
|
||||
--- a/src/modules/perl/mod_perl.c 2011-02-02 21:23:45.000000000 +0100
|
||||
+++ b/src/modules/perl/mod_perl.c 2011-10-05 11:05:52.977576861 +0200
|
||||
@@ -913,18 +913,18 @@
|
||||
MP_CMD_DIR_ITERATE2("PerlAddVar", add_var, "PerlAddVar"),
|
||||
MP_CMD_DIR_TAKE2("PerlSetEnv", set_env, "PerlSetEnv"),
|
||||
MP_CMD_SRV_TAKE1("PerlPassEnv", pass_env, "PerlPassEnv"),
|
||||
- MP_CMD_DIR_RAW_ARGS_ON_READ("<Perl", perl, "Perl Code"),
|
||||
- MP_CMD_DIR_RAW_ARGS("Perl", perldo, "Perl Code"),
|
||||
+ MP_CMD_SRV_RAW_ARGS_ON_READ("<Perl", perl, "Perl Code"),
|
||||
+ MP_CMD_SRV_RAW_ARGS("Perl", perldo, "Perl Code"),
|
||||
|
||||
MP_CMD_DIR_TAKE1("PerlSetInputFilter", set_input_filter,
|
||||
"filter[;filter]"),
|
||||
MP_CMD_DIR_TAKE1("PerlSetOutputFilter", set_output_filter,
|
||||
"filter[;filter]"),
|
||||
|
||||
- MP_CMD_DIR_RAW_ARGS_ON_READ("=pod", pod, "Start of POD"),
|
||||
- MP_CMD_DIR_RAW_ARGS_ON_READ("=back", pod, "End of =over"),
|
||||
- MP_CMD_DIR_RAW_ARGS_ON_READ("=cut", pod_cut, "End of POD"),
|
||||
- MP_CMD_DIR_RAW_ARGS_ON_READ("__END__", END, "Stop reading config"),
|
||||
+ MP_CMD_SRV_RAW_ARGS_ON_READ("=pod", pod, "Start of POD"),
|
||||
+ MP_CMD_SRV_RAW_ARGS_ON_READ("=back", pod, "End of =over"),
|
||||
+ MP_CMD_SRV_RAW_ARGS_ON_READ("=cut", pod_cut, "End of POD"),
|
||||
+ MP_CMD_SRV_RAW_ARGS_ON_READ("__END__", END, "Stop reading config"),
|
||||
|
||||
MP_CMD_SRV_RAW_ARGS("PerlLoadModule", load_module, "A Perl module"),
|
||||
#ifdef MP_TRACE
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
Fix pipelined response deadlock in tests
|
||||
|
||||
There's a race condition that can cause mod_perl's test suite to hang
|
||||
in t/filter/in_str_declined.t. The problem is that the response handler
|
||||
starts generating response body, and so triggers header output, before
|
||||
it reads the request body. If LWP::Protocol::http, which is the client
|
||||
for this test, receives a complete set of response headers, it will stop
|
||||
sending the request body. (However, if the request body is no more than
|
||||
8192 octets then it will send the whole body before it starts looking
|
||||
for a response. The failure only shows up with an appreciably large
|
||||
request body.)
|
||||
|
||||
RFC 2616 doesn't explicitly address this sort of pipelining, but the
|
||||
start of section 6 does say "After receiving and interpreting a request
|
||||
message, a server responds with an HTTP response message.", which can be
|
||||
read as prohibiting sending any part of the response before the entire
|
||||
request has been received.
|
||||
|
||||
The attached patch fixes this issue by making all the POST handlers in
|
||||
the test suite read the body before doing anything that generates output
|
||||
(specifically plan()).
|
||||
|
||||
-zefram
|
||||
|
||||
CPAN RT#82409
|
||||
Debian bug #676754
|
||||
|
||||
--- a/t/filter/TestFilter/in_str_declined.pm 2011-02-08 02:00:11.000000000 +0000
|
||||
+++ b/t/filter/TestFilter/in_str_declined.pm 2013-01-04 16:08:14.000000000 +0000
|
||||
@@ -35,13 +35,17 @@
|
||||
sub response {
|
||||
my $r = shift;
|
||||
|
||||
+ my $data;
|
||||
+ if ($r->method_number == Apache2::Const::M_POST) {
|
||||
+ # consume the data so the input filter is invoked
|
||||
+ $data = TestCommon::Utils::read_post($r);
|
||||
+ }
|
||||
+
|
||||
plan $r, tests => 2;
|
||||
|
||||
$r->content_type('text/plain');
|
||||
|
||||
if ($r->method_number == Apache2::Const::M_POST) {
|
||||
- # consume the data so the input filter is invoked
|
||||
- my $data = TestCommon::Utils::read_post($r);
|
||||
ok t_cmp(length $data, 20000, "the request body received ok");
|
||||
}
|
||||
|
||||
--- a/t/filter/TestFilter/in_str_declined_read.pm 2011-02-08 02:00:11.000000000 +0000
|
||||
+++ b/t/filter/TestFilter/in_str_declined_read.pm 2013-01-04 16:06:28.000000000 +0000
|
||||
@@ -31,14 +31,19 @@
|
||||
sub response {
|
||||
my $r = shift;
|
||||
|
||||
+ my $err;
|
||||
+ if ($r->method_number == Apache2::Const::M_POST) {
|
||||
+ # this should fail, because of the failing filter
|
||||
+ eval { TestCommon::Utils::read_post($r) };
|
||||
+ $err = $@;
|
||||
+ }
|
||||
+
|
||||
plan $r, tests => 1;
|
||||
|
||||
$r->content_type('text/plain');
|
||||
|
||||
if ($r->method_number == Apache2::Const::M_POST) {
|
||||
- # this should fail, because of the failing filter
|
||||
- eval { TestCommon::Utils::read_post($r) };
|
||||
- ok $@;
|
||||
+ ok $err;
|
||||
}
|
||||
|
||||
Apache2::Const::OK;
|
||||
--- a/t/filter/TestFilter/in_str_msg.pm 2011-02-08 02:00:11.000000000 +0000
|
||||
+++ b/t/filter/TestFilter/in_str_msg.pm 2013-01-04 16:08:27.000000000 +0000
|
||||
@@ -76,10 +76,10 @@
|
||||
sub response {
|
||||
my $r = shift;
|
||||
|
||||
- plan $r, tests => 1;
|
||||
-
|
||||
my $received = TestCommon::Utils::read_post($r);
|
||||
|
||||
+ plan $r, tests => 1;
|
||||
+
|
||||
ok t_cmp($received, $expected,
|
||||
"request filter must have upcased the data");
|
||||
|
||||
--- a/t/response/TestModperl/post_utf8.pm 2011-02-08 02:00:12.000000000 +0000
|
||||
+++ b/t/response/TestModperl/post_utf8.pm 2013-01-04 16:04:39.000000000 +0000
|
||||
@@ -29,14 +29,14 @@
|
||||
# $r->content_type("text/plain; charset=utf-8");
|
||||
# $r->print("expected: $expected_utf8\n");
|
||||
|
||||
+ my $received = TestCommon::Utils::read_post($r) || "";
|
||||
+
|
||||
# utf encode/decode was added only in 5.8.0
|
||||
# XXX: currently binmode is only available with perlio (used on the
|
||||
# server side on the tied/perlio STDOUT)
|
||||
plan $r, tests => 2,
|
||||
need need_min_perl_version(5.008), need_perl('perlio');
|
||||
|
||||
- my $received = TestCommon::Utils::read_post($r) || "";
|
||||
-
|
||||
# workaround for perl-5.8.0, which doesn't decode correctly a
|
||||
# tainted variable
|
||||
require ModPerl::Util;
|
Loading…
Add table
Add a link
Reference in a new issue