httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jwool...@apache.org
Subject cvs commit: httpd-2.0/modules/http http_protocol.c
Date Wed, 08 May 2002 02:17:04 GMT
jwoolley    02/05/07 19:17:04

  Modified:    .        CHANGES
               modules/http http_protocol.c
  Log:
  Fix if-modified-since on win32, I think.  It should fix it in theory.
  Verification would be nice.  At least I know it still works on Unix.  ;)
  
  Revision  Changes    Path
  1.765     +4 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.764
  retrieving revision 1.765
  diff -u -d -u -r1.764 -r1.765
  --- CHANGES	7 May 2002 00:17:10 -0000	1.764
  +++ CHANGES	8 May 2002 02:17:03 -0000	1.765
  @@ -1,5 +1,9 @@
   Changes with Apache 2.0.37
   
  +  *) Fixed If-Modified-Since on Win32, which would give false positives
  +     because of the sub-second resolution of file timestamps on that
  +     platform.  [Cliff Woolley]
  +
     *) Reverse the hook ordering for mod_userdir and mod_alias so
        that Alias/ScriptAlias will override Userdir.  PR 8841
        [Joshua Slive]
  
  
  
  1.418     +11 -5     httpd-2.0/modules/http/http_protocol.c
  
  Index: http_protocol.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/http/http_protocol.c,v
  retrieving revision 1.417
  retrieving revision 1.418
  diff -u -d -u -r1.417 -r1.418
  --- http_protocol.c	6 May 2002 08:14:52 -0000	1.417
  +++ http_protocol.c	8 May 2002 02:17:04 -0000	1.418
  @@ -290,7 +290,7 @@
   {
       const char *etag;
       const char *if_match, *if_modified_since, *if_unmodified, *if_nonematch;
  -    apr_time_t mtime;
  +    apr_int64_t mtime;
   
       /* Check for conditional requests --- note that we only want to do
        * this if we are successful so far and we are not processing a
  @@ -309,8 +309,11 @@
   
       etag = apr_table_get(r->headers_out, "ETag");
   
  +    /* All of our comparisons must be in seconds, because that's the
  +     * highest time resolution the HTTP specification allows.
  +     */
       /* XXX: we should define a "time unset" constant */
  -    mtime = (r->mtime != 0) ? r->mtime : apr_time_now();
  +    mtime = ((r->mtime != 0) ? r->mtime : apr_time_now()) / APR_USEC_PER_SEC;
   
       /* If an If-Match request-header field was given
        * AND the field value is not "*" (meaning match anything)
  @@ -334,7 +337,7 @@
           if (if_unmodified != NULL) {
               apr_time_t ius = apr_date_parse_http(if_unmodified);
   
  -            if ((ius != APR_DATE_BAD) && (mtime > ius)) {
  +            if ((ius != APR_DATE_BAD) && (mtime > (ius / APR_USEC_PER_SEC)))
{
                   return HTTP_PRECONDITION_FAILED;
               }
           }
  @@ -387,9 +390,12 @@
                && ((if_modified_since =
                     apr_table_get(r->headers_in,
                                   "If-Modified-Since")) != NULL)) {
  -        apr_time_t ims = apr_date_parse_http(if_modified_since);
  +        apr_int64_t ims, reqtime;
   
  -        if ((ims >= mtime) && (ims <= r->request_time)) {
  +        ims = apr_date_parse_http(if_modified_since) / APR_USEC_PER_SEC;
  +        reqtime = r->request_time / APR_USEC_PER_SEC;
  +
  +        if ((ims >= mtime) && (ims <= reqtime)) {
               return HTTP_NOT_MODIFIED;
           }
       }
  
  
  

Mime
View raw message