commit | 6939de55e61c54416cd5b1e6a3a6b13ebfa1311b | [log] [tgz] |
---|---|---|
author | QUICHE team <quiche-dev@google.com> | Wed May 15 12:05:21 2019 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Wed May 15 18:01:26 2019 -0700 |
tree | f4df908d970924652f122bf777a15486bedad31c | |
parent | 8777a794cd2b7bfd149883a2dcd551cd1d71a5e2 [diff] |
Change QuartcClientEndpoint to handle client-side version negotiation. This allows Quartc to stop forcing the "no connection version negotiation" flags to false, as QuartcEndpoint can now handle version negotiation properly in either case. (QuartcServerEndpoint already handles server-side version negotiation through the QuartcDispatcher.) In-connection version negotiation is not fully reliable anyway, as some features of new QUIC versions cannot be enabled or disabled in-place within a QuicConnection object (for example, changes to how stream ids are allocated). This only requires three changes: - QuartcEndpoint::Delegate extends QuartcSession::Delegate - QuartcClientEndpoint sits between the session and the final delegate - When QuartcClientEndpoint sees a QUIC_INVALID_VERSION error, it picks another version and tries again This change is mostly cleanup to combine Endpoint and Session delegates and add required overrides to existing delegates. The only other minor change required is that QuartcMediaTransport must now accept more than one call to OnSessionCreated(). All we have to do is remove the DCHECK to allow this--nothing else assumes it will only happen once. gfe-relnote: n/a (Quartc only) PiperOrigin-RevId: 248378366 Change-Id: I442bd69e45f5d65e43d3e99118159f11dc595169
QUICHE (QUIC, Http/2, Etc) is Google‘s implementation of QUIC and related protocols. It powers Chromium as well as Google’s QUIC servers and some other projects.
The code is currently in process of being moved from https://cs.chromium.org/chromium/src/net/third_party/ into this repository. Please excuse our appearance while we're under construction.