New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 2 users

Issue metadata

Status: Fixed
Closed: Jun 2017
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Sign in to add a comment

Issue 726725: Wrong status code used when rejecting push streams

Reported by, May 26 2017 Project Member

Issue description

Chrome rejects pushed streams if the item is already in the push cache. However, it rejects with the PROTOCOL_ERROR code, whereas it should use CANCEL or REFUSED_STREAM.

I used to test, where the root URL pushes /data. If you refresh the page without requesting /data you'll see the PROTOCOL_ERROR.

Comment 1 by, May 26 2017

Components: Internals>Network>HTTP2

Comment 2 by, May 30 2017

jakearchibald@: Thanks for providing the feedback. Could you help provide a net-internals for us to investigate? And which version of chrome are you testing against?

Comment 3 by, May 31 2017

Look for the H2 connection to localhost:3001.
264 KB View Download

Comment 4 by, May 31 2017

Components: Internals>Network>QUIC
Status: Assigned (was: Untriaged)
jakearchibald@: when you say "you'll see the PROTOCOL_ERROR", presumably you are saying the PROTOCOL_ERROR in net logs, right? It's not user visisble?

This is cancellation from push cache rather than the HTTP cache.

The error code is generated in SpdySession::TryCreatePushStream, where the resource has been pushed in an earlier promise, but not claimed. So next time, the resource is pushed again, the push cache will notice that. We currently generated a PROTOCL_ERROR, which is a minor bug as we are using the wrong error code. 

According to the sepc iff the client determines, for any reason, that it does not wish to receive the pushed response from the server or if the server takes... the client can send a RST_STREAM frame, using either the CANCEL or REFUSED_STREAM code and referencing the pushed stream's identifier.

This bug applied to QUIC as well.

Comment 5 by, Jun 1 2017

Project Member
The following revision refers to this bug:

commit 4f304415e461ebcb905767d603cc580e691b81a9
Author: zhongyi <>
Date: Thu Jun 01 02:00:03 2017

Use correct error code: REFUSED_STREAM to reject server push from the server in SPDY.

BUG= 726725 

Cr-Commit-Position: refs/heads/master@{#476147}


Comment 6 by, Jun 2 2017

Components: -Internals>Network>QUIC
Labels: Needs-Feedback
Status: Fixed (was: Assigned)
Since there might be ongoing changes to supersede the RFC 7540 guidance, this bug currently only applies to HTTP/2 and is fixed in commit 4f304415e461ebcb905767d603cc580e691b81a9.

jakearchibald@: the fix has been landed in Chrome Canary: 61.0.3118.0. Could you take a look and verify the fix? Thanks!

Sign in to add a comment