use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestCommon (); use Apache::TestRequest (); my $module = 'default'; if (!have_min_apache_version('2.5.0')) { print "1..0 # skip: Not supported yet"; exit 0; } plan tests => 4, ['echo_post_chunk']; my $sock = Apache::TestRequest::vhost_socket($module); ok $sock; Apache::TestRequest::socket_trace($sock); $sock->print("POST /echo_post_chunk HTTP/1.1\r\n"); $sock->print("Host: localhost\r\n"); $sock->print("Content-Length: 77\r\n"); $sock->print("Transfer-Encoding: chunked\r\n"); $sock->print("\r\n"); $sock->print("0\r\n"); $sock->print("X-Chunk-Trailer: $$\r\n"); $sock->print("\r\n"); $sock->print("GET /i_do_not_exist_in_your_wildest_imagination HTTP/1.1\r\n"); $sock->print("Host: localhost\r\n"); # Read the status line chomp(my $response = Apache::TestRequest::getline($sock) || ''); $response =~ s/\s$//; ok t_cmp($response, "HTTP/1.1 200 OK", "response codes"); # Read the rest do { chomp($response = Apache::TestRequest::getline($sock)); $response =~ s/\s$//; } while ($response ne ""); # Do the next request... that MUST fail. $sock->print("\r\n"); $sock->print("\r\n"); # read the trailer (pid) $response = Apache::TestRequest::getline($sock); chomp($response) if (defined($response)); ok t_cmp($response, "$$", "trailer (pid)"); # Make sure we have not received a 404. chomp($response = Apache::TestRequest::getline($sock) || 'NO'); $response =~ s/\s$//; ok t_cmp($response, "NO", "no response");