[
https://issues.apache.org/jira/browse/TS-2307?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13820814#comment-13820814
]
jaekyung oh commented on TS-2307:
---------------------------------
i thought If-Range header doesn't have any defined format to distinguish ETAG
and date. But to determine if the value of If-Range header is ETAG or date
don't we check if it is enclosed in double quotation marks?
ex.
If-Range : "xxxx" ---> means the
value is ETAG
If-Range : Fri, 24 May 2013 01:38:13 GMT ---> means the value is date
but in this case,
Originally Origin server sent If-Range : xxxx. actually meaning ETAG not date!
Anyway traffic server saved that ETAG value in cache.
then client sends request for the same content with If-Range : xxxx(caution:
ETAG was not enclosed by double quotation mark because origin server sent it
without quotation marks).
Consequently traffic server regards it as date and falls in comparing date
routine.
as you can see, traffic server return HTTP_STATUS_RANGE_NOT_SATISFIABLE
nevertheless cache has that ETAG value and client asked with the very ETAG
value.
i'm confused if that is a bug of traffic server or that is the bug of origin.
what do you think?
> Range request with If-Range does not work
> -----------------------------------------
>
> Key: TS-2307
> URL: https://issues.apache.org/jira/browse/TS-2307
> Project: Traffic Server
> Issue Type: Bug
> Components: HTTP
> Affects Versions: 3.2.5, 4.0.1, 4.0.2
> Reporter: Jungwoo Lee
> Labels: A
> Fix For: 4.2.0
>
>
> 1. Precondition
> - Upload file such as video or music file on Origin server
> - On Chrome, access to the content file
> - Repeat followings
> -- Delete the cache of Chrome
> -- Refresh( press F5 )
> 2. Result
> - Chrome does not play the content.
> 3. Cause
> - When Chrome requests including Range and If-Range headers, the value of
> If-Range header can be set to the one of ETAG and Last Modified Date. ATS
> core has unreasonable condition to check if the value of If-Range is ETAG and
> it makes a bug that the value of If-Range will be compared with Last Modified
> Date event if ETAG is set to the value of If-Range.
> As a result, response header does not include Content-Range when the value of
> If-Range is ETAG. Sometimes this makes client abort.
> - The condition to check ETAG is following(
> HttpTransactCache::match_response_to_request_conditionals(HTTPHdr * request,
> HTTPHdr * response) function )
> -- if (!if_value || if_value[0] == '"' || (comma_sep_list_len > 1 &&
> if_value[1] == '/'))
> --- when ETAG doesn't start and end with " this condition will be failed.
> -- The if_value points the string of value of If-Range
> 4. Expected Behaviour
> - Video and music file will be played in all the time on all case.
> -- When the value of If-Range is ETAG and is matched with ETAG of header of
> cached content , response should include the header related with range
> request.
--
This message was sent by Atlassian JIRA
(v6.1#6144)