You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Jungwoo Lee (JIRA)" <ji...@apache.org> on 2013/11/01 02:33:18 UTC

[jira] [Updated] (TS-2307) Range request with If-Range does not work

     [ 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] == '/'))
   - 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] == '/'))
>    - 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)