Subject: [quicwg/base-drafts] Can an H3 server send a response before receiving the SETTINGS frame? (#2726)

From: Marten Seemann <[email-masked]>
Date: Mon, 20 May 2019 07:41:22 -0700

It's unclear if a H3 server can make the tradeoff between:
1. blocking all responses until the SETTINGS frame is received
2. sending a response right away, sacrificing some compression efficiency in order to avoid the HoL blocking

Furthermore, we need to be more specific if a client MUST send a SETTINGS frame immediately after establishing a connection. Currently, we only say that 
> Each side MUST initiate a single control stream at the beginning of the connection and send its SETTINGS frame as the first frame on this stream.

This allows endpoints to defer sending the SETTINGS indefinitely (as long as they don't send anything else on the control stream).

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2726

---

From: Lucas Pardue <[email-masked]>
Date: Mon, 20 May 2019 07:47:29 -0700

We hit an issue around this during the Prague interop I think. At the time I wrote on slack:

> When does the "beginning" begin and end? the end of the beginning is the reception of SETTINGS at both endpoints?

THe HTTP/3 connection lifecycle is not well defined.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2726#issuecomment-494018973

---

From: Kazuho Oku <[email-masked]>
Date: Mon, 20 May 2019 08:30:14 -0700

It's my understanding that the endpoints (both the server and the client) can make that call (i.e. either wait for SETTINGS before sending a HTTP message, or send the HTTP message right away sacrificing some efficiency).

> This allows endpoints to defer sending the SETTINGS indefinitely (as long as they don't send anything else on the control stream).

If the current sentence sounds unclear, it might be worth rephrasing it to "Each side MUST initiate a single control stream and send its SETTINGS frame as the first frame on this stream at the beginning of the connection".

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2726#issuecomment-494036891

---

From: Lucas Pardue <[email-masked]>
Date: Mon, 20 May 2019 08:53:22 -0700

The irritating phrase for me is "beginning of connection". An HTTP/3 connection can work perfectly well without ever sending SETTINGS, in either direction. So it is perpetually beginning until its not. The post-beginning phase doesn't really add anything; the endpoints are already adjusting their behaviour based on the connection parameters: either default or peer-set.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2726#issuecomment-494046009