Return-Path: Delivered-To: apmail-httpd-cvs-archive@www.apache.org Received: (qmail 28398 invoked from network); 18 May 2007 22:43:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 18 May 2007 22:43:23 -0000 Received: (qmail 58200 invoked by uid 500); 18 May 2007 22:43:29 -0000 Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 58152 invoked by uid 500); 18 May 2007 22:43:29 -0000 Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@httpd.apache.org Received: (qmail 58141 invoked by uid 99); 18 May 2007 22:43:29 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 May 2007 15:43:29 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 May 2007 15:43:22 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 506D31A981A; Fri, 18 May 2007 15:43:02 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r539621 - in /httpd/httpd/trunk: CHANGES modules/cache/mod_cache.c Date: Fri, 18 May 2007 22:43:01 -0000 To: cvs@httpd.apache.org From: jerenkrantz@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070518224302.506D31A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jerenkrantz Date: Fri May 18 15:42:59 2007 New Revision: 539621 URL: http://svn.apache.org/viewvc?view=rev&rev=539621 Log: mod_cache: Do not set Date or Expires when they are missing from the original response or are invalid. Modified: httpd/httpd/trunk/CHANGES httpd/httpd/trunk/modules/cache/mod_cache.c Modified: httpd/httpd/trunk/CHANGES URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?view=diff&rev=539621&r1=539620&r2=539621 ============================================================================== --- httpd/httpd/trunk/CHANGES [utf-8] (original) +++ httpd/httpd/trunk/CHANGES [utf-8] Fri May 18 15:42:59 2007 @@ -2,6 +2,9 @@ Changes with Apache 2.3.0 [Remove entries to the current 2.0 and 2.2 section below, when backported] + *) mod_cache: Do not set Date or Expires when they are missing from + the original response or are invalid. [Justin Erenkrantz] + *) mod_cache: Correctly handle HEAD requests on expired cache content. PR 41230. [Niklas Edmundsson] Modified: httpd/httpd/trunk/modules/cache/mod_cache.c URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/cache/mod_cache.c?view=diff&rev=539621&r1=539620&r2=539621 ============================================================================== --- httpd/httpd/trunk/modules/cache/mod_cache.c (original) +++ httpd/httpd/trunk/modules/cache/mod_cache.c Fri May 18 15:42:59 2007 @@ -318,7 +318,6 @@ static int cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) { int rv = !OK; - int date_in_errhdr = 0; request_rec *r = f->r; cache_request_rec *cache; cache_server_conf *conf; @@ -653,10 +652,7 @@ /* Read the date. Generate one if one is not supplied */ dates = apr_table_get(r->err_headers_out, "Date"); - if (dates != NULL) { - date_in_errhdr = 1; - } - else { + if (dates == NULL) { dates = apr_table_get(r->headers_out, "Date"); } if (dates != NULL) { @@ -668,25 +664,10 @@ now = apr_time_now(); if (info->date == APR_DATE_BAD) { /* No, or bad date */ - char *dates; /* no date header (or bad header)! */ - /* add one; N.B. use the time _now_ rather than when we were checking - * the cache - */ - if (date_in_errhdr == 1) { - apr_table_unset(r->err_headers_out, "Date"); - } - date = now; - dates = apr_pcalloc(r->pool, MAX_STRING_LEN); - apr_rfc822_date(dates, now); - apr_table_set(r->headers_out, "Date", dates); - ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, - "cache: Added date header"); - info->date = date; - } - else { - date = info->date; + info->date = now; } + date = info->date; /* set response_time for HTTP/1.1 age calculations */ info->response_time = now; @@ -714,7 +695,6 @@ * expire date = date + defaultexpire */ if (exp == APR_DATE_BAD) { - char expire_hdr[APR_RFC822_DATE_LEN]; char *max_age_val; if (ap_cache_liststr(r->pool, cc_out, "max-age", &max_age_val) && @@ -751,13 +731,9 @@ x = conf->maxex; } exp = date + x; - apr_rfc822_date(expire_hdr, exp); - apr_table_set(r->headers_out, "Expires", expire_hdr); } else { exp = date + conf->defex; - apr_rfc822_date(expire_hdr, exp); - apr_table_set(r->headers_out, "Expires", expire_hdr); } } info->expire = exp;