96 lines
2.7 KiB
Perl
96 lines
2.7 KiB
Perl
use strict;
|
|
use warnings FATAL => 'all';
|
|
|
|
use Apache::Test;
|
|
use Apache::TestUtil;
|
|
use Apache::TestRequest;
|
|
|
|
my %headers;
|
|
|
|
my $hasfix = 0;
|
|
if (have_min_apache_version("2.4.0")) {
|
|
if (have_min_apache_version("2.4.24")) {
|
|
$hasfix = 1;
|
|
}
|
|
}
|
|
elsif (have_min_apache_version("2.2.32")) {
|
|
$hasfix = 1;
|
|
}
|
|
if ($hasfix) {
|
|
%headers = (
|
|
"Hello:World\r\n" => ["Hello", "World"],
|
|
"Hello: World\r\n" => ["Hello", "World"],
|
|
"Hello: World \r\n" => ["Hello", "World"],
|
|
"Hello: World \t \r\n" => ["Hello", "World"],
|
|
"Hello: Foo\r\n Bar\r\n" => ["Hello", "Foo Bar"],
|
|
"Hello: Foo\r\n\tBar\r\n" => ["Hello", "Foo Bar"],
|
|
"Hello: Foo\r\n Bar\r\n" => ["Hello", "Foo Bar"],
|
|
"Hello: Foo \t \r\n Bar\r\n" => ["Hello", "Foo Bar"],
|
|
"Hello: Foo\r\n \t Bar\r\n" => ["Hello", "Foo Bar"],
|
|
);
|
|
}
|
|
else {
|
|
%headers = (
|
|
"Hello:World\n" => ["Hello", "World"],
|
|
"Hello : World\n" => ["Hello", "World"],
|
|
"Hello : World \n" => ["Hello", "World"],
|
|
"Hello \t : World \n" => ["Hello", "World"],
|
|
"Hello: Foo\n Bar\n" => ["Hello", "Foo Bar"],
|
|
"Hello: Foo\n\tBar\n" => ["Hello", "Foo\tBar"],
|
|
"Hello: Foo\n Bar\n" => ["Hello", qr/Foo +Bar/],
|
|
"Hello: Foo \n Bar\n" => ["Hello", qr/Foo +Bar/],
|
|
);
|
|
}
|
|
|
|
my $uri = "/modules/cgi/env.pl";
|
|
|
|
plan tests => (scalar keys %headers) * 3, need_cgi;
|
|
|
|
foreach my $key (sort keys %headers) {
|
|
|
|
print "testing: $key";
|
|
|
|
my $sock = Apache::TestRequest::vhost_socket('default');
|
|
ok $sock;
|
|
|
|
Apache::TestRequest::socket_trace($sock);
|
|
|
|
$sock->print("GET $uri HTTP/1.0\r\n");
|
|
$sock->print($key);
|
|
$sock->print("\r\n");
|
|
|
|
# Read the status line
|
|
chomp(my $response = Apache::TestRequest::getline($sock) || '');
|
|
$response =~ s/\s$//;
|
|
|
|
ok t_cmp($response, qr{HTTP/1\.. 200 OK}, "response success");
|
|
|
|
my $line;
|
|
|
|
do {
|
|
chomp($line = Apache::TestRequest::getline($sock) || '');
|
|
$line =~ s/\s$//;
|
|
}
|
|
while ($line ne "");
|
|
|
|
my $found = 0;
|
|
|
|
my ($name, $value) = ($headers{$key}[0], $headers{$key}[1]);
|
|
|
|
do {
|
|
chomp($line = Apache::TestRequest::getline($sock) || '');
|
|
$line =~ s/\r?\n?$//;
|
|
if ($line ne "" && !$found) {
|
|
my @part = split(/ = /, $line);
|
|
if (@part && $part[0] eq "HTTP_" . uc($name)) {
|
|
print "header: [".$part[1]."] vs [".$value."]\n";
|
|
ok t_cmp $part[1], $value, "compare header $name value";
|
|
$found = 1;
|
|
}
|
|
}
|
|
}
|
|
while ($line ne "");
|
|
|
|
ok 0 unless $found;
|
|
}
|
|
|