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

Jungwoo Lee updated TS-2307:
----------------------------

    Description: 
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.

  was:
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] == '/'))
   -- 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.


> 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)

Reply via email to