Dirk Manske brought the patch that introduces two new CURLINFO_* values:
authorDaniel Stenberg <daniel@haxx.se>
Tue, 16 Apr 2002 07:59:20 +0000 (07:59 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 16 Apr 2002 07:59:20 +0000 (07:59 +0000)
CURLINFO_REDIRECT_TIME and CURLINFO_REDIRECT_COUNT.

CHANGES
include/curl/curl.h
lib/getinfo.c
lib/progress.c
lib/progress.h
lib/transfer.c
lib/urldata.h

diff --git a/CHANGES b/CHANGES
index 08c895b8947fa8025542b7061eb3b3c7a514a612..7187723d2c7030df663f2500a7beca62232f8eec 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,21 @@
 
                                History of Changes
 
+Daniel (16 April 2002)
+- Dirk Manske brought a patch that introduced two new CURLINFO_* values:
+  CURLINFO_REDIRECT_TIME and CURLINFO_REDIRECT_COUNT.
+
+Daniel (15 April 2002)
+- Jonatan Lander patched the verbose text 'Disables POST, goes with GET' to
+  reflect reality better, like when the first request isn't POST and when
+  the second isn't GET... :-)
+
+- Craig Davison pointed out that when curl_formadd()ing a file that doesn't
+  exist, libcurl doesn't return error. Now, curl_easy_perform() will return
+  CURLE_READ_ERROR if that is the case. Test 41 was added to verify this.
+
+Version 7.9.6
+
 Daniel (14 April 2002)
 - Dirk Manske brought a fix that makes libcurl strip off white spaces from the
   beginning of cookie contents.
index 08ee4cb9e6f54afa4896b07a6b28eaa011903c41..abfe3e523780b736c7d077794417c4e7de6c2ba0 100644 (file)
@@ -718,9 +718,12 @@ typedef enum {
 
   CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18,
 
+  CURLINFO_REDIRECT_TIME   = CURLINFO_DOUBLE + 19,
+  CURLINFO_REDIRECT_COUNT  = CURLINFO_LONG + 20,
+
   /* Fill in new entries here! */
 
-  CURLINFO_LASTONE          = 19
+  CURLINFO_LASTONE          = 21
 } CURLINFO;
 
 /* unfortunately, the easy.h and multi.h include files need options and info
index 5be124fffe908c5790e850ee2e0275098442e0f9..20a7db1e45995e8c560f3ac446d0e5b202a7f2dc 100644 (file)
@@ -54,6 +54,7 @@ CURLcode Curl_initinfo(struct SessionHandle *data)
   pro->t_pretransfer = 0;
   pro->t_starttransfer = 0;
   pro->timespent = 0;
+  pro->t_redirect = 0;
 
   info->httpcode = 0;
   info->httpversion=0;
@@ -148,6 +149,12 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
   case CURLINFO_CONTENT_LENGTH_UPLOAD:
     *param_doublep = data->progress.size_ul;
     break;
+  case CURLINFO_REDIRECT_TIME:
+    *param_doublep =  data->progress.t_redirect;
+    break;
+  case CURLINFO_REDIRECT_COUNT:
+    *param_longp = data->set.followlocation;
+    break;
   case CURLINFO_CONTENT_TYPE:
     *param_charp = data->info.contenttype;
     break;
index 8c48c1ac1b13eb31a92dc1330c4529cdf3cbf71c..b3052e425bbc6463a3149aad1489d5e92f96e6f5 100644 (file)
@@ -103,6 +103,15 @@ void Curl_pgrsDone(struct connectdata *conn)
   }
 }
 
+/* reset all times except redirect */
+void Curl_pgrsResetTimes(struct SessionHandle *data)
+{
+  data->progress.t_nslookup = 0.0;
+  data->progress.t_connect = 0.0;
+  data->progress.t_pretransfer = 0.0;
+  data->progress.t_starttransfer = 0.0;
+}
+
 void Curl_pgrsTime(struct SessionHandle *data, timerid timer)
 {
   switch(timer) {
@@ -134,6 +143,10 @@ void Curl_pgrsTime(struct SessionHandle *data, timerid timer)
   case TIMER_POSTRANSFER:
     /* this is the normal end-of-transfer thing */
     break;
+  case TIMER_REDIRECT:
+    data->progress.t_redirect =
+      (double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000.0;
+    break;
   }
 }
 
index 409e5d51de7353e436ae51fcd3923f0fa74a0f59..2dc19a73e583f4e326b42dcbed576b55d43175bd 100644 (file)
@@ -34,6 +34,7 @@ typedef enum {
   TIMER_STARTTRANSFER,
   TIMER_POSTRANSFER,
   TIMER_STARTSINGLE,
+  TIMER_REDIRECT,
   TIMER_LAST /* must be last */
 } timerid;
   
@@ -44,6 +45,7 @@ void Curl_pgrsSetUploadSize(struct SessionHandle *data, double size);
 void Curl_pgrsSetDownloadCounter(struct SessionHandle *data, double size);
 void Curl_pgrsSetUploadCounter(struct SessionHandle *data, double size);
 int Curl_pgrsUpdate(struct connectdata *);
+void Curl_pgrsResetTimes(struct SessionHandle *data);
 void Curl_pgrsTime(struct SessionHandle *data, timerid timer);
 
 
index f1f13d3ff3984906f43d3324c736ad5c87df8eda..dcdb4708d295fd9fecef830ab92581ecc74413e5 100644 (file)
@@ -1312,6 +1312,8 @@ CURLcode Curl_perform(struct SessionHandle *data)
            */
           break;
         }
+        Curl_pgrsTime(data, TIMER_REDIRECT);
+        Curl_pgrsResetTimes(data);
         continue;
       }
     }
index 43d2f5fe180ea77ec5c05fbe33b9c207c631e5ba..0a041699651c6801ea8d7a16c4e1913f0d19f4b6 100644 (file)
@@ -451,6 +451,7 @@ struct Progress {
   double t_connect;
   double t_pretransfer;
   double t_starttransfer;
+  double t_redirect;
 
   struct timeval start;
   struct timeval t_startsingle;