aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/transfer.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 80cdc0968..3816e7fb6 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -338,6 +338,18 @@ _Transfer(struct connectdata *c_conn)
return urg;
data->header_size += p - data->headerbuff;
+
+
+ /*
+ * end-of-headers.
+ *
+ * If we requested a "no body" and this isn't a "close"
+ * connection, this is a good time to get out and return
+ * home.
+ */
+ if(!conn->bits.close && data->bits.no_body)
+ return CURLE_OK;
+
break; /* exit header line loop */
}
@@ -473,11 +485,6 @@ _Transfer(struct connectdata *c_conn)
is non-headers. */
if (str && !header && ((signed int)nread > 0)) {
- /*
- * If we requested a HTTP header, this might be a good time to get
- * out and return home.
- */
-
if(0 == bodywrites) {
/* These checks are only made the first time we are about to
write a piece of the body */
@@ -539,7 +546,7 @@ _Transfer(struct connectdata *c_conn)
if(conn->bits.chunk) {
/*
- * Bless me father for I have sinned. Here come a chunked
+ * Bless me father for I have sinned. Here comes a chunked
* transfer flying and we need to decode this properly. While
* the name says read, this function both reads and writes away
* the data. The returned 'nread' holds the number of actual
@@ -553,7 +560,7 @@ _Transfer(struct connectdata *c_conn)
/* we're done reading chunks! */
keepon &= ~KEEP_READ; /* read no more */
- /* There are now (~res) bytes at the end of the str buffer
+ /* There are now possibly bytes at the end of the str buffer
that weren't written to the client, but we don't care
about them right now. */
}