Commit d4e16af3 authored by Jim Jagielski's avatar Jim Jagielski
Browse files

Backport:

   * mod_cache: Let Cache-Control max-age set the expiration date. 
        Trunk version of patch:
         http://svn.apache.org/viewvc?view=rev&revision=539063
        2.2.x version of patch:
         http://people.apache.org/~jerenkrantz/max-age-expire-2.2.x.patch
         (No ->minex in 2.2.x)
        +1: jerenkrantz, fielding, striker



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@539430 13f79535-47bb-0310-9956-ffa450edef68
parent 159755aa
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
                                                        -*- coding: utf-8 -*-
                                                        -*- coding: utf-8 -*-
Changes with Apache 2.2.5
Changes with Apache 2.2.5
  *) mod_cache: Let Cache-Control max-age set the expiration of the cached
     representation if Expires is not set.  [Justin Erenkrantz]
  *) mod_cache: Allow caching of requests with query arguments when
  *) mod_cache: Allow caching of requests with query arguments when
     Cache-Control max-age is explicitly specified.  [Justin Erenkrantz]
     Cache-Control max-age is explicitly specified.  [Justin Erenkrantz]
+0 −8
Original line number Original line Diff line number Diff line
@@ -86,14 +86,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
      +1: jfclere, rpluem, wrowe
      +1: jfclere, rpluem, wrowe
      jerenkrantz says: Does not apply cleanly to 2.2.x.
      jerenkrantz says: Does not apply cleanly to 2.2.x.


   * mod_cache: Let Cache-Control max-age set the expiration date.
     Trunk version of patch:
       http://svn.apache.org/viewvc?view=rev&revision=539063
     2.2.x version of patch:
       http://people.apache.org/~jerenkrantz/max-age-expire-2.2.x.patch
       (No ->minex in 2.2.x)
     +1: jerenkrantz, fielding, striker

PATCHES PROPOSED TO BACKPORT FROM TRUNK:
PATCHES PROPOSED TO BACKPORT FROM TRUNK:


    * ApacheMonitor: Fix Windows Vista detection.
    * ApacheMonitor: Fix Windows Vista detection.
+26 −6
Original line number Original line Diff line number Diff line
@@ -701,19 +701,39 @@ static int cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in)
    }
    }


    /* if no expiry date then
    /* if no expiry date then
     *   if lastmod
     *   if Cache-Control: max-age present
     *      expiry date = date + max-age
     *   else if lastmod
     *      expiry date = date + min((date - lastmod) * factor, maxexpire)
     *      expiry date = date + min((date - lastmod) * factor, maxexpire)
     *   else
     *   else
     *      expire date = date + defaultexpire
     *      expire date = date + defaultexpire
     */
     */
    if (exp == APR_DATE_BAD) {
    if (exp == APR_DATE_BAD) {
        char expire_hdr[APR_RFC822_DATE_LEN];
        char expire_hdr[APR_RFC822_DATE_LEN];
        char *max_age_val;


        if (ap_cache_liststr(r->pool, cc_out, "max-age", &max_age_val) &&
            max_age_val != NULL) {
            apr_int64_t x;

            errno = 0;
            x = apr_atoi64(max_age_val);
            if (errno) {
                x = conf->defex;
            }
            else {
                x = x * MSEC_ONE_SEC;
            }
            if (x > conf->maxex) {
                x = conf->maxex;
            }
            exp = date + x;
        }
        else if ((lastmod != APR_DATE_BAD) && (lastmod < date)) {
            /* if lastmod == date then you get 0*conf->factor which results in
            /* if lastmod == date then you get 0*conf->factor which results in
             * an expiration time of now. This causes some problems with
             * an expiration time of now. This causes some problems with
             * freshness calculations, so we choose the else path...
             * freshness calculations, so we choose the else path...
             */
             */
        if ((lastmod != APR_DATE_BAD) && (lastmod < date)) {
            apr_time_t x = (apr_time_t) ((date - lastmod) * conf->factor);
            apr_time_t x = (apr_time_t) ((date - lastmod) * conf->factor);


            if (x > conf->maxex) {
            if (x > conf->maxex) {