summaryrefslogtreecommitdiff
path: root/test/check_chunked
diff options
context:
space:
mode:
authorRoy T. Fielding <fielding@apache.org>1999-08-24 06:46:03 +0000
committerRoy T. Fielding <fielding@apache.org>1999-08-24 06:46:03 +0000
commit6f96ad52275b5b35226cdb2ce66b3832e9dfb605 (patch)
tree8892afb8b2e31b3d6e7c9bca839afe51b4e11c40 /test/check_chunked
parentef31f584249e7389c762991a7aee9fde5d9effca (diff)
downloadhttpd-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_chunked42
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";
+}