Summary:
The rdma-unit suite fetched its own Abseil with CMake FetchContent. It now uses the getdeps `absl` project: platforms with a new-enough distro package install it instead of compiling from source, and source builds stay pinned to the same rev so the built code is unchanged.
No functional change intended. Only the test variant's Abseil sourcing changes.
- Drop the test-conditional `glog` entry, an exact duplicate of the unconditional one (`metaroce`).
Reviewed By: bsorrells
Differential Revision: D125553093
fbshipit-source-id: 0188b551824e698a64587fe8d837aabc15f2f869
Summary:
Fix the `oss-metaroce-linux-getdeps` continuous job, which fails when linking shared `libfolly.so` because source-built `libevent`, `zlib`, and `libaio` produce only static archives without position-independent code.
Enable PIC for `zlib` and `libevent` (consistent with other manifests), and switch `libaio` to produce shared libraries so folly can link against them. Add a regression test that guards against these link inputs silently reverting.
Re-enabling shared `libaio` was previously reverted (D93644345) but verified safe via a no-system-packages moxygen build. Blast radius is narrow: only `folly` and `cachelib` consume source-built libaio, and only `metaroce`/`rebalancer(-explorer)` request shared folly.
Reviewed By: bigfootjon
Differential Revision: D126978432
fbshipit-source-id: 56c67f890e2f99ecd3ae800f82adba71e475bcf9
Summary:
`forceStop()` only queues the drop of an acceptor's connections on its EventBase, even when called on that thread, so freeing the acceptor right after it is a use-after-free. [`ServiceWorker::drainServiceAcceptor`](https://www.internalfb.com/code/fbsource/[master]/fbcode/proxygen/lib/services/ServiceWorker.h) does that when it evicts a previously-draining acceptor, though no caller reaches that branch today: the hot-reload rebind from D116582982 releases every draining acceptor before draining its address again.
Flag the branch with a FIXME, spell out the free-a-loop-later duty `releaseDrainingAcceptor()` hands its caller, and note why `clearAcceptors()` does not force-stop and what the uncalled `clearDrainingAcceptors()` is for. Also correct the [RevProxy worker reference](https://www.internalfb.com/code/fbsource/[master]/fbcode/proxygen/facebook/revproxy/.llms/skills/revproxy/references/core/HTTPRevProxyWorker.md), which still says the VIP-swap helpers have no callers, and the `prepareVipSocketSwap` comment, which still relies on that eviction. There is no behavior change.
Reviewed By: DavidLu1997
Differential Revision: D120071479
fbshipit-source-id: fc208f77ecaf7385da2baee3c6628251c99cf9ac
Summary:
The double-goaway drain's whole point is that the first goaway advertises `lastStream = max` and refuses nothing, while the second pins `lastStream` to what the server has already seen and lowers `egressGoawayAck_`, after which `HTTPParallelCodec::deliverCallbackIfAllowed` drops the ingress callbacks for anything above it. That second half had no coverage: `DoubleGoaway` asserts the `isStreamIngressEgressAllowed` predicate flips but never parses a stream through it, `GoawayHandling` covers real suppression only for a push stream after a single goaway, and the session-level tests assert goaway emission with nothing sent afterwards.
Open a stream after each goaway and assert the first is served and the second is not. Also assert the refused one produces no stream or session error -- it is silently ignored, which is what callers depending on this drain need to know.
___
landed-with-radar-review
Differential Revision: D120071478
fbshipit-source-id: 4a5757df9e39c48b837851e938e72230554c13d3
Summary:
When the QUIC connection ends, `QuicWebTransport::onConnectionEndImpl` runs `destroy()`, which cancels each write stream and then resets it. Cancellation callbacks run synchronously, and the app may close the session from one. A MoQ relay does after it has sent GOAWAY: the peer's close cancels the last request stream, so `MoQSession` drains and calls `close()`, which calls `closeSession()` (clearing `quicSocket_`) and drops the last reference to the transport. The loop then resets the next stream on a freed object; non-ASAN builds read a null `quicSocket_` there and abort on `XCHECK(quicSocket_)` (T292108050).
- `WebTransportImpl` is a `folly::DestructorCheck`. Once the transport is destroyed, the egress loop stops touching it (the remaining handles still get `onStopSending`), and `onConnectionEndImpl` returns right after `destroy()`.
- If the app only closes the session, `resetWebTransportEgress` returns an error instead of `XCHECK`ing, as `stopReadingWebTransportIngress` already does, and `isPeerInitiatedStream` returns false.
The connection has already ended, so the skipped resets were no-ops.
Reviewed By: JunqiWang
Differential Revision: D126530616
fbshipit-source-id: 453368bca60ad8f0c75926783269af0c0d25606d
Summary:
D125255421 gave `rust_executable()` an `ENV` list of variables to set for `cargo build`, but `rust_static_library()` doesn't have one, so a project can't give a static library's cargo build the same settings. eden needs both of its cargo builds to see the thrift compiler and thrift files it builds with, which D125301420 passes through `ENV`.
___
landed-with-radar-review
Differential Revision: D125301419
fbshipit-source-id: 26475db4897366e92206d622a5c6287bc39bd0dd
Summary:
`add_fb_thrift_python_executable()` creates a regular `thrift` package in the executable and links only `thrift/python` into it. That hides the rest of the wheel's namespace package, and `thrift.python.client` can't import `thrift.py3`, so every thrift-python client fails to import. It now links all of the wheel's `thrift` subpackages.
`add_fbthrift_python_library()` also accepts an absolute thrift file, so a project can generate thrift-python modules from a dependency's installed thrift files. eden uses this for fb303's `fb303_core.thrift`, because fb303 installs only legacy thrift-py modules.
___
landed-with-radar-review
Differential Revision: D125301405
fbshipit-source-id: 0e78e00f2ab97f1989c90db0035446282c4647a2
Summary:
Every Windows checkout runs the InMemory inode catalog, which rebuilds the
overlay from the on-disk PrjFS state at mount time, and Linux and macOS
only use the filesystem catalogs. The Sqlite catalog had no production
users left, so remove it along with everything that only existed for it:
the `eden/fs/sqlite` wrapper, `InodeCatalogOptions` (buffered,
synchronous-off and unsafe-in-memory were all Sqlite modes), the
`overlay:buffered`, `overlay:buffer-size`, `overlay:synchronous-mode`,
`overlay:unsafe-in-memory-overlay` and `overlay:maintenance-interval`
settings, the periodic overlay maintenance task that ran the Sqlite WAL
checkpoint, the `sqlite_integrity_check` telemetry event, the sqlite3
dependency of the OSS build, and the Windows integration tests that
corrupted or deleted `treestore.db`.
A Windows checkout whose config still names `sqlite` falls back to the
InMemory default, which is what the CLI migration had been converting such
checkouts to on every `eden start`; that migration goes away too. The
removed config keys join `DeadConfigKeys` so the daemon stays quiet while
configerator still sets them.
WindowsFsck no longer needs to know the catalog type: the only catalog on
Windows never has a persisted root directory, so it always scans.
The Python CLI now keeps an `inode-catalog-type` it does not recognize
instead of treating the checkout config as corrupted, so `eden rm`,
`eden list` and `eden doctor` keep working on a Sqlite or LMDB checkout
that the daemon refuses to mount; only `eden clone` validates the type.
Reviewed By: genevievehelsel
Differential Revision: D125689731
fbshipit-source-id: 2a0a71dc3c2006f877ec95148d38438d34eb0899
Summary:
The LMDB overlay was an experiment gated behind the `eden_lmdb_overlay`
gatekeeper, which is at 0%. In the last 30 days of `edenfs_events` mount
events only two devservers mounted an LMDB overlay. Remove the catalog,
its file content store, the `eden/fs/lmdb` wrapper, and the OSS build
plumbing (`EDEN_HAVE_LMDB`, the getdeps manifest, the CMake find module).
With a single kind of file content store left, `FileContentStore` and
`OverlayFile` wrap a plain `folly::File` instead of a
`std::variant<folly::File, InodeNumber>`, and the preallocation thread no
longer needs to probe whether the store hands back file descriptors.
On Linux and macOS the Sqlite catalog stored file contents in LMDB. That
configuration has no supported use, so `Overlay::create` now rejects
Sqlite off Windows the same way it rejects InMemory, and the Sqlite
catalog unit test is Windows-only.
A checkout config naming a catalog type the daemon no longer knows used to
fall back silently to the default catalog. For an LMDB overlay directory
that means opening it as a legacy overlay and letting fsck discard its
contents. On Linux and macOS loading such a config now fails with an error
asking for a reclone. Windows keeps the fallback because its overlay is
rebuilt from the on-disk PrjFS state.
The configerator `lmdb_overlay` rollout is removed separately.
Reviewed By: genevievehelsel
Differential Revision: D125689728
fbshipit-source-id: 3084c2893137d42ff4d589d7cab04902412a840b
Summary:
`rust_static_library()` passes the crate name to `cargo build -p`, so it can't build a crate whose package has another name, like the `edenfs_staticlib` crate in the `edenfs-staticlib` package that D125301398 adds. The new `PACKAGE` argument names the package and defaults to the crate name.
`rust_executable()` gains `ENV`, a list of `NAME=VALUE` pairs for the `cargo build` environment. eden uses it to tell `curl-sys` when getdeps' libcurl is a static library.
Reviewed By: bigfootjon
Differential Revision: D125255421
fbshipit-source-id: db7ca288cc38d491b378b8c71575a6995aa5af8a
Summary: eden builds its tests only with `BUILD_TESTS`, an option that D125301396 adds later in this stack, off by default. getdeps builds a project's tests unless it gets `--no-tests`, and `build.sh`, `build.bat` and `getdeps.py test eden` rely on that, but eden's manifest has no `[cmake.defines.test=on]` section to pass the setting to cmake, so eden would get no tests. Like folly's, fizz's and wangle's manifests, eden's now sets `BUILD_TESTS=ON` when getdeps builds tests.
Reviewed By: bigfootjon
Differential Revision: D125255420
fbshipit-source-id: ac847928c4807880799c93ab7b93c6aec9ec040c
Summary:
When getdeps builds eden from an fbsource checkout, it mirrors fbcode into the GitHub layout, and `manifests/eden` keeps only `eden/mononoke/lfs_protocol` out of Mononoke. D88941389 moved that crate to `eden/mononoke/common/lfs_protocol`, so the mirror drops it, Cargo can't load the `eden/scm` workspace (`revisionstore` has a path dependency on it), and configure fails in `rust_cxx_bridge()` with a misleading "does not depend on cxx". The manifest now keeps `common/lfs_protocol` and, like `manifests/sapling`, maps Mononoke's `public_autocargo` Cargo.toml over the internal one.
___
landed-with-radar-review
Differential Revision: D125255417
fbshipit-source-id: 2d2960deb922e551fbc9d50a29dad216081b25ea
Summary:
`add_fbthrift_cpp_library()`, which fb303, mcrouter, Watchman, Open/R, Mononoke and other projects use for their Thrift files, links every generated library against `mvfst::mvfst_server_async_tran` and `mvfst::mvfst_server`. Nothing in generated code or in `FBThrift::thriftcpp2` uses mvfst: QUIC support lives in `quic_thriftcpp2`, which Thrift does not install. The targets only resolved because `FBThriftConfig.cmake` happened to call `find_package(mvfst)`, so every consumer of the helper needed mvfst.
Remove them. The helper still links `FBThrift::thriftcpp2`, Folly and xxhash. Packages installed with the old helper still name the mvfst targets in their exported link interfaces.
Reviewed By: hchokshi
Differential Revision: D126805090
fbshipit-source-id: 4c8057ec29c56db477454ea32f3c4a565a17cffd
Summary: haberdashery now has a CMake build, but getdeps has no way to fetch it, so projects such as mvfst cannot list it as a dependency. This adds a manifest that builds it from GitHub with CMake and skips its tests. It is pinned to the GitHub commit that added the CMake build.
Reviewed By: kvtsoy
Differential Revision: D126960220
fbshipit-source-id: a09a727c824bf48ccd902594cd05c5a683e2f17d
Summary:
**Context:** Group Proxygen decompression classes and helpers in `proxygen::decompression`.
**This diff:** Move `StreamDecompressor` into that namespace and update its live callers across fbsource. Include embedded C++ callers and retain existing include paths.
Differential Revision: D126117913
fbshipit-source-id: 626857cd25c997889bdd83a2ace0e5c854ca8a64
Summary:
**Context:** Group Proxygen decompression classes and helpers in `proxygen::decompression`.
**This diff:** Move `ZstdStreamDecompressor` and its associated constants into that namespace and update its live callers across fbsource. Include embedded C++ callers and retain existing include paths.
___
landed-with-radar-review
Differential Revision: D126117909
fbshipit-source-id: e77f003a6b475376187462011b43b05900614c7c
Summary:
**Context:** Group Proxygen decompression classes and helpers in `proxygen::decompression`.
**This diff:** Move `ZlibStreamDecompressor` and its associated constants into that namespace and update its live callers across fbsource. Include embedded C++ callers and retain existing include paths.
Differential Revision: D126117908
fbshipit-source-id: 16c1bc41778169841b2e906606681b2efaf25cbd
Summary:
Expose bgpd's loaded ingress/egress policy through `fboss2 show bgp policy`.
- Print `BGP policy` for a separate `--policy` artifact or `BGP config` for embedded policies, followed by the full policy JSON. An optional name selects one statement from the same source.
- Reuse `hasPolicySymlink()`, `getPolicyConfig()`, and `getRunningConfigStruct()`. Fail on an unreadable active artifact instead of falling back, and guard absent statement lists while preserving not-found behavior.
- Preserve split-policy mode in base, DC, and BB config clones so peer updates do not hide the loaded policy.
- Update CLI help/sample output and register query tests in Buck and OSS CMake.
- Request shared glog for BGP/Linux FBOSS and invalidate stale BGP dependency caches.
Differential Revision: D124873983
fbshipit-source-id: 0cb912012a4e678ce5b34f2f6ba29fe507f09eba
Summary:
RFC 9204 section 3.2.3: if the client remembers a non-zero `SETTINGS_QPACK_MAX_TABLE_CAPACITY`, the server must send the same value, and the client treats any other value as a connection error. `H3EarlyDataHandler::validate` only required the cached capacity to be at most the current one, so raising the capacity accepted 0-RTT that the client would then fail.
Reject early data when a non-zero cached capacity differs from the current one.
Reviewed By: sharmafb
Differential Revision: D126742446
fbshipit-source-id: e5fd7ee605d7fe3d99fb83c1d1384603b6eaf57c
Summary:
Revproxy resets aborted H2/H3 WebSocket streams with `INTERNAL_ERROR`. Following RFC 8441 section 5 and RFC 9220 section 3, send `CANCEL` (`H3_REQUEST_CANCELLED` on H3) instead.
Add `HTTPSink::sendAbort(ErrorCode)` and route the classic handler's client aborts through `sendClientAbort()`, which picks `CANCEL` for H2/HQ requests with an ingress or egress WebSocket upgrade. This covers every abort the handler sends on those requests, not only upstream resets. Plain H2/H3 requests, H1 WebSockets and classic CONNECT are unchanged. D126790939 does the same for `HTTPCoroRevProxyHandler`.
The H2 change is not gated; H3 WebSockets remain gated by `enable_h3_websockets`.
Reviewed By: afrind, lnicco
Differential Revision: D125389662
fbshipit-source-id: f32ba3f7b24bfc9d60cf43f3e0555cfb331a8520
Summary:
EdenFS uses `boost::filesystem` directly in `EdenConfig`, `EdenMount`, `Overlay`, `FsInodeCatalog`, `EphemeralFsInodeCatalog`, `OverlayChecker`, `EdenInit`, `PrjfsDispatcherImpl` and the privhelper test server, but its CMake build never looks Boost up. It links only because folly's exported CMake config brings `Boost::filesystem` along. Once `folly::fs` moves to `std::filesystem` and folly drops that dependency (D125722811), the OSS EdenFS build fails to link.
Find Boost.Filesystem in `EdenConfigChecks.cmake` and link `Boost::filesystem` into the libraries that compile those files: `eden_config`, `eden_inodes`, `eden_fscatalog`, `eden_overlay_checker`, `eden_service` and `eden_fuse_privhelper_test`. The lookup omits `MODULE`, which permits Boost package-config fallback, so it keeps working where CMake no longer ships FindBoost (CMP0167). Add `boost` to the eden getdeps manifest. This matches the edencommon fix (D126570941).
Reviewed By: genevievehelsel
Differential Revision: D126769174
fbshipit-source-id: edb53a072e6de5510d51943a05a08c1ef2c06cd8
Summary:
The getdeps builds of edencommon and watchman fail to link with the folly::fs switch (D125722811): `eden/common/utils` (`FileUtils.cpp`, `PathFuncs.cpp`) uses `boost::filesystem`, but the CMake build only got `Boost::filesystem` through folly's exported dependencies, and folly no longer asks Boost for `filesystem`. The link fails with undefined `boost::filesystem::detail::remove`/`rename`.
Find Boost's `filesystem` component in edencommon's own CMake, link `edencommon_utils` to `Boost::filesystem`, re-find it in the installed `edencommon-config.cmake` for dependents, and list `boost` as a direct getdeps dependency.
Reviewed By: genevievehelsel
Differential Revision: D126570941
fbshipit-source-id: 28f5e4e2017bed0019040d692560b5168099b939
Summary:
`yourTask().scheduleOn(ex)` is deprecated in favor of `co_withExecutor(ex, yourTask())`
For `Task`, both forms are equivalent, but `co_withExecutor` makes it much easier to migrate to the [lifetime-safe `NowTask`](https://fb.prod.workplace.com/groups/192968587972839/posts/1784449738824708) (and upcoming `SafeTask`).
Thanks to [C++ ADL](https://en.cppreference.com/w/cpp/language/adl.html), you can write simply `co_withExecutor`; it does not *have* to be qualified with the namespace `folly::coro::`.
[This post](https://fb.prod.workplace.com/groups/192968587972839/posts/1693720697897613) explains the safety benefits of `co_withExecutor`. Moreover, the new name better aligns with the other `folly::coro` protocol of `co_withCancellation()`.
This diff generated with `fbcode/scripts/rbarnes/lsc/schedule_on_fixer.py` (extended to ignore comments and string literals), then `clang-format` on the changed lines. Macros and doc-comment examples were updated by hand.
- If you approve of this diff, please use the "Accept & Ship" button :-)
___
landed-with-radar-review
Differential Revision: D126734298
fbshipit-source-id: 86f4d25135caa475fb4a47b093bbb98b8762eb60
Summary:
Fix-forward for D123003021, root cause of S720522.
D123003021 sends HTTPCodecFilterChain::setParserPaused straight to the chain end and makes HTTPCodecFilter::setParserPaused an empty final. That assumes the chain end is a concrete codec. It is not always: x2pagentd's forward-proxy port installs ConnectPassthroughCodec (a PassThroughHTTPCodecFilter that owns an inner HTTP1xCodec in call_) as the session codec through a codec factory, so the filter is the chain end. Since D123003021, every pause/resume from HTTPSession lands on the empty final and never reaches the inner HTTP1xCodec. A WebSocket upgrade through localhost:10054 then gets its 101, and the connection is torn down on the first client frame: the S720522 symptom on ~5k corp hosts.
Make the final HTTPCodecFilter::setParserPaused forward to call_. The chain still calls the chain end directly, so filters in the middle of a chain are still skipped and the perf win of D123003021 stays; only a filter that is itself the chain end (or is called directly) forwards to the codec it wraps, as before D123003021.
Reviewed By: hnovikov
Differential Revision: D126459187
fbshipit-source-id: bef11d663d436c4d56484e55b4e5df54cae09e84
Summary:
`HTTP1xCodec` serializes WebSocket upgrades as `GET`, including requests represented as HTTP/2 `CONNECT`. Treating those requests as ordinary CONNECT tunnels discards bodies on responses that do not switch protocols. A non-upgrade response with `Content-Length` then fails coroutine body-length validation, turning the expected HTTP response into a 502. This includes an ordinary `200 OK` fallback as well as a rejected handshake.
Exclude WebSocket upgrades from ordinary CONNECT handling so non-upgrade response bodies are parsed normally. Keep Content-Length validation and successful upgrade handling intact. Add codec and coroutine-session tests for `401` and ordinary `200 OK` body preservation, plus a successful translated-upgrade test. Declare the direct `//folly:conv` build dependencies required by autodeps and regenerate the codec CMake dependency list. The repository mirrors these changes into `xplat/proxygen`.
This was found while investigating the Model API canary failure recorded in D124573071. A production origin logged `Content-Length/body mismatch: expected=104, actual=0` at the original failed-test time. This fix is independent of the Hatch retry change.
Use portable `folly::to<std::string>` conversions in the regression tests and a checked `folly::to<uint32_t>` conversion for the fixture body length.
Reviewed By: hanidamlaj
Differential Revision: D125794637
fbshipit-source-id: 5a37a7473d03196f2a071724d628372ec9c2aa04
Summary: New `absl` manifest fetching pinned abseil-cpp via `[git]` (dodging `[download]`'s tarball sha256), or using distro packages where new enough for `absl::log`.
Reviewed By: KevinYakar
Differential Revision: D125537549
fbshipit-source-id: 58e881f68fcc55653ca83ef3e8acad6b54eec653
Summary:
Replaces the `FOR_EACH_RANGE` loop in `RendezvousHashTest.cpp` with a plain `for` loop. The loop var is spelled `std::size_t`, the type the macro's ternary deduced. Drops the now-unused `folly/container/Foreach.h` include and the `//folly/container:foreach` dep.
___
landed-with-radar-review
Differential Revision: D126407577
fbshipit-source-id: f094f6fc49a320e3ecbb60f06db1aca4012599c7
Summary:
# Context
Fife authorizes connections for vDPUs, and callers punt the opening TCP SYN with `authorize` so Fife can forward it (D125621587). We need a simple client to inject that traffic by hand, and the vDPU-side client has to be open source, so this tool is too.
# Product decisions
1. `askBarney --fife_ip X --fife_port Y --cert_path C [--key_path K] --ca_path A <host> <port>` works like netcat over TCP, except it first punts the connection's SYN to Fife.
2. The punt is `authorize(local_ip, dst_ip, syn)` over mTLS. askBarney prints Fife's `decision` and `forward` to stderr. Anything other than `ALLOWED` exits 1. If allowed, it relays stdin and stdout over the connection until the server closes it.
# Code decisions
- **The kernel owns the connection.** If askBarney made up its own SYN and only Fife sent it, the server's SYN-ACK would reach a kernel with no matching socket and be reset. So askBarney starts a normal non-blocking `connect()`, captures the SYN the kernel sends with an `AF_PACKET` socket, and punts those exact bytes. Because the punted SYN has the kernel's ports and sequence number, the server's SYN-ACK completes the kernel's connection whichever copy of the SYN reached the server. The kernel's own SYN also goes out directly.
- Capturing needs `CAP_NET_RAW`, so run it as root.
- **Open source only.** It uses folly, fbthrift, fmt, gflags and `folly::Init`, has Apache-2.0 headers, and doesn't depend on Fife's internal server code. That's why the SYN matcher (`TcpSyn`) is its own small parser rather than reusing `fife/server/IpPacket`. There are no Meta-specific default paths; the certificate, key and CA are required flags. Its only internal dependency is the generated client for `fife/if/fife.thrift`, which has to be published alongside it before it can ship.
# Test listener
`fife/askbarney/listen.py` (also `buck2 run fbcode//fife/askbarney:listen`) is a standard-library-only destination for askBarney tests. It listens on `--port` (default 17172, IPv6 and IPv4), replies to each connection with `--reply`, prints everything the peer sends, and keeps serving until Ctrl-C, or one connection with `--once`. It ships with askBarney in the open-source repo.
# Open-source build
- BUCK stays for the fbcode build. The open-source build is CMake plus getdeps, the standard pattern for Meta's open-source C++. All the dependencies (folly, fbthrift, fizz, wangle, fb303) are built and consumed that way, and a Makefile would mean hand-maintaining their include and link flags plus a Thrift code-generation rule.
- `fife/askbarney/public_tld/CMakeLists.txt` becomes the open-source repo's top level. It finds the dependencies and generates the `Fife` client from `fife/if/fife.thrift` with `add_fbthrift_cpp_library`, depending on `fb303::fb303_thrift_cpp` for the `fb303_core.thrift` include. `fife/askbarney/CMakeLists.txt` builds `askBarney`, `askbarney_tcp_syn` and the test.
- `opensource/fbcode_builder/manifests/askbarney` is the getdeps manifest. It maps `public_tld` to the repo root, ships `fife/askbarney/` and only `fife.thrift` from `fife/if`, and strips BUCK files. The open-source repo mirrors the fbcode layout so generated `#include` paths (`fife/if/gen-cpp2/...`) are the same in both builds.
- Before publishing: there's no GitHub repo yet, so the manifest has no `[git]` section and only works inside fbsource. `fife.thrift` still has the internal "Confidential and proprietary" header and needs an open-source license header through the open-source review.
Reviewed By: IvanTopolcic
Differential Revision: D125707320
fbshipit-source-id: 74c83cf24f46c5b9028d662847f473afa2b3b053
Summary: Update the shared getdeps `libnl` source archive from 3.2.25 (July 16, 2014) to 3.11.0, including the verified SHA256 and extraction directory.
Reviewed By: gnikol
Differential Revision: D125878884
fbshipit-source-id: 765631166046d75c0f4552fe8b4b42e47c838da5
Summary:
`HQStreamCodec` does not recognize an Extended CONNECT with `:protocol=websocket` as a WebSocket upgrade, so revproxy rejects it with `400 connect_method_disabled`. Mark downstream WebSocket CONNECTs as upgrades, matching `HTTP2Codec`, without a codec-specific enable flag. Both `HQSession` and `HQMultiCodec` use this behavior; D125389660 handles revproxy's per-VIP acceptance policy and `SETTINGS_ENABLE_CONNECT_PROTOCOL` advertisement.
Skip unknown frames, including GREASE and padding, on ordinary and WebSocket CONNECT streams. RFC 9114 section 4.4 requires rejecting known non-DATA frames; sections 7.2.8 and 9 require ignoring GREASE and unknown frame types. Known non-DATA frames still fail with `H3_FRAME_UNEXPECTED`.
Tests also pin the existing `QPACKCodec` conversion of an upgrade response from 101 to HTTP/3 status 200. The changed `xplat/proxygen/lib` mirrors are byte-identical.
Reviewed By: hanidamlaj
Differential Revision: D125389659
fbshipit-source-id: 808a4cea2036e5f235f318086215e44cf041b481
Summary: removes `HQUpstreamSession::HQIngressPushStream`, `ingressPushStreams_`, and their dependent methods, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: Carl-Elkhoury, jbeshay
Differential Revision: D124408744
fbshipit-source-id: 7ce23cf2c2879bb68553a78f41e8a7433b6d44be
Summary: removes `HQUpstreamSession::findIngressPushStream` and `findIngressPushStreamByPushId`, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: Carl-Elkhoury, jbeshay
Differential Revision: D124407785
fbshipit-source-id: 31f78a971edb8784ff27f1e1bf738c900af33a30
Summary: removes HQDownstreamSession::HQEgressPushStream, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: Carl-Elkhoury, jbeshay
Differential Revision: D124403386
fbshipit-source-id: e7f0a14d21df63022b1abe708c5c072f283851b9
Summary: removes `HQDownstreamSession::createEgressPushStream`, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: jbeshay, Carl-Elkhoury
Differential Revision: D124399212
fbshipit-source-id: bf3b8d4efd3cd91b28328884e029f369086587cd
Summary: removes `HQDownstreamSession::findEgressPushStream`, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: jbeshay, Carl-Elkhoury
Differential Revision: D124397335
fbshipit-source-id: e45fcaf2706b27e3bcd9cc52472d95054fb9346f
Summary: removes `HQSession::eraseUnboundStream`, its override, and its caller, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: Carl-Elkhoury, jbeshay
Differential Revision: D124395680
fbshipit-source-id: 0a8646983fea2d853b8d4cf59578320d8fdbe116
Summary: removes `HQSession::cleanupUnboundPushStreams`, its override, and its caller, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: Carl-Elkhoury, jbeshay
Differential Revision: D124393466
fbshipit-source-id: 48dad4045d102ff1ce7164e92845cab5d3c13bda
Summary: removes `HQSession::erasePushStream`, its overrides, and its caller, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: Carl-Elkhoury, jbeshay
Differential Revision: D124391063
fbshipit-source-id: cbae5890658529765b8d87dd84555c26d82f2c18
Summary: removes `ingressPushId_`, its reads and writes, and the unused `onPushPromiseHeadersComplete` callback, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: Carl-Elkhoury, jbeshay
Differential Revision: D124391059
fbshipit-source-id: 7c46f57264ee930f4ce6b9354930dc156ebae3e5
Summary: removes `ServerPushLifecycleCallback`, its mock, and `ServerPushLifecycle.h`, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: jbeshay, Carl-Elkhoury
Differential Revision: D124385264
fbshipit-source-id: f529f4f8a5e16a8b2af6e0adf4725ff1008f4955
Summary: removes `HQUpstreamSession` logic to bind ingress push streams to transactions, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: jbeshay, Carl-Elkhoury
Differential Revision: D124382298
fbshipit-source-id: f57b916ab691afc0bda49ebd1180bdcafed7ddd4
Summary: removes `HQSession` logic to create ingress push streams, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: jbeshay, Carl-Elkhoury
Differential Revision: D124381941
fbshipit-source-id: c11643d0679470724f9e44a4d1a2694150a902d3
Summary: removes `HQSession` logic to find and enumerate push streams, continued efforts to remove all things http push related in proxygen/lib
Reviewed By: Carl-Elkhoury, jbeshay
Differential Revision: D124186601
fbshipit-source-id: ebd35ad654d2b29dd44870dbb37aac79d9bfed6b