Hello QUIC Enthusiasts,

We are dealing with late changes to the v2 draft after Last Call, and I'd
like the opinion of people who have implemented v2 and VN.

The draft currently says:

The server SHOULD start sending its Initial packets using the negotiated
> version as soon as it decides to change. Before the server is able to
> process transport parameters from the client, it might need to respond to
> Initial packets from the client. For these packets the server uses the
> original version.


Once the client has processed a packet using the negotiated version, it
> SHOULD send subsequent Initial packets using that version. The server MUST
> NOT discard its original version Initial receive keys until it successfully
> processes a packet with the negotiated version.


Both endpoints MUST send Handshake or 1-RTT packets using the negotiated
> version. An endpoint MUST drop packets using any other version.


The VN draft says that v2 should make it clear how the client and server
learn the negotiated version, so I have to edit this somehow. The shortest
path is to just add some explanatory text that extrapolates from what's
already here.

But I sense that the first SHOULD complicates the code a bit: if the server
elects to send the server hello with the original version, the client can't
verify the final version until it gets a Handshake. It could say that the
Server Hello MUST be sent with the negotiated version, but it's pretty late
to make that kind of change.

So -- thoughts? Does it make things easier? Do the existing implementations
assume this anyway?

Martin

Reply via email to