- 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