mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
Dirk Manske brought the patch that introduces two new CURLINFO_* values:
CURLINFO_REDIRECT_TIME and CURLINFO_REDIRECT_COUNT.
This commit is contained in:
parent
29e873b12d
commit
62d205a2ec
15
CHANGES
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user