diff options
author | Daniel Stenberg <daniel@haxx.se> | 2018-03-15 00:27:20 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2018-03-15 10:56:27 +0100 |
commit | a9a7b606c2341bb0fced33f5f00f45900beb9c8f (patch) | |
tree | 7de8f52429f48b70f4999df9fa3b624c2de0624f | |
parent | 634f72fed425376ac395426081011a80c93c447d (diff) | |
download | curl-a9a7b606c2341bb0fced33f5f00f45900beb9c8f.tar.gz |
transfer: make HTTP without headers count correct body size
This is what "HTTP/0.9" basically looks like.
Reported on IRC
Closes #2382
-rw-r--r-- | lib/transfer.c | 2 | ||||
-rw-r--r-- | tests/FILEFORMAT | 7 | ||||
-rw-r--r-- | tests/data/Makefile.inc | 2 | ||||
-rw-r--r-- | tests/data/test1164 | 52 | ||||
-rwxr-xr-x | tests/runtests.pl | 2 |
5 files changed, 60 insertions, 5 deletions
diff --git a/lib/transfer.c b/lib/transfer.c index fd9af3155..b5614f55f 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -717,7 +717,7 @@ static CURLcode readwrite_data(struct Curl_easy *data, #endif /* CURL_DISABLE_HTTP */ /* Account for body content stored in the header buffer */ - if(k->badheader && !k->ignorebody) { + if((k->badheader == HEADER_PARTHEADER) && !k->ignorebody) { DEBUGF(infof(data, "Increasing bytecount by %zu from hbuflen\n", k->hbuflen)); k->bytecount += k->hbuflen; diff --git a/tests/FILEFORMAT b/tests/FILEFORMAT index 5426f333f..19862f2a4 100644 --- a/tests/FILEFORMAT +++ b/tests/FILEFORMAT @@ -293,8 +293,8 @@ command is run. They are cleared again after the command has been run. Variables are first substituted as in the <command> section. </setenv> -<command [option="no-output/no-include"] [timeout="secs"] [delay="secs"] - [type="perl"]> +<command [option="no-output/no-include/force-output"] [timeout="secs"] + [delay="secs"][type="perl"]> command line to run, there's a bunch of %variables that get replaced accordingly. @@ -317,6 +317,9 @@ Set option="no-output" to prevent the test script to slap on the --output argument that directs the output to a file. The --output is also not added if the verify/stdout section is used. +Set option="force-output" to make use of --output even when the test is +otherwise written to verify stdout. + Set option="no-include" to prevent the test script to slap on the --include argument. diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc index 97daf00ce..5fcffc6eb 100644 --- a/tests/data/Makefile.inc +++ b/tests/data/Makefile.inc @@ -129,7 +129,7 @@ test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \ test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \ test1152 test1153 test1154 \ \ -test1160 test1161 test1162 test1163 \ +test1160 test1161 test1162 test1163 test1164 \ test1170 test1171 \ test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \ test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \ diff --git a/tests/data/test1164 b/tests/data/test1164 new file mode 100644 index 000000000..061e395cc --- /dev/null +++ b/tests/data/test1164 @@ -0,0 +1,52 @@ +<testcase> +<info> +<keywords> +HTTP +HTTP GET +</keywords> +</info> + +# +# Server-side +<reply> +# perl -e 'print "swsclose" . "\0" x 200;' | base64 +# 'swsclose' is there to force server to close after send +<data nocheck="yes" base64="yes"> +c3dzY2xvc2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== +</data> +</reply> + +# +# Client-side +<client> +<server> +http +</server> + <name> +HTTP/0.9 GET and all zeroes + </name> + <command option="force-output"> +http://%HOSTIP:%HTTPPORT/1164 -w '%{size_download}\n' +</command> +</client> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /1164 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol> +<stdout> +208 +</stdout> +</verify> +</testcase> diff --git a/tests/runtests.pl b/tests/runtests.pl index d6aa5cac6..6503bf779 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -3909,7 +3909,7 @@ sub singletest { if((!$cmdhash{'option'}) || ($cmdhash{'option'} !~ /no-output/)) { #We may slap on --output! - if (!@validstdout) { + if (!@validstdout || $cmdhash{'option'} =~ /force-output/) { $out=" --output $CURLOUT "; } } |