diff --git a/lib/transfer.c b/lib/transfer.c
index 2fad6f32fc..24bdf2155b 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
diff --git a/tests/data/test1144 b/tests/data/test1144
index 3b4a1b4795..3fb90936a0 100644
--- a/tests/data/test1144
+++ b/tests/data/test1144
@@ -30,6 +30,10 @@ data to
verify
+# make sure no data is written
+
+
+
#
@@ -58,5 +62,8 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
+
+8
+