- From: Kari Hurtta <hurtta-ietf@elmme-mailer.org>
- Date: Sat, 3 Aug 2019 10:58:22 +0300 (EEST)
- To: Lucas Pardue <lucaspardue.24.7@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>
- CC: Kari Hurtta <hurtta-ietf@elmme-mailer.org>, HTTP Working Group <ietf-http-wg@w3.org>, Matthew Kerwin <matthew@kerwin.net.au>, Brad Lassey <lassey@chromium.org>, Dmitri Tikhonov <dtikhonov@litespeedtech.com>
> 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 Saturday, 3 August 2019 08:08:23 UTC