commit | f4cbfd7ea34b857ac97349265ac0f853e115bdcf | [log] [tgz] |
---|---|---|
author | dschinazi <dschinazi@google.com> | Tue Aug 13 18:20:57 2024 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Aug 13 18:22:40 2024 -0700 |
tree | 2d5b971c10738b0c2885f6b7e3d6bfe080b6714a | |
parent | 8fb5d46ec0a98305fb7d30a08d5a233951bfffb5 [diff] |
Add ability to run QuicDispatcher without any versions When I added this QUIC_BUG back in cl/284274377, my assumption was that we'd never want to run a QuicDispatcher with empty versions. It turns out that this assumption was wrong: it's useful to do this if we want the dispatcher to still have the ability to send version negotiation packets to avoid client timeouts. This is a feature we need for Privacy Proxy, where we want Chrome to fall back quickly if the proxies are unavailable. In particular, when we disable IP Protection, we want to put the dispatcher in this state. I'll also note that this QUIC_BUG wasn't particularly useful, since it only checked at construction time. It was possible to construct a dispatcher with a version and then use reloadable flags to remove that version, causing the dispatcher to land in this state without firing any QUIC_BUGs. So this CL removes the QUIC_BUG, and adds test to confirm that the dispatcher behaves correctly in this state - which is to respond to packets from all versions with version negotiation packets. This change is not flag-protected, because it is never reached in production today (if it were, the QUIC_BUG would be firing). PiperOrigin-RevId: 662723304
QUICHE stands for QUIC, Http, Etc. It is Google‘s production-ready implementation of QUIC, HTTP/2, HTTP/3, and related protocols and tools. It powers Google’s servers, Chromium, Envoy, and other projects. It is actively developed and maintained.
There are two public QUICHE repositories. Either one may be used by embedders, as they are automatically kept in sync:
To embed QUICHE in your project, platform APIs need to be implemented and build files need to be created. Note that it is on the QUICHE team's roadmap to include default implementation for all platform APIs and to open-source build files. In the meanwhile, take a look at open source embedders like Chromium and Envoy to get started:
To contribute to QUICHE, follow instructions at CONTRIBUTING.md.
QUICHE is only supported on little-endian platforms.