From 62d205a2ec38ed54e359625d69a7210dc274f093 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 16 Apr 2002 07:59:20 +0000 Subject: [PATCH] Dirk Manske brought the patch that introduces two new CURLINFO_* values: CURLINFO_REDIRECT_TIME and CURLINFO_REDIRECT_COUNT. --- CHANGES | 15 +++++++++++++++ include/curl/curl.h | 5 ++++- lib/getinfo.c | 7 +++++++ lib/progress.c | 13 +++++++++++++ lib/progress.h | 2 ++ lib/transfer.c | 2 ++ lib/urldata.h | 1 + 7 files changed, 44 insertions(+), 1 deletion(-) 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;