summaryrefslogtreecommitdiff
path: root/lib/transfer.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2016-09-09 15:57:44 +0200
committerDaniel Stenberg <daniel@haxx.se>2016-09-11 12:02:07 +0200
commita8e751a51a53c59e832c8351a1356763fa5766c4 (patch)
tree22ab86256ed8eadd0699880d063fda2ac3c8ddfa /lib/transfer.c
parentd58682f28bfbbfafcd2dd939bd4f944db2bef0c0 (diff)
downloadcurl-a8e751a51a53c59e832c8351a1356763fa5766c4.tar.gz
http: refuse to pass on response body with NO_NODY was set
... like when a HTTP/0.9 response comes back without any headers at all and just a body this now prevents that body from being sent to the callback etc. Adapted test 1144 to verify. Fixes #973 Assisted-by: Ray Satiro
Diffstat (limited to 'lib/transfer.c')
-rw-r--r--lib/transfer.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 2fad6f32f..24bdf2155 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -535,6 +535,13 @@ static CURLcode readwrite_data(struct Curl_easy *data,
is non-headers. */
if(k->str && !k->header && (nread > 0 || is_empty_data)) {
+ if(data->set.opt_no_body) {
+ /* data arrives although we want none, bail out */
+ streamclose(conn, "ignoring body");
+ *done = TRUE;
+ return CURLE_WEIRD_SERVER_REPLY;
+ }
+
#ifndef CURL_DISABLE_HTTP
if(0 == k->bodywrites && !is_empty_data) {
/* These checks are only made the first time we are about to