aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/http.c7
-rw-r--r--lib/transfer.c6
-rw-r--r--lib/url.c1
-rw-r--r--lib/urldata.h1
4 files changed, 13 insertions, 2 deletions
diff --git a/lib/http.c b/lib/http.c
index d12db0c8c..b3074ec65 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -352,6 +352,13 @@ CURLcode Curl_http_done(struct connectdata *conn)
*bytecount = http->readbytecount + http->writebytecount;
}
+ if(0 == (http->readbytecount + conn->headerbytecount)) {
+ /* nothing was read from the HTTP server, this can't be right
+ so we return an error here */
+ failf(data, "Empty reply from server\n");
+ return CURLE_GOT_NOTHING;
+ }
+
return CURLE_OK;
}
diff --git a/lib/transfer.c b/lib/transfer.c
index bc07aab2b..3cdfa4d7a 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2000, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2001, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* In order to be useful for every potential user, curl and libcurl are
* dual-licensed under the MPL and the MIT/X-derivate licenses.
@@ -450,12 +450,14 @@ Transfer(struct connectdata *c_conn)
if (data->set.http_include_header)
writetype |= CLIENTWRITE_BODY;
- urg = Curl_client_write(data, writetype, data->state.headerbuff,
+ urg = Curl_client_write(data, writetype,
+ data->state.headerbuff,
p - data->state.headerbuff);
if(urg)
return urg;
data->info.header_size += p - data->state.headerbuff;
+ conn->headerbytecount += p - data->state.headerbuff;
if(!header) {
/*
diff --git a/lib/url.c b/lib/url.c
index 9b24a221b..60be9322e 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -2034,6 +2034,7 @@ static CURLcode CreateConnection(struct SessionHandle *data,
conn->now = Curl_tvnow(); /* time this *after* the connect is done */
conn->bytecount = 0;
+ conn->headerbytecount = 0;
/* Figure out the ip-number and display the first host name it shows: */
#ifdef ENABLE_IPV6
diff --git a/lib/urldata.h b/lib/urldata.h
index 5eba3c659..7651cce44 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -242,6 +242,7 @@ struct connectdata {
not the proxy port! */
char *ppath;
long bytecount;
+ long headerbytecount; /* only count received headers */
char *range; /* range, if used. See README for detailed specification on
this syntax. */