- From: Lucas Pardue <lucaspardue.24.7@gmail.com>
- Date: Wed, 7 Aug 2019 15:41:02 +0100
- To: Kari Hurtta <hurtta-ietf@elmme-mailer.org>
- Cc: HTTP Working Group <ietf-http-wg@w3.org>, Matthew Kerwin <matthew@kerwin.net.au>, Brad Lassey <lassey@chromium.org>, Dmitri Tikhonov <dtikhonov@litespeedtech.com>
- Message-ID: <CALGR9obzFKQ1JqoDDZhBa0tkHge2koDdLuWFw88t1gZjs3LiYg@mail.gmail.com>
Hi Kari, Thanks for sharing your thoughts on this thread (and also thanks to you and Matthew Kerwin for sharing your thoughts on other threads). To best track things, I plan to summarize some of the discussed options as an issue on the I-D's repo. When I get around to that, I'll share the link back to the list. Cheers Lucas On Sat, Aug 3, 2019 at 9:07 AM Kari Hurtta <hurtta-ietf@elmme-mailer.org> wrote: > > Any client that is taking the chance to make a semantic change to the > > frames it is sending would be foolish to not wait on an affirmative > signal > > from the server. RFC 7540 Section 5.5. calls specific attention to such a > > repurposing: > > > > > Extensions that could change the semantics of existing protocol > > components MUST be negotiated before being used. For example, an > > extension that changes the layout of the HEADERS frame cannot be used > > until the peer has given a positive signal that this is acceptable. > > > > Lucas > > Okei, > > Generally repurpose of protocol element requires 3 values (or 2 > bits from bitmask) for SETTINGS parameter SETTINGS_ENABLE_{feature}. > For example values > > • 0 {feature}_NOT_SUPPORTED, > • 1 {feature}_AVAILABLE > • 3 SENDING_{feature} > > > Recipient of repurposed protocol element sends first > SETTINGS parameter SETTINGS_ENABLE_{feature} with value > 1 ({feature}_AVAILABLE). > > > Sender of repurposed protocol element sends SETTINGS parameter > SETTINGS_ENABLE_{feature} with value 3 (SENDING_{feature}) > before it starts sending repurposed protocol element. > > > Recipient interprets protocol element without {feature} > until it receives SETTINGS parameter SETTINGS_ENABLE_{feature} > with value 3 (SENDING_{feature}). > > > Sending SETTINGS parameter SETTINGS_ENABLE_{feature} with > value 3 (SENDING_{feature}) is protocol violation unless > SETTINGS parameter SETTINGS_ENABLE_{feature} with value > 1 ({feature}_AVAILABLE) or 3 (SENDING_{feature}) is received > first. > > Both directions needs separately send SETTINGS parameter > SETTINGS_ENABLE_{feature} with value 3 (SENDING_{feature}) > before repurposed protocol element can be sent. > > SETTINGS parameter SETTINGS_ENABLE_{feature} value 3 (SENDING_{feature}) > imply total ordering of frames, so this means HTTP/2. ( Also > HTTP/3 do not allow several SETTINGS frames.) > > SETTINGS frame with parameter SETTINGS_ENABLE_{feature} with > value 3 (SENDING_{feature}) indicates time when change > on purpose of protocol element happens. > > It is not just enough to know that change is acceptable > for recipient. Recipient must know when change happens. > > Introducing of new protocol elements do not require > sending SETTINGS parameter SETTINGS_ENABLE_{feature} > with value 3 (SENDING_{feature}) when frame content > indicates precense of protocol element. > > / Kari Hurtta > >
Received on Wednesday, 7 August 2019 14:41:35 UTC