| # |
| # Regression test for PR 18757. |
| # |
| # Annoyingly awkward to write because LWP is a poor excuse for an HTTP |
| # interface and will lie about what response headers are sent, so this |
| # must be yet another test which speaks TCP directly. |
| # |
| |
| use strict; |
| use warnings FATAL => 'all'; |
| |
| use Apache::Test; |
| use Apache::TestUtil; |
| use Apache::TestRequest; |
| |
| plan tests => 3, need 'proxy', need_min_apache_version('2.2.1'), need_cgi; |
| |
| Apache::TestRequest::module("mod_proxy"); |
| |
| my $path = "/index.html"; |
| |
| my $r = GET($path); |
| |
| ok t_cmp($r->code, 200, "200 response from GET"); |
| |
| my $clength = $r->content_length; |
| |
| t_debug("expected C-L is $clength"); |
| |
| my $url = Apache::TestRequest::resolve_url($path); |
| my $hostport = Apache::TestRequest::hostport(); |
| my $sock = Apache::TestRequest::vhost_socket("mod_proxy"); |
| |
| t_debug "URL via proxy is $url"; |
| |
| ok $sock; |
| |
| $sock->print("HEAD $url HTTP/1.1\r\n"); |
| $sock->print("Host: $hostport\r\n"); |
| $sock->print("\r\n"); |
| |
| my $ok = 0; |
| my $response; |
| |
| do { |
| chomp($response = Apache::TestRequest::getline($sock) || ''); |
| $response =~ s/\s$//; |
| |
| t_debug("line: $response"); |
| |
| if ($response =~ /Content-Length: $clength/) { |
| $ok = 1; |
| } |
| |
| } |
| while ($response ne ""); |
| |
| ok t_cmp($ok, 1, "whether proxy strips Content-Length header"); |