aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2002-04-16 07:59:20 +0000
committerDaniel Stenberg <daniel@haxx.se>2002-04-16 07:59:20 +0000
commit62d205a2ec38ed54e359625d69a7210dc274f093 (patch)
treedaafe4a6819326a2a00694a6352844770dfef2b4
parent29e873b12d9723a7becb6fb2a06f7f346d3e3157 (diff)
Dirk Manske brought the patch that introduces two new CURLINFO_* values:
CURLINFO_REDIRECT_TIME and CURLINFO_REDIRECT_COUNT.
-rw-r--r--CHANGES15
-rw-r--r--include/curl/curl.h5
-rw-r--r--lib/getinfo.c7
-rw-r--r--lib/progress.c13
-rw-r--r--lib/progress.h2
-rw-r--r--lib/transfer.c2
-rw-r--r--lib/urldata.h1
7 files changed, 44 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index 08c895b89..7187723d2 100644
--- 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.
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 08ee4cb9e..abfe3e523 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -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
diff --git a/lib/getinfo.c b/lib/getinfo.c
index 5be124fff..20a7db1e4 100644
--- a/lib/getinfo.c
+++ b/lib/getinfo.c
@@ -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;
diff --git a/lib/progress.c b/lib/progress.c
index 8c48c1ac1..b3052e425 100644
--- a/lib/progress.c
+++ b/lib/progress.c
@@ -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;
}
}
diff --git a/lib/progress.h b/lib/progress.h
index 409e5d51d..2dc19a73e 100644
--- a/lib/progress.h
+++ b/lib/progress.h
@@ -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);
diff --git a/lib/transfer.c b/lib/transfer.c
index f1f13d3ff..dcdb4708d 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -1312,6 +1312,8 @@ CURLcode Curl_perform(struct SessionHandle *data)
*/
break;
}
+ Curl_pgrsTime(data, TIMER_REDIRECT);
+ Curl_pgrsResetTimes(data);
continue;
}
}
diff --git a/lib/urldata.h b/lib/urldata.h
index 43d2f5fe1..0a0416996 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -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;