cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: [ curl-Bugs-1230118 ] curl_getdate(), DST, and cookie expiration (fwd)

From: Ralph Mitchell <ralphmitchell_at_gmail.com>
Date: Wed, 6 Jul 2005 01:06:39 -0500

There's an explanation, and a fix, here:

http://www.codeproject.com/datetime/dstbugs.asp?df=100&forumid=2218&exp=0&select=229121

To put it simply, that's not a bug, that's the OS working as designed,
and to get the correct date/time info, use GetUTCFileModTime...

Ralph Mitchell

On 7/4/05, Daniel Stenberg <daniel-curl_at_haxx.se> wrote:
> Hi friends
>
> We got this bug report on curl_getdate() on Windows, and I need some help with
> testing and fixing/working around this problem.
>
> There are some further details and comments in the actual bug tracker entry...
>
> --
> Commercial curl and libcurl Technical Support: http://haxx.se/curl.html
>
> ---------- Forwarded message ----------
> Bugs item #1230118, was opened at 2005-06-30 05:27
> https://sourceforge.net/tracker/?func=detail&atid=100976&aid=1230118&group_id=976
>
> Summary: curl_getdate(), DST, and cookie expiration
>
> Initial Comment:
> Platform: Windows XP
> libcurl: 7.14
>
> With the system clock properly configured to
> automatically adjust for Daylight Saving Time,
> curl_getdate() appears to return a time_t value which
> is 1 hour ahead of the correct value. This prevents
> cookies from expiring at the proper time.
>
> The following demonstrates the problem:
>
> #include <stdio.h>
> #include "curl/curl.h"
>
> int main()
> {
> time_t tNow = ::time(NULL);
> tm tmGMT;
> char szGMT[128];
>
> ::memcpy(&tmGMT, ::gmtime(&tNow), sizeof(tm));
> ::strftime( szGMT, 128, "%a, %d-%b-%Y %H:%M:%S GMT",
> &tmGMT );
>
> time_t tCURL = ::curl_getdate(szGMT, NULL);
> time_t tDiff = tCURL - tNow;
>
> printf("Current time: %s\n", szGMT);
> printf("Sytem time_t: %i\n", tNow);
> printf("libcurl time_t: %i\n", tCURL);
> printf("Difference: %i seconds\n", tCURL - tNow);
>
> return 0;
> }
>
> -----------------------------------------------------------
> Example run with properly configured system clock
> (during DST):
>
> Current time: Thu, 30-Jun-2005 03:02:14 GMT
> Sytem time_t: 1120100534
> libcurl time_t: 1120104134
> Difference: 3600 seconds
>
> -----------------------------------------------------------
> Example run with automatic DST adjustment disabled:
>
> Current time: Thu, 30-Jun-2005 03:02:28 GMT
> Sytem time_t: 1120100548
> libcurl time_t: 1120100548
> Difference: 0 seconds
>
Received on 2005-07-06