Dirk Manske brought the patch that introduces two new CURLINFO_* values:

CURLINFO_REDIRECT_TIME and CURLINFO_REDIRECT_COUNT.
This commit is contained in:
Daniel Stenberg 2002-04-16 07:59:20 +00:00
Родитель 29e873b12d
Коммит 62d205a2ec
7 изменённых файлов: 44 добавлений и 1 удалений

15
CHANGES
Просмотреть файл

@ -6,6 +6,21 @@
History of Changes 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) Daniel (14 April 2002)
- Dirk Manske brought a fix that makes libcurl strip off white spaces from the - Dirk Manske brought a fix that makes libcurl strip off white spaces from the
beginning of cookie contents. beginning of cookie contents.

Просмотреть файл

@ -718,9 +718,12 @@ typedef enum {
CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18, CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18,
CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19,
CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20,
/* Fill in new entries here! */ /* Fill in new entries here! */
CURLINFO_LASTONE = 19 CURLINFO_LASTONE = 21
} CURLINFO; } CURLINFO;
/* unfortunately, the easy.h and multi.h include files need options and info /* unfortunately, the easy.h and multi.h include files need options and info

Просмотреть файл

@ -54,6 +54,7 @@ CURLcode Curl_initinfo(struct SessionHandle *data)
pro->t_pretransfer = 0; pro->t_pretransfer = 0;
pro->t_starttransfer = 0; pro->t_starttransfer = 0;
pro->timespent = 0; pro->timespent = 0;
pro->t_redirect = 0;
info->httpcode = 0; info->httpcode = 0;
info->httpversion=0; info->httpversion=0;
@ -148,6 +149,12 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
case CURLINFO_CONTENT_LENGTH_UPLOAD: case CURLINFO_CONTENT_LENGTH_UPLOAD:
*param_doublep = data->progress.size_ul; *param_doublep = data->progress.size_ul;
break; 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: case CURLINFO_CONTENT_TYPE:
*param_charp = data->info.contenttype; *param_charp = data->info.contenttype;
break; break;

Просмотреть файл

@ -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) void Curl_pgrsTime(struct SessionHandle *data, timerid timer)
{ {
switch(timer) { switch(timer) {
@ -134,6 +143,10 @@ void Curl_pgrsTime(struct SessionHandle *data, timerid timer)
case TIMER_POSTRANSFER: case TIMER_POSTRANSFER:
/* this is the normal end-of-transfer thing */ /* this is the normal end-of-transfer thing */
break; break;
case TIMER_REDIRECT:
data->progress.t_redirect =
(double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000.0;
break;
} }
} }

Просмотреть файл

@ -34,6 +34,7 @@ typedef enum {
TIMER_STARTTRANSFER, TIMER_STARTTRANSFER,
TIMER_POSTRANSFER, TIMER_POSTRANSFER,
TIMER_STARTSINGLE, TIMER_STARTSINGLE,
TIMER_REDIRECT,
TIMER_LAST /* must be last */ TIMER_LAST /* must be last */
} timerid; } timerid;
@ -44,6 +45,7 @@ void Curl_pgrsSetUploadSize(struct SessionHandle *data, double size);
void Curl_pgrsSetDownloadCounter(struct SessionHandle *data, double size); void Curl_pgrsSetDownloadCounter(struct SessionHandle *data, double size);
void Curl_pgrsSetUploadCounter(struct SessionHandle *data, double size); void Curl_pgrsSetUploadCounter(struct SessionHandle *data, double size);
int Curl_pgrsUpdate(struct connectdata *); int Curl_pgrsUpdate(struct connectdata *);
void Curl_pgrsResetTimes(struct SessionHandle *data);
void Curl_pgrsTime(struct SessionHandle *data, timerid timer); void Curl_pgrsTime(struct SessionHandle *data, timerid timer);

Просмотреть файл

@ -1312,6 +1312,8 @@ CURLcode Curl_perform(struct SessionHandle *data)
*/ */
break; break;
} }
Curl_pgrsTime(data, TIMER_REDIRECT);
Curl_pgrsResetTimes(data);
continue; continue;
} }
} }

Просмотреть файл

@ -451,6 +451,7 @@ struct Progress {
double t_connect; double t_connect;
double t_pretransfer; double t_pretransfer;
double t_starttransfer; double t_starttransfer;
double t_redirect;
struct timeval start; struct timeval start;
struct timeval t_startsingle; struct timeval t_startsingle;