You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2016/09/09 07:44:21 UTC

[jira] [Work logged] (TS-4759) Intermittent HTTP/2 failure with h2spec (6.4.)

     [ https://issues.apache.org/jira/browse/TS-4759?focusedWorklogId=28573&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-28573 ]

ASF GitHub Bot logged work on TS-4759:
--------------------------------------

                Author: ASF GitHub Bot
            Created on: 09/Sep/16 07:43
            Start Date: 09/Sep/16 07:43
    Worklog Time Spent: 10m 
      Work Description: GitHub user masaori335 opened a pull request:

    https://github.com/apache/trafficserver/pull/999

    TS-4759: Fix stream states management

    Below is the situation when this failure is happen.
    
    1. h2spec sends a HEADERS frame with END_HEADERS flag and without END_STREAM flag.
    2. TS returns a HEADERS frame and two DATA frames immediately. And TS set server side stream state `closed`.
    3. h2spec sends RST_STREAM with a length other than 4 cotets.
    4. TS ignores RST_STREAM to closed stream. 
    
    There are two problems.
    
    - h2spec assumes server side stream state is open. ( This is fixed by h2spec v1.5.0 )
    - At #2, TS should change server side stream state to `half-close (local)`.
       And send RST_STREAM frame to client and make state `closed`.
    
    To fix this
    
    - Change stream state to `half-close (local)` from `idle` or `open` when send a frame w/ END_STREAM flag
    - Make send_a_data_frame to return HTTP2_SEND_A_DATA_FRAME_DONE when send DATA frame w/ END_STREAM flag
    - Set stream state CLOSED when error is happen

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/masaori335/trafficserver ts-4759

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/trafficserver/pull/999.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #999
    
----
commit a907e554efcfd4789ad13e7bf3df32ed2de273ea
Author: Masaori Koshiba <ma...@apache.org>
Date:   2016-08-29T06:19:00Z

    TS-4759: Fix stream states management
    
    - Change stream state from IDLE or OPEN to HALF_CLOSED_LOCAL when send a frame w/ END_STREAM
    - Make send_a_data_frame to return HTTP2_SEND_A_DATA_FRAME_DONE when send DATA frame w/ END_STREAM
    - Set stream state CLOSED when error is happen

----


Issue Time Tracking
-------------------

            Worklog Id:     (was: 28573)
            Time Spent: 10m
    Remaining Estimate: 0h

> Intermittent HTTP/2 failure with h2spec (6.4.)
> ----------------------------------------------
>
>                 Key: TS-4759
>                 URL: https://issues.apache.org/jira/browse/TS-4759
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: HTTP/2
>            Reporter: Masaori Koshiba
>            Assignee: Masaori Koshiba
>             Fix For: 7.1.0
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> {noformat}
>   6.4. RST_STREAM
>     × Sends a RST_STREAM frame with a length other than 4 octets
>       - The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR.
>         Expected: GOAWAY frame (ErrorCode: FRAME_SIZE_ERROR)
>                   Connection close
>           Actual: DATA frame (Length: 0, Flags: 1)
> {noformat}
> ( h2spec v1.4.2 )



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