now counts header size return from server and if nothing is returned from a
authorDaniel Stenberg <daniel@haxx.se>
Fri, 19 Oct 2001 11:58:32 +0000 (11:58 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 19 Oct 2001 11:58:32 +0000 (11:58 +0000)
HTTP server we return error

lib/http.c
lib/transfer.c
lib/url.c
lib/urldata.h

index d12db0c8c59b1efcba7d1d430ef4d59072c13420..b3074ec6566aec0305a5a41ad3c06730ea0f6d6c 100644 (file)
@@ -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;
 }
 
index bc07aab2bac21f552bbab11fe821bfbcfc8b55de..3cdfa4d7a312a22ca6c9252a453bdf80ce7ed1ab 100644 (file)
@@ -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) {
                   /*
index 9b24a221bbbdd7c32d4c58d837b36ea72008c366..60be9322e5819672f8ef2fe7c7afba8ffc3d63f9 100644 (file)
--- 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
index 5eba3c659da6d7d7e2fb4d4a8dd7c0e9e6cc566e..7651cce449ac1c44273f83923647cda5a4707d2b 100644 (file)
@@ -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. */