#!/usr/
200601-
17 Granlund <tegeswox>
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version
2.
0
# (the
"License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
#
http://www.apache.org/licenses/LICENSE-2.
0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an
"AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# 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* mpngeneric/diveby3c:Use standard names
read(ARGV, $data, $chunklen) == $chunklen || die
"short read!\n";
$_ = <> || die
"unexpected end of file!\n";
$_ eq
"\r\n" || die
"missing chunk trailer!\n";
}