You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Phil Sorber (JIRA)" <ji...@apache.org> on 2015/09/14 22:58:46 UTC

[jira] [Assigned] (TS-3912) 200 OK returned on successful conditional request if Last-Modified header not present in stored resposne

     [ https://issues.apache.org/jira/browse/TS-3912?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Phil Sorber reassigned TS-3912:
-------------------------------

    Assignee: Phil Sorber

> 200 OK returned on successful conditional request if Last-Modified header not present in stored resposne
> --------------------------------------------------------------------------------------------------------
>
>                 Key: TS-3912
>                 URL: https://issues.apache.org/jira/browse/TS-3912
>             Project: Traffic Server
>          Issue Type: Bug
>            Reporter: Phil Sorber
>            Assignee: Phil Sorber
>             Fix For: 6.1.0
>
>
> The [spec|https://tools.ietf.org/html/rfc7234#section-4.3.2] says:
> {noformat}
>    A cache recipient SHOULD
>    generate a 304 (Not Modified) response (using the metadata of the
>    selected stored response) if one of the following cases is true: 1)
>    the selected stored response has a Last-Modified field-value that is
>    earlier than or equal to the conditional timestamp; 2) no
>    Last-Modified field is present in the selected stored response, but
>    it has a Date field-value that is earlier than or equal to the
>    conditional timestamp; or, 3) neither Last-Modified nor Date is
>    present in the selected stored response, but the cache recorded it as
>    having been received at a time earlier than or equal to the
>    conditional timestamp.
> {noformat}
> but our [code|https://github.com/apache/trafficserver/blob/master/proxy/http/HttpTransactCache.cc#L1297-L1313] does:
> {noformat}
>   // If-Modified-Since //
>   if (request->presence(MIME_PRESENCE_IF_MODIFIED_SINCE)) {
>     // lm_value is zero if Last-modified not exists
>     ink_time_t lm_value = response->get_last_modified();
>     // we won't return NOT_MODIFIED if Last-modified not exists
>     if ((lm_value == 0) || (request->get_if_modified_since() < lm_value)) {
>       return response->status_get();
>     } else {
>       // we cannot return NOT_MODIFIED yet, need to check If-none-match
>       response_code = HTTP_STATUS_NOT_MODIFIED;
>       if (!request->presence(MIME_PRESENCE_IF_NONE_MATCH)) {
>         return response_code;
>       }
>     }
>   }
> {noformat}
> So we are ignoring Date header and response received time.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)