easy: Reset all statistical session info in curl_easy_reset

Bug: https://github.com/curl/curl/issues/1017
Reported-by: Jeroen Ooms
This commit is contained in:
Jay Satiro 2016-09-17 01:48:20 -04:00
parent 6834ebaaa3
commit 22cfeac730
7 changed files with 153 additions and 7 deletions

View file

@ -995,6 +995,9 @@ void curl_easy_reset(struct Curl_easy *data)
/* zero out Progress data: */
memset(&data->progress, 0, sizeof(struct Progress));
/* zero out PureInfo data: */
Curl_initinfo(data);
data->progress.flags |= PGRS_HIDE;
data->state.current_speed = -1; /* init to negative == impossible */
}

View file

@ -36,8 +36,8 @@
#include "memdebug.h"
/*
* This is supposed to be called in the beginning of a perform() session
* and should reset all session-info variables
* This is supposed to be called in the beginning of a perform() session and
* in curl_easy_reset() and should reset all session-info variables.
*/
CURLcode Curl_initinfo(struct Curl_easy *data)
{
@ -58,18 +58,27 @@ CURLcode Curl_initinfo(struct Curl_easy *data)
info->filetime = -1; /* -1 is an illegal time and thus means unknown */
info->timecond = FALSE;
info->header_size = 0;
info->request_size = 0;
info->proxyauthavail = 0;
info->httpauthavail = 0;
info->numconnects = 0;
free(info->contenttype);
info->contenttype = NULL;
info->header_size = 0;
info->request_size = 0;
info->numconnects = 0;
free(info->wouldredirect);
info->wouldredirect = NULL;
info->conn_primary_ip[0] = '\0';
info->conn_local_ip[0] = '\0';
info->conn_primary_port = 0;
info->conn_local_port = 0;
#ifdef USE_SSL
Curl_ssl_free_certinfo(data);
#endif
return CURLE_OK;
}

View file

@ -1104,6 +1104,7 @@ struct connectdata {
/*
* Struct to keep statistical and informational data.
* All variables in this struct must be reset in Curl_initinfo().
*/
struct PureInfo {
int httpcode; /* Recent HTTP, FTP, RTSP or SMTP response code */