Re: How to reset ALTSVC

Hi Martin,

On Tue, Mar 31, 2015 at 6:22 PM, Martin Thomson
<martin.thomson@gmail.com> wrote:
> You could send a redirect-to-self value without changing the grammar
> too.  Or you could set the max-age to 0.  Or both.

I do agree with you that either of these could be agreed on as valid
ways to reset alternative services.  I don't particularily like them
from an implementation viewpoint.  The seft-redirect because if your
client implementation does not specifically prepare for this case, it
might end up racing two connections to the same server.  The second
option because if your client implementation does not specifically
prepare for this, it might treat the header as invalid if the max-age
is 0, or use its preferred default like one day, depending on the mood
of the implementer.  RFC 7234 Section 4.2.3 says about age that it's
"0, if not available", but this usage is not "not available", but
"special meaning: this is a valid alternative service with is a
placeholder for null alternative service".

I would not be terribly unhappy if concensus was to use one of these
hacks, but given these caveats, I believe it would still be necessary
to explicitly spell out this use in the specification.

I think the simplest way to say "the alternative services for this
origin is the following list: {empty list}" is to say "{empty list}"
instead of "{one item identical to origin, which is understood to have
the special meaning that it's an empty list}" or "{one item with valid
but arbitrary port and a special, otherwise unused value for ma, which
is understood to have the special meaning that it's an empty list}".

And what if the header or frame contains two alternative services, one
of them the special value (identical to origin or having ma=0), the
other a valid alternative?  The empty list placeholder value is
ignored and makes previously discovered alternative services cleared,
but should the other alternative service one be dropped on the floor
or added to the list?  Or does it depend on the order?  Undefined?

Thanks,

Bence

Received on Wednesday, 1 April 2015 12:12:08 UTC