Closed Bug 1268775 Opened 9 years ago Closed 9 years ago

Cannot establish connection when using HTTP/2 and POST after idle time

Categories

(Core :: Networking: HTTP, defect)

46 Branch
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1269055

People

(Reporter: nick, Unassigned)

Details

(Whiteboard: [necko-backlog])

User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36 Steps to reproduce: Browse system using POST requests using HTTP/2 connection (nginx 1.9.15). Then stop for 5 minutes or more. Actual results: Then I try to browse the same system in opened tab (afrer 5 mins idle) I get error: cannot establish secure connection. After several refreshes everything works fine. This happens only in 46 version, on Ubuntu 16.04 and Windows 7 - the same. FF 45.0.1 works fine in the same setup. Expected results: Normal browsing.
Component: Untriaged → Networking: HTTP
Product: Firefox → Core
Nick, do you want to take a look? or Patrick?
Flags: needinfo?(hurley)
Whiteboard: [necko-backlog]
I've tested Firefox 46 with nginx and it seems there is a serious degradation. Firefox 46 has lost an ability to properly handle refused streams. Previous versions resend the request in this case as expected. As a result the first POST request in the connection fails, since nginx in order to lower initial window refuses all streams with DATA until the SETTINGS frame is acknowledged.
Status: UNCONFIRMED → RESOLVED
Closed: 9 years ago
Flags: needinfo?(hurley)
Resolution: --- → DUPLICATE
(In reply to Valentin V. Bartenev from comment #2) > I've tested Firefox 46 with nginx and it seems there is a serious > degradation. Firefox 46 has lost an ability to properly handle refused > streams. Previous versions resend the request in this case as expected. > its a dup of 1269055 - fixed on 47. Its not known if it will be fixed in a dot release of 46 yet. > As a result the first POST request in the connection fails, since nginx in > order to lower initial window refuses all streams with DATA until the > SETTINGS frame is acknowledged. as discussed on httpbis - that's really a pretty severe shortcoming with the server. If you refuse a stream that is adhering to the default buffering properties of the session you are running the risk of not getting that transaction. H2 does not have the round trip property you are depending on.
It works fine with Nginx 1.9.12. We was hit by this problem when upgrading to Nginx 1.10.
Hi Ondrej, nick, and Valentin. Here's a suggestion from our developers for a workaround: Adjust your server side persistent connection timeout to be about 5 seconds longer than the firefox value. Firefox uses 115 seconds for HTTP/1.x and 180 seconds for HTTP/2. Hope that helps. If you try it, please let us know the result.
Flags: needinfo?(vbart)
Flags: needinfo?(nick)
Flags: needinfo?(bugzilla)
@lizzard "keepalive_timeout 185s;" does not help nginx
Flags: needinfo?(vbart)
Flags: needinfo?(nick)
Flags: needinfo?(bugzilla)
You need to log in before you can comment on or make changes to this bug.