-
Notifications
You must be signed in to change notification settings - Fork 29.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
http2 pushPromise in 10.2.0+ #20992
Labels
confirmed-bug
Issues with confirmed bugs.
Comments
Chrome has a bug with self-signed certificates & push so I can't confirm there, but can confirm on Firefox & Safari. Looks like we introduced a bug when we fixed http2 not working in Safari & Edge. Working on a fix. |
kjin
pushed a commit
to kjin/node
that referenced
this issue
Aug 23, 2018
Delay automatically closing the stream with setImmediate in order to allow any pushStreams to be sent first. PR-URL: nodejs#20997 Fixes: nodejs#20992 Reviewed-By: James M Snell <jasnell@gmail.com>
kjin
pushed a commit
to kjin/node
that referenced
this issue
Sep 25, 2018
Delay automatically closing the stream with setImmediate in order to allow any pushStreams to be sent first. PR-URL: nodejs#20997 Fixes: nodejs#20992 Reviewed-By: James M Snell <jasnell@gmail.com>
kjin
pushed a commit
to kjin/node
that referenced
this issue
Oct 16, 2018
Delay automatically closing the stream with setImmediate in order to allow any pushStreams to be sent first. PR-URL: nodejs#20997 Fixes: nodejs#20992 Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I’m afraid I may not be able to describe this well; a lot of HTTP2 stuff goes over my head. I’m aware this module is experimental, so it’s possible that there is an intentional but undocumented API or behavior change in play, but my gut says this is probably a bug.
When running the same code using HTTP2 without the compatibility API in 10.1.0 and 10.2.0 (or 10.2.1), I observe very different results (using chrome://net-internals to observe the back-and-forth) with an end result of no push promise adoption. No errors are thrown — I’ve found nothing observably different in the application — and I’m not at all sure what specifically accounts for the difference in behavior, but it was replicable across two different applications using the HTTP2 module and was consistent in Chrome and Firefox.
tl;dr: since 10.2.0, it seems like push promises stopped working
I’ve tried to put together the most minimal reproduction I could since I don’t have much else to offer for debugging this, though I don’t know of any way to test this that doesn’t involve certs:
If we run this in Node 10.1.0, the dependency’s push promise is adopted.
Transcript (Node 10.1.0)
If we run this in either Node 10.2.0 or 10.2.1, instead the promise (which is seemingly received) is not adopted and the browser requests the dependency:
Transcript (Node 10.2.1)
Comparing the transcripts the first stand-out difference is
(DIRECT)
. I don’t know what this means. But they’re so different altogether that I’m not sure what factors might be significant.Apologies if I’m missing something painfully obvious.
The text was updated successfully, but these errors were encountered: