From 4e37187e44b85aa11fee92eca4d87b3839cd435f Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 19 Oct 2001 11:58:32 +0000 Subject: now counts header size return from server and if nothing is returned from a HTTP server we return error --- lib/http.c | 7 +++++++ lib/transfer.c | 6 ++++-- lib/url.c | 1 + lib/urldata.h | 1 + 4 files changed, 13 insertions(+), 2 deletions(-) (limited to 'lib') 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, , et al. + * Copyright (C) 2001, Daniel Stenberg, , 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. */ -- cgit v1.2.3