diff options
author | Roy T. Fielding <fielding@apache.org> | 1999-08-24 06:46:03 +0000 |
---|---|---|
committer | Roy T. Fielding <fielding@apache.org> | 1999-08-24 06:46:03 +0000 |
commit | 6f96ad52275b5b35226cdb2ce66b3832e9dfb605 (patch) | |
tree | 8892afb8b2e31b3d6e7c9bca839afe51b4e11c40 /test/check_chunked | |
parent | ef31f584249e7389c762991a7aee9fde5d9effca (diff) | |
download | httpd-6f96ad52275b5b35226cdb2ce66b3832e9dfb605.tar.gz |
Apache 1.3.9 baseline for the Apache 2.0 repository.
Obtained from: Apache 1.3.9 (minus unused files), tag APACHE_1_3_9
Submitted by: Apache Group
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@83750 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test/check_chunked')
-rw-r--r-- | test/check_chunked | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/check_chunked b/test/check_chunked new file mode 100644 index 0000000000..6a12167211 --- /dev/null +++ b/test/check_chunked @@ -0,0 +1,42 @@ +#!/usr/bin/perl -w + +# This is meant to be used on the raw output of an HTTP/1.1 connection +# to check that the chunks are all correctly laid out. It's easiest +# to use a tool like netcat to generate the output. This script +# *insists* that \r exist in the output. +# +# You can find netcat at avian.org:/src/hacks/nc110.tgz. + +use strict; + +my $is_chunked = 0; + +# must toss headers +while(<>) { + if (/^Transfer-Encoding:\s+chunked/i) { + $is_chunked = 1; + } + last if ($_ eq "\r\n"); +} + +$is_chunked || die "wasn't chunked\n"; + +for(;;) { + $_ = <> || die "unexpected end of file!\n"; + + m#^([0-9a-f]+) *\r$#i || die "bogus chunklen: $_"; + + my $chunklen = hex($1); + + exit 0 if ($chunklen == 0); + + chop; chop; + print "$_ "; + + my $data = ''; + read(ARGV, $data, $chunklen) == $chunklen || die "short read!\n"; + + $_ = <> || die "unexpected end of file!\n"; + + $_ eq "\r\n" || die "missing chunk trailer!\n"; +} |