Fixed bug report #2958074 indicating

(http://curl.haxx.se/bug/view.cgi?id=2958074) that curl on Windows with
option --trace-time did not use local time when timestamping trace lines.
This could also happen on other systems depending on time souurce.
This commit is contained in:
Yang Tse 2010-02-25 06:59:04 +00:00
parent e25c5283d8
commit 6a8aa246ff
4 changed files with 27 additions and 12 deletions

View File

@ -6,6 +6,12 @@
Changelog Changelog
Yang Tse (25 Feb 2010)
- I fixed bug report #2958074 indicating
(http://curl.haxx.se/bug/view.cgi?id=2958074) that curl on Windows with
option --trace-time did not use local time when timestamping trace lines.
This could also happen on other systems depending on time souurce.
Patrick Monnerat (22 Feb 2010) Patrick Monnerat (22 Feb 2010)
- Proper handling of STARTTLS on SMTP, taking CURLUSESSL_TRY into account. - Proper handling of STARTTLS on SMTP, taking CURLUSESSL_TRY into account.
- SMTP falls back to RFC821 HELO when EHLO fails (and SSL is not required). - SMTP falls back to RFC821 HELO when EHLO fails (and SSL is not required).

View File

@ -19,6 +19,7 @@ This release includes the following bugfixes:
o missing quote in libcurl.m4 o missing quote in libcurl.m4
o SMTP: now waits for 250 after the DATA transfer o SMTP: now waits for 250 after the DATA transfer
o SMTP: use angle brackets in RCPT TO o SMTP: use angle brackets in RCPT TO
o curl --trace-time not using local time
This release includes the following known bugs: This release includes the following known bugs:

View File

@ -580,10 +580,7 @@ struct Configurable {
/* for bandwidth limiting features: */ /* for bandwidth limiting features: */
curl_off_t sendpersecond; /* send to peer */ curl_off_t sendpersecond; /* send to peer */
curl_off_t recvpersecond; /* receive from peer */ curl_off_t recvpersecond; /* receive from peer */
struct timeval lastsendtime;
size_t lastsendsize;
struct timeval lastrecvtime;
size_t lastrecvsize;
bool ftp_ssl; bool ftp_ssl;
bool ftp_ssl_reqd; bool ftp_ssl_reqd;
bool ftp_ssl_control; bool ftp_ssl_control;
@ -3651,15 +3648,22 @@ int my_trace(CURL *handle, curl_infotype type,
struct tm *now; struct tm *now;
char timebuf[20]; char timebuf[20];
time_t secs; time_t secs;
static time_t epoch_offset;
static int known_offset;
(void)handle; /* prevent compiler warning */ (void)handle; /* prevent compiler warning */
tv = cutil_tvnow(); if(config->tracetime) {
secs = tv.tv_sec; tv = cutil_tvnow();
now = localtime(&secs); /* not multithread safe but we don't care */ if(!known_offset) {
if(config->tracetime) epoch_offset = time(NULL) - tv.tv_sec;
known_offset = 1;
}
secs = epoch_offset + tv.tv_sec;
now = localtime(&secs); /* not thread safe but we don't care */
snprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d.%06ld ", snprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d.%06ld ",
now->tm_hour, now->tm_min, now->tm_sec, (long)tv.tv_usec); now->tm_hour, now->tm_min, now->tm_sec, (long)tv.tv_usec);
}
else else
timebuf[0]=0; timebuf[0]=0;
@ -4263,8 +4267,6 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
config->showerror=TRUE; config->showerror=TRUE;
config->use_httpget=FALSE; config->use_httpget=FALSE;
config->create_dirs=FALSE; config->create_dirs=FALSE;
config->lastrecvtime = cutil_tvnow();
config->lastsendtime = cutil_tvnow();
config->maxredirs = DEFAULT_MAXREDIRS; config->maxredirs = DEFAULT_MAXREDIRS;
if(argc>1 && if(argc>1 &&

View File

@ -72,6 +72,8 @@ void logmsg(const char *msg, ...)
time_t sec; time_t sec;
struct tm *now; struct tm *now;
char timebuf[20]; char timebuf[20];
static time_t epoch_offset;
static int known_offset;
if (!serverlogfile) { if (!serverlogfile) {
fprintf(stderr, "Error: serverlogfile not set\n"); fprintf(stderr, "Error: serverlogfile not set\n");
@ -79,8 +81,12 @@ void logmsg(const char *msg, ...)
} }
tv = curlx_tvnow(); tv = curlx_tvnow();
sec = tv.tv_sec; if(!known_offset) {
now = localtime(&sec); /* not multithread safe but we don't care */ epoch_offset = time(NULL) - tv.tv_sec;
known_offset = 1;
}
sec = epoch_offset + tv.tv_sec;
now = localtime(&sec); /* not thread safe but we don't care */
snprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d.%06ld", snprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d.%06ld",
(int)now->tm_hour, (int)now->tm_min, (int)now->tm_sec, (long)tv.tv_usec); (int)now->tm_hour, (int)now->tm_min, (int)now->tm_sec, (long)tv.tv_usec);