use GMT for the conditional timed gets (reported by Phil Karn)
authorDaniel Stenberg <daniel@haxx.se>
Tue, 17 Apr 2001 07:28:49 +0000 (07:28 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 17 Apr 2001 07:28:49 +0000 (07:28 +0000)
lib/http.c

index a701e2a..58d03ac 100644 (file)
@@ -646,12 +646,21 @@ CURLcode Curl_http(struct connectdata *conn)
     if(data->timecondition) {
       struct tm *thistime;
 
+      /* Phil Karn (Fri, 13 Apr 2001) pointed out that the If-Modified-Since
+       * header family should have their times set in GMT as RFC2616 defines:
+       * "All HTTP date/time stamps MUST be represented in Greenwich Mean Time
+       * (GMT), without exception. For the purposes of HTTP, GMT is exactly
+       * equal to UTC (Coordinated Universal Time)." (see page 20 of RFC2616).
+       */
+
 #ifdef HAVE_LOCALTIME_R
       /* thread-safe version */
+      /* We assume that the presense of localtime_r() proves the presense
+         of gmtime_r() which is a bit ugly but might work */
       struct tm keeptime;
-      thistime = (struct tm *)localtime_r(&data->timevalue, &keeptime);
+      thistime = (struct tm *)gmtime_r(&data->timevalue, &keeptime);
 #else
-      thistime = localtime(&data->timevalue);
+      thistime = gmtime(&data->timevalue);
 #endif
       if(NULL == thistime) {
         failf(data, "localtime() failed!");