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)