diff options
-rw-r--r-- | lib/http.c | 7 | ||||
-rw-r--r-- | lib/transfer.c | 6 | ||||
-rw-r--r-- | lib/url.c | 1 | ||||
-rw-r--r-- | lib/urldata.h | 1 |
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) { /* @@ -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. */ |