-
-
Notifications
You must be signed in to change notification settings - Fork 83
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
HTTP 2: invalid state progression ('closed' to 'closed') #145
Comments
PCAP + TLS keys for decrypting the HTTPS traffic: Client is Firefox 66. You can decrypt the HTTPS traffic on port 5380 using Wireshark configuration described here: |
Okay, so now once again and with timestamps to make it easier to decode:
I.e. the error is reported at At first glance it seems that HTTP/2 message |
Okay, now I'm convinced this is bug/omission in RST_STREAM frame handler triggered by race condition. The main problem is that RST_STREAM handler does not take into account network delay and/or out-of-order processing. Network packets as seen on network are send and received in this order:
But in fact cqueues/lua-http is processing frames in different order:
IMHO normal network latency can cause that legitimate RST_STREAM frame will be received after answer was already sent, so receiving RST_STREAM on closed stream should be ignored. |
Fixes: daurnimator#146 I'm not sure if implementation is correct, or if it best way to handle it. In any case it fixes client-visible problem where lua-http server keep connection open even after internal error (like daurnimator#145).
Fixes: daurnimator#146 I'm not sure if implementation is correct, or if it best way to handle it. In any case it fixes client-visible problem where lua-http server keep connection open even after internal error (like daurnimator#145).
Hello,
I've noticed that /sometimes/ lua-http server throws this error:
I'm going to attach PCAP file with the traffic so you can see what caused this error.
The text was updated successfully, but these errors were encountered: