Roll forward of changelist 458083483 with fixes

Original had some minor bugs in the sections #if'ed out on Linux.  Fixed and confirmed those fixes by building and running the tests with the #if's commented up to run the non-Linux code on Linux.

(Note to self: When not developing in Chrome, there's a whole lot less presubmit support to make sure things still build on other platforms, so pay more attention to platform-specific code.)

*** Original change description ***

Create low-level socket library

Acts to hide platform-specific details.  Fills a similar role (and is written with a similar interface) as QuicUdpSocketApi, except a little more general, less specific to UDP and QUIC's usage of UDP (and not named specifically "UDP" to avoid silliness like using QuicUdpSocketFd...

***

PiperOrigin-RevId: 458235267
12 files changed
tree: 2c370055baef72d173b3a3f473d6e61b16dbc2e7
  1. build/
  2. quiche/
  3. .bazelrc
  4. BUILD.bazel
  5. CONTRIBUTING.md
  6. LICENSE
  7. README.md
  8. WHITESPACE
  9. WORKSPACE.bazel
README.md

QUICHE

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.