adjusted the time-keeping function to work better for location following
authorDaniel Stenberg <daniel@haxx.se>
Mon, 6 Nov 2000 15:31:10 +0000 (15:31 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 6 Nov 2000 15:31:10 +0000 (15:31 +0000)
requests

lib/getinfo.c
lib/highlevel.c
lib/urldata.h

index dbcaa1b..786692c 100644 (file)
@@ -94,16 +94,13 @@ CURLcode curl_getinfo(CURL *curl, CURLINFO info, ...)
     *param_doublep = data->progress.timespent;
     break;
   case CURLINFO_NAMELOOKUP_TIME:
-    *param_doublep = tvdiff(data->progress.t_nslookup,
-                            data->progress.start);
+    *param_doublep = data->progress.t_nslookup;
     break;
   case CURLINFO_CONNECT_TIME:
-    *param_doublep =  tvdiff(data->progress.t_connect,
-                             data->progress.start);
+    *param_doublep = data->progress.t_connect;
     break;
   case CURLINFO_PRETRANSFER_TIME:
-    *param_doublep =  tvdiff(data->progress.t_pretransfer,
-                             data->progress.start);
+    *param_doublep =  data->progress.t_pretransfer;
     break;
   case CURLINFO_SIZE_UPLOAD:
     *param_doublep =  data->progress.uploaded;
index 7a9dad3..a67e0f0 100644 (file)
@@ -625,6 +625,7 @@ CURLcode curl_transfer(CURL *curl)
   pgrsStartNow(data);
 
   do {
+    pgrsTime(data, TIMER_STARTSINGLE);
     res = curl_connect(curl, (CURLconnect **)&c_connect);
     if(res == CURLE_OK) {
       res = curl_do(c_connect);
@@ -635,13 +636,18 @@ CURLcode curl_transfer(CURL *curl)
       }
 
       if((res == CURLE_OK) && data->newurl) {
-        /* Location: redirect */
+        /* Location: redirect
+
+           This is assumed to happen for HTTP(S) only!
+         */
         char prot[16];
         char path[URL_MAX_LENGTH];
 
         /* mark the next request as a followed location: */
         data->bits.this_is_a_follow = TRUE;
 
+        data->proto.http->followlocation++; /* count location-followers */
+
         if(data->bits.http_auto_referer) {
           /* We are asked to automatically set the previous URL as the
              referer when we get the next URL. We pick the ->url field,
index 12046bf..857e5e9 100644 (file)
@@ -244,10 +244,11 @@ struct Progress {
   double ulspeed;
 
   struct timeval start;
+  struct timeval t_startsingle;
   /* various data stored for possible later report */
-  struct timeval t_nslookup;
-  struct timeval t_connect;
-  struct timeval t_pretransfer;
+  double t_nslookup;
+  double t_connect;
+  double t_pretransfer;
   int httpcode;
 
 #define CURR_TIME 5
@@ -271,6 +272,8 @@ struct HTTP {
   struct Form form;
   size_t (*storefread)(char *, size_t , size_t , FILE *);
   FILE *in;
+
+  long followlocation;
 };
 
 /****************************************************************************