Hello,
On Fri, 21 Sep 2018 at 15:45, Pierre Cheynier <[email protected]> wrote: > Let me know if you see something obvious here, or if this is candidate to a > bug. > > We have a service using SSE through text/event-stream content-type. > > In HTTP/1.1 we have a normal stream as expected : > < HTTP/1.1 200 OK > < Content-Type: text/event-stream > data: {"a": "b"} > > data: {"a": "b"} > > data: {"a": "b"} > (...) > > HAProxy on its side adds the `Connection: close` header. > > When adding 'alpn h2,http/1.1' to the bind directive, we observe the > following: after the first 200OK, the connection is closed by haproxy both on > server and client side by sending a FIN/ACK. The backend server is not providing neither Content-Length, nor using chunked Transfer-Encoding in the response. This makes using keep-alive impossible, regardless of the HTTP version. Theoretically the frontend connection could be kept up in this situation as far as I can tell, but that is an optimization that will require more work in haproxy (as the http layer and error handling becomes more http version agnostic - currently many transaction based problems affect the entire H2 mux). The easiest way to fix this problem is to make your backend server keep-alive aware. Future haproxy (major) releases will likely handle this case better. Correct, Willy? Regards, Lukas

