1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2026-10-23 17:08:55 +03:00

10259 Commits

Author SHA1 Message Date
Crystal Jin
00fb3329dc Add idle recovery debug telemetry
Summary: Add debug-gated QUIC lifecycle snapshots to distinguish stale-connection recovery from general request slowness. Requests now record connection age, last RX/TX age, signed idle-deadline distance, and timer counts at request start and completion. mvfst reports separate idle and keepalive callbacks plus overdue-deadline observations; ngtcp2 reports its unified transport timer. Recreated requests preserve the prior connection UUID so the request can be joined to the close reason and replacement connection.

Reviewed By: jbeshay

Differential Revision: D125287129

fbshipit-source-id: 921046a7ed2a6273fde59be0125dcbd8904ccaf4
2026-10-21 10:03:13 -07:00
Open Source Bot
03af683b89 Updating hashes
Summary:
GitHub commits:

28db52b968
3fbfbbd6f7
adbd1a5468
e852691418
1947ae0ade
e760a68ab7
c88dd0b2e6
724b010a3f
70d31cf0b3
09b46f8f0f
bcdfb3e213
d0aca95efe
6a7d8ba7f7

Reviewed By: sdwilsh

fbshipit-source-id: 444f53e76149dfd31ed1d6e70e3e0ed206ce7a30
2026-10-21 09:33:13 -07:00
Neil Spring
c88dd0b2e6 Add absl getdeps manifest
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
2026-10-20 16:05:10 -07:00
Sujay Patel
07baa51388 mvfst: enforce DATAGRAM receive frame limit
Summary:
Return `PROTOCOL_VIOLATION` when an enabled DATAGRAM payload length is at or above `maxReadFrameSize`, before receive-buffer or callback changes. Propagate the error immediately through client, server and test transport callers. The disabled soft drop and ordinary delivery behavior remain intact.

Bounded preparation for AVDP issue `1758308635898503`, finding `1552320146140481`. A supported normal production trigger, harmful consumer, and exact DATAGRAM_LEN total encoded-frame overhead enforcement remain unproved. Normal production enablement advertises 65535 and no surveyed production setter lowers it; the proof directly lowers test state.

Reviewed By: jbeshay

Differential Revision: D120114221

fbshipit-source-id: fd48fb81b8aaa84f18759b5531f5fb64cded3727
2026-10-20 11:10:23 -07:00
Open Source Bot
4ad990aa71 Updating hashes
Summary:
GitHub commits:

8d1390ed79
2a12378eb2
8bb258942f
726fa2d62d
4f25ddd325
a94df18620
ec12ab6cc8
aff37b9380
b14cef8c92
370841e714
7de1925334
55e024b0a5
1ddba7f924
7856c9b276

Reviewed By: sdwilsh

fbshipit-source-id: c6cbd3eb30a78f89a3704d4ab553bc4d7cb583bb
2026-10-20 09:31:56 -07:00
Stuart Clark
ec12ab6cc8 Add askBarney, a netcat-style trace injector that punts its SYN to Fife
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
2026-10-19 22:20:33 -07:00
Joseph Beshay
b844ff1bc4 Add a JK to force ChainedMemory on QUIC servers
Summary: `QuicServerWorker` logs an error whenever a per-connection override changes `dataPathType`. Falling back to ChainedMemory per connection is fine, since transports only use the worker's buffer with ContinuousMemory, so only log for the reverse.

Reviewed By: kvtsoy

Differential Revision: D125713045

fbshipit-source-id: fbcfc59630b23411a3498df960a7f3ef28d22362
2026-10-19 20:56:55 -07:00
Neil Spring
167a56f2ea getdeps: Update libnl source pin to 3.11.0
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
2026-10-19 15:40:02 -07:00
Open Source Bot
20e4a228cd Updating hashes
Summary:
GitHub commits:

504b52fde4
77147d05bf
d6952cf33b
ed498f3ec3
557aa769d2
90b1a74746
ae8ead13b5
60fd82a537
0882b39343
14456cb4ee
4db30e1b74
604c66767e
16ceec15fc
4a4e7810fa

Reviewed By: sdwilsh

fbshipit-source-id: 429017d429a97ecd5ead6ddc5df540285398f5d2
2026-10-19 09:34:08 -07:00
Open Source Bot
ae8ead13b5 Updating hashes
Summary:
GitHub commits:

6ac09ceaf0
08e1a63d7f
c651deccd9
c517b06a4b
473f490101
ee01105d55
16e660e4c1
5af78bb633
1cc26977bc
7924cf1d5e

Reviewed By: sdwilsh

fbshipit-source-id: bfb4382715c82506fd868ed33062d2109330cd30
v2026.10.19.00
2026-10-18 09:33:22 -07:00
Open Source Bot
473f490101 Updating hashes
Summary:
GitHub commits:

1fddb80f07
d106a78648
6b327b9cfa
e1187330c6
070549fca8
aec59e832f
9616d3310a
4e602d5f49
b3e58d9131
58eb9f1feb
b62ec9d0ec
60f494d4e5

Reviewed By: sdwilsh

fbshipit-source-id: d6154b2290a865ce0efae7502ba3f0c67ca7004c
2026-10-17 09:33:59 -07:00
generatedunixname2420066748465701
aec59e832f fbcode/quic/priority/RoundRobin.cpp
Reviewed By: dtolnay

Differential Revision: D125649633

fbshipit-source-id: e1f064f1eefd6758ba982e475f5866849eab95e4
2026-10-16 13:34:09 -07:00
Neil Spring
4786290df4 Enable getdeps CI builds
Summary: Add getdeps CI for `metaroce`: a build manifest, a GitHub Actions workflow with sccache and a 180-minute timeout (cold builds take ~90 min), and a `BUILD_TESTS` CMake option for the leaf test suite. Folly, fmt, and glog are built shared for the preload interposer.

Reviewed By: bsorrells

Differential Revision: D125028728

fbshipit-source-id: 5d9416863c991727fd353e7cc272e0673ff86c01
2026-10-16 11:10:28 -07:00
Open Source Bot
293216cce6 Updating hashes
Summary:
GitHub commits:

667d74254d
66a77c3bc9
0a62667983
eefb7e1955
aea5ddfd37
aad203708d
d743643424
c5bd1160ed
a118c6052d
2f4233ab80
a0275e26f6
52f6d0bd38

Reviewed By: ajb85

fbshipit-source-id: e1a7674feb1690fce4103e561159daa0a8307bcb
2026-10-16 09:31:38 -07:00
Joseph Beshay
aea5ddfd37 Make server Retry packets RFC 9000 compliant
Summary:
The server built every Retry with version `MVFST_INVALID` (0xfaceb00f), computed its integrity tag with the draft-29 key, and reused the client's destination connection id as the Retry source connection id. It also never sent `retry_source_connection_id`. RFC 9000 clients drop that Retry (wrong version, or a source connection id equal to their destination connection id), and clients that verify the tag with the v1 key reject it.

Changes:
- The Retry carries the version of the client's Initial, and the integrity tag uses that version's key. `FizzRetryIntegrityTagGenerator` maps `QUIC_V1` to the RFC 9001 key and every other version to the draft-29 key, which is the same lookup mvfst clients do on the Retry's version.
- The Retry source connection id is encoded by `connIdAlgo` with the worker's params, so `QuicServer` routes the client's next Initial back to the worker that sent the Retry. The token carries the original destination connection id after the timestamp, and its AAD binds the Retry source connection id instead of the original one.
- When the client's Initial carries a valid retry token, the transport parameters carry `original_destination_connection_id` from the token and `retry_source_connection_id`. Like the other connection id parameters, these are only sent for QUIC v1 and its aliases.
- Tokens from servers that reused the client's destination connection id still validate, so Retries sent by the old process right before a takeover keep working.

Existing mvfst clients already handle this. Since 2020 they verify the tag against the original destination connection id, send their next Initial to the Retry source connection id, and check `original_destination_connection_id` against the original one, and they ignore `retry_source_connection_id`.

Reviewed By: hanidamlaj

Differential Revision: D124003057

fbshipit-source-id: b4a2a086f5587c583729254479b193a94ca6a791
2026-10-15 19:37:05 -07:00
Victor Zverovich
d222a14fbb Point the getdeps manifest at 1.9.5
Summary:
The fbthrift macOS GitHub workflow (`getdeps_mac.yml`) builds with Homebrew LLVM, now Clang 23.1.0, and has failed on every run since mid-September because Google Benchmark 1.8.0 doesn't compile with it:

```
benchmark.h:1408: error: '__COUNTER__' is a C2y extension [-Werror,-Wc2y-extensions]
```

Benchmark always builds itself with `-pedantic-errors`, so `BENCHMARK_ENABLE_WERROR=OFF` wouldn't help. Upstream fixed this in v1.9.5 (https://github.com/google/benchmark/pull/2108) by suppressing `-Wc2y-extensions` around the `__COUNTER__` check, so update the manifest to that release. The rest of the manifest is unchanged, and `.lfs-pointers` gains the entry for the new archive.

Fixing it here in `fbcode_builder` fixes every getdeps project, since `build/fbcode_builder` is synced from it. In fbthrift, benchmark is used only by `thrift/lib/cpp2/test/ProtocolBench.cpp`, which uses just the basic API.

Reviewed By: genevievehelsel

Differential Revision: D125518574

fbshipit-source-id: ca2d74ecf1902329db8e19ffabf223186e0a3acf
2026-10-15 17:39:22 -07:00
Sujay Patel
90432e7b44 Validate client Version Negotiation packets
Summary:
Validate unauthenticated Version Negotiation packets before treating them as fatal. Require exact echoed client/original-destination CIDs, no accepted Retry, absence of the original version from the full advertised list, and the current peer or an initialized unfinished Happy Eyeballs alternate. Drop invalid VN datagrams before resetting SCONE scratch state or consuming their tail. Preserve the existing `NEW_VERSION_NEGOTIATED` error for valid unsupported-version VN.

AVDP issue `1415917573830042`; findings `917912340983241` and `2957379424616478`. The production client callback path and one-connection fatal consequence are demonstrated. Public Internet reachability, TLS bypass, completed downgrade, process crash and fleet impact remain unproven. Connected UDP retains address/port, NAT/firewall and timing constraints. This unit receives no credit for separate SCONE or Retry findings.

Reviewed By: jbeshay

Differential Revision: D120092148

fbshipit-source-id: ad61e1ef3405312f39622485bf79440340c65161
2026-10-15 12:24:12 -07:00
Junqi Wang
a99861a691 Add the basic datagram API to QuicSocketLite
Reviewed By: jbeshay, rohilverma

Differential Revision: D125026181

fbshipit-source-id: 7badad155ce3799948c5c60f2a0e7a485a2b3be5
2026-10-15 12:16:29 -07:00
Open Source Bot
c296658660 Updating hashes
Summary:
GitHub commits:

9e38658e9a
a24370092f
48c488a5ce
38b5b8f7cd
9ed7d2edfb
b1c3de5c99
010d1fc689
26014c9818
1866dd599b
358d6affc6
9cd3486486
5524a3fc84
6ac92f4c35

Reviewed By: ajb85

fbshipit-source-id: 31582b701b9a591631018f84a90bae93eaf31095
2026-10-15 09:38:20 -07:00
Open Source Bot
b1c3de5c99 Updating hashes
Summary:
GitHub commits:

b0d519df42
26925e1796
a8ca8e6053
46cd26e436
8e18891812
adb297cb25
4d558e023a
6461cf9a84
96c352b915
72fe7cac4f
fc5207f6dc
297de5a7e4
9a47c28932
7ba43951b5
98806ccf4f

Reviewed By: ajb85

fbshipit-source-id: 7e3a7daf90044051746992712a03345e7b0a1e65
2026-10-14 21:39:20 -07:00
Indu Suresh
4d558e023a Fix libiberty install and shared glog for folly-python
Summary:
Fixes the two getdeps regressions that break the BGP++ OSS builds (`fboss-oss-build-bgp`, `fboss-oss-build-bgp-bb`) and FBOSS OSS builds that build dependencies from HEAD. They ship together because either fix alone still leaves `fboss-oss-build-ondiff` red on the other.

libiberty: getdeps-built libiberty installs its headers but no `libiberty.a`, so `fbthrift-python` configure fails with `Could NOT find Libiberty (missing: LIBIBERTY_LIBRARY)`. `AutoconfBuilder` adds `--disable-shared` when a manifest passes neither shared flag, and libiberty's configure then empties `PICFLAG`, so `pic/libiberty.a` is never built and `libiberty_install_pic_lib.patch` copies nothing while the install still exits 0. The miss was silent until D125047475 renamed the package in `FindLibiberty.cmake` to `Libiberty`, which made `find_package(Libiberty REQUIRED)` in fbthrift enforce REQUIRED. Passing `--enable-shared` keeps `PICFLAG`; libiberty builds no shared library either way.

glog: since D124075105 made glog static by default, the `-python` shared libraries built on `folly-python` each embed a copy of glog, and every copy registers its flags with the one shared gflags, so test binaries abort with `linked both statically and dynamically`. glog's `[cmake.defines.feature_shared_libs=on]` could never turn on because glog declared no features. This declares `shared_libs` in glog and requests it from `folly-python`; getdeps unions features per project, so graphs that contain `folly-python` (`bgp`, `fboss`) get one shared glog, and graphs without it (`cachelib`, `mcrouter`, `folly`, `fbthrift`) keep static glog.

Reviewed By: yfeldblum, shitanshu-shah

Differential Revision: D125332467

fbshipit-source-id: 4ff0cb077de91afc86f79f09e1ab6b15fac2c7f0
2026-10-14 20:39:27 -07:00
Sujay Patel
e8da7485af Soft-drop SCONE packets with unknown destination IDs
Summary:
SCONE packets are unauthenticated, and `tryParseSconePacket` runs on any long-header datagram keyed only on the version field, so even clients with SCONE disabled parse them. A decoded SCONE packet whose destination connection ID matches none of the client's own IDs then reaches the shared DCID check and returns `PROTOCOL_VIOLATION`, closing the connection. Any unknown DCID triggers this, so a blind off-path spoofer who knows only the 4-tuple can terminate an established client connection with a single datagram.

Classify the decoded packet as SCONE before the DCID check and drop it on mismatch instead of erroring. Ordinary decoded packets keep `PROTOCOL_VIOLATION`, and the existing source-ID soft drop, rate-signal handling and qlog output are unchanged. A dropped SCONE packet still counts toward the subsequent-packet check that gates a pending rate signal; that pre-existing behavior is left alone here.

Adds socket-callback regressions for both SCONE versions, both feature states, both orders in a coalesced datagram, a valid stream tail following an unknown-DCID SCONE, and the retained ordinary-packet error.

AVDP issue: 1562333978403071
AVDP finding: 1077144131719904
AVDP issue: 1819642329045263
AVDP finding: 1630873122031582

Reviewed By: jbeshay

Differential Revision: D120087703

fbshipit-source-id: a9d8c879f4823b4078b648faf23c6b8ffd569887
2026-10-14 12:05:26 -07:00
Kyle Nekritz
9446ec5dba Use secureRand in path challenge data.
Summary:
This value is used to validate new paths - using insecure rand makes the validation value predictable.

Note this is still less entropy than recommended by https://www.rfc-editor.org/info/rfc9000/#section-19.17, but the impact is limited.

Created from CodeHub with https://fburl.com/edit-in-codehub

Reviewed By: JunqiWang

Differential Revision: D125002005

fbshipit-source-id: 6c72d89b71a49dacfe0b2412c1f2c2aa81f42bda
2026-10-14 09:47:55 -07:00
David Tolnay
37a26cce27 Raise getdeps to llvm 19
Reviewed By: fzakaria

Differential Revision: D125027819

fbshipit-source-id: ad7816188dcd2182737d288e4d881b72d7f89e7e
2026-10-13 20:43:29 -07:00
Victor Zverovich
a4b7f6a632 Fix package name mismatch warnings in remaining CMake find modules
Summary:
Follow-up to the `FindZstd.cmake` fix. CMake emits an author warning when the package name passed to `find_package_handle_standard_args()` does not exactly (case-sensitively) match the name used in `find_package()`. Fix the remaining modules:

- folly: `FindSnappy`, `FindLibDwarf`, `FindLibAIO`, `FindLibUring`, `FindLibsodium`, `FindLibiberty`, `FindFmt`
- fbcode_builder: `FindGflags`, `FindRe2`, `FindLibiberty`

`find_package_handle_standard_args` also sets the upper-case `<NAME>_FOUND`, so `SNAPPY_FOUND`, `LIBDWARF_FOUND`, `LIBAIO_FOUND`, etc. are unchanged. The exception is `FindFmt`, which used `LIBFMT_FOUND`; it now checks `FMT_FOUND` (`LIBFMT_FOUND` had no other users). In `FindGflags` all exported `_FOUND` variables are derived from `GFLAGS_FOUND`, which is still set.

Reviewed By: genevievehelsel

Differential Revision: D125047475

fbshipit-source-id: 38b4eff058091525e249fc3cf39331582d396ba0
2026-10-13 17:35:52 -07:00
Victor Zverovich
718941a578 Use fbcode_builder's FindZstd.cmake
Summary:
Like `FindXxhash.cmake` in the parent diff, `thrift/cmake/FindZstd.cmake` duplicated `build/fbcode_builder/CMake/FindZstd.cmake` but defined a `zstd::zstd` imported target. Move the target into the fbcode_builder module and remove thrift's copy. fbthrift now installs the fbcode_builder module next to `FBThriftConfig.cmake`.

The target takes its locations from `ZSTD_LIBRARY_RELEASE` and `ZSTD_LIBRARY_DEBUG`, not `ZSTD_LIBRARY`, because when both are found `ZSTD_LIBRARY` is an `optimized;...;debug;...` list, which isn't a valid `IMPORTED_LOCATION`.

The fbcode_builder module sets `ZSTD_INCLUDE_DIR` rather than `ZSTD_INCLUDE_DIRS`, so `thrift/lib/python` now reads that. It also has no `ZSTD_ROOT` hints; CMake's `<PackageName>_ROOT` handling covers that use (`Zstd_ROOT`, and `ZSTD_ROOT` from CMake 3.27).

folly, fizz and cachelib, the other users of the module, use the `ZSTD_*` variables and don't define `zstd::zstd`, so the guarded target doesn't affect them.

Reviewed By: iahs

Differential Revision: D123973126

fbshipit-source-id: 4621c354feef03db1af707bd33eef056ac96a43d
2026-10-13 11:10:55 -07:00
Open Source Bot
aea6b79476 Updating hashes
Summary:
GitHub commits:

2146915ec3
946cd147f9
964c21962e
ac550b8d96
003274b118
3d73f9d590
a6f9d731fa
9317fc6886
dccddb38ab
dbb1b2c822
7857dfb388
9fa5f430fc
667da3cf1f

Reviewed By: ajb85

fbshipit-source-id: e0a164a43e10b01e71a4af61204b7a109cfbb549
2026-10-13 09:33:57 -07:00
Michel Lind
3d73f9d590 getdeps: EL 10 system packages, static glog by default
Summary:
CentOS Stream 10 and EPEL 10 carry nearly everything `cachelib`
needs, but the manifests only map most of these libraries for
`distro=fedora`, so `getdeps` builds `fmt`, `gflags`, `googletest`,
`benchmark` and `Boost` from source there for no reason. Two mappings
are also wrong for EL 10 rather than merely missing: it ships
`zlib-ng` under the compat names like Fedora, not the plain
`zlib-devel`/`zlib-static` the "not fedora" section assumes, and it has
no `lz4-static` at all, which the selector only excluded for EL 8
and 9.

This diff selects on the `rhel` family rather than naming CentOS
Stream, spelling the mappings as "Fedora, or the `rhel` family other
than 8 and 9", so Alma, Rocky and RHEL itself get them and EL 11 needs
no further edit.

Two libraries stay unmapped outside Fedora because EPEL's versions are
too old for the revisions pinned here: `glog`, where EPEL 9 and 10 both
have 0.3.5 against a post-0.6.0 commit, and `fast_float`, where
EPEL 10's 6.1.6 lacks the `parse_options_t` constructor folly's
`Conv.cpp` uses (found by building:
https://koji.fedoraproject.org/koji/taskinfo?taskID=151005880).

`install-system-deps --dry-run --recursive cachelib` now asks for 35
packages on `centos_stream` 10, the Fedora list minus `glog-devel`,
`fast_float-devel` and `lz4-static`, and all of them exist in CentOS
Stream 10 or EPEL 10. The `centos_stream` 9 and 8 lists are unchanged:
9 still takes `zlib-devel` and `zlib-static` and builds the rest, 8
still takes the `boost169` compat packages.

The `glog` manifest also set `BUILD_SHARED_LIBS=ON` unconditionally,
while `folly` and `fbthrift` set it only under
`feature_shared_libs=on`. A static build therefore still linked a
shared `libglog`, and the manifest's own patchfile comment already
assumes the opposite ("default-visibility symbols in a static archive
are harmless for consumers that don't need the shared_libs feature").

It shows up downstream: the Fedora and EPEL packages of `cachelib` and
`mcrouter` ship executables with the whole stack linked statically and
no libraries at all, yet came out requiring `libglog.so.1`, which
nothing installs. On EPEL 10 that is not even satisfiable, since its
`glog` is 0.3.5 and provides `libglog.so.0`.

This diff moves the define under `feature_shared_libs=on`, as the
other two do, so `--shared-lib` still gets a shared `glog` and everyone
else gets a static one.

Origin: verified on fork branch `michel-slm/CacheLib`
`getdeps-el10-rpm-mappings`, commits `1aef1670` (EL 10 mappings) and
`6ad39916` (`glog` shared default); imported here for ShipIt export.

Reviewed By: yfeldblum

Differential Revision: D124075105

fbshipit-source-id: 4279b1bf9fe58165fcca44333ef3ac3250d16bcc
2026-10-12 15:25:58 -07:00
Open Source Bot
d22c52b07d Updating hashes
Summary:
GitHub commits:

ec7f3fa76e
2749a05b1e
74a05852ec
18701c1d9c
1499eef91c
63a8b496bb
fbef415272
98115c119d
4ca7910316
ecf8283107
c7a7b53dd4

Reviewed By: ajb85

fbshipit-source-id: 3e7f59c25f0b5e4d98d6f4c78160f23f153afb95
2026-10-12 09:35:51 -07:00
Sujay Patel
1499eef91c Validate NEW_CONNECTION_ID and scan padding runs
Summary:
Reject zero-length `NEW_CONNECTION_ID` frames before adding a peer connection ID. Consume each leading `PADDING` run in one scan and retain its frame count when coalescing, avoiding repeated scans before the next frame.

The regressions exercise server packet reception, decoder cursor progress, and real encrypted QUIC v1 and MVFST Initial packets. General and long-header zero-length connection IDs remain supported.

AVDP: issue `1610034730515004` / finding `1785278742621479`; issue `1753504145979612` / finding `3168016446726929`.

Reviewed By: jbeshay

Differential Revision: D120079368

fbshipit-source-id: 3598297059d59b5bd55bad24d0f25286f101097a
2026-10-12 09:05:37 -07:00
Open Source Bot
c078c0d3d4 Updating hashes
Summary:
GitHub commits:

5270c5b264
0c320adaa0
b391ed9fbc
e5bba517d0
4dda9bd122
79aaf09d53
0d3feead6d
30fbf77d96
b134806ed9
8aa064a76a
212e67d2f9
2b9da06ee7

Reviewed By: ajb85

fbshipit-source-id: 4b90bbebcf4e7a5a696841b25d70347865dc211b
v2026.10.12.00
2026-10-11 21:39:56 -07:00
Open Source Bot
79aaf09d53 Updating hashes
Summary:
GitHub commits:

8865908dd8
05d189476d
dae5b45d0d
d177f95dc1
4b2bd89653
5eeaa5df57
cb0635d207
add48498ed
d56efcf24e
c185c5ab43

Reviewed By: ajb85

fbshipit-source-id: 4e75f169af60b1843d0b557a1ccca05a5369e99f
2026-10-11 09:32:44 -07:00
Open Source Bot
4b2bd89653 Updating hashes
Summary:
GitHub commits:

2d34ab89a6
86d5f0eafa
5d10e08621
408fb7ab67
820aa0d4b5
f21cfe0290
555ed08028
9855cf3c2d
58401debb2
0368bec5f9
e7f58455d5
5a414808b8

Reviewed By: ajb85

fbshipit-source-id: 22553aec7ff5ed9321cd7dbd7b467da06193b7f7
2026-10-10 09:33:23 -07:00
Kainan Jiang
f21cfe0290 Fix clean Ubuntu builds
Summary:
Clean Ubuntu builds fail because `bpftool` needs `llvm-strip`, socket-lb retains an unused `<numa.h>` include and libnuma link dependency, and `FileLock.h` uses `nanosleep` without declaring it.

Install `llvm` through socket-lb's Debian package list, remove the unused libnuma dependency from its CMake/getdeps build, and include `<time.h>`. Regenerate the GitHub workflow to remove the obsolete NUMA fetch step and correct the dependency documentation. NUMA routing continues to use caller-supplied CPU-to-NUMA mappings; the internal BUCK dependency remains unchanged.

Failing GitHub job: https://github.com/facebookincubator/socket-lb/actions/runs/37864986872/job/113609474538

Reviewed By: dzhdhr

Differential Revision: D124231954

fbshipit-source-id: 59d39ab9bc3b351dfa5f4bfd30f27676d2fbc661
2026-10-09 11:56:05 -07:00
Open Source Bot
ca6cafaad5 Updating hashes
Summary:
GitHub commits:

12ce5801ae
2446d6994d
28644cf848
59610f475b
7ba92f0e29
09d3bf2297
cb1cc4e204
86842c6cf0
357bf5cdf8
090d4bcbfb
a2ce7578f8
2a0e338ea2
643e6d78ee

Reviewed By: pranavcivi

fbshipit-source-id: 3015b657693f665bb6cbef64170b03246d37dd19
2026-10-09 09:33:36 -07:00
Victor Zverovich
cb1cc4e204 Use fbcode_builder's FindXxhash.cmake
Summary:
`thrift/cmake/FindXxhash.cmake` duplicated `build/fbcode_builder/CMake/FindXxhash.cmake`, differing only in the `Xxhash::xxhash` imported target it defines. Move that target into the fbcode_builder module and remove thrift's copy. fbthrift now installs the fbcode_builder module next to `FBThriftConfig.cmake`, as it already does for `FindGflags`, `FindGlog` and `FindLibUnwind`.

The only other user of the fbcode_builder module, cachelib, reads `Xxhash_LIBRARY` and doesn't define `Xxhash::xxhash` itself, so the new target can't collide with it.

Reviewed By: createdbysk

Differential Revision: D123971195

fbshipit-source-id: 18474a61011d23d7374c04208b18febaee0ed1af
2026-10-09 07:05:09 -07:00
Max Noormohammadpour
f70525ed87 Give packsim's GitHub workflow 300 minutes
Summary:
## What
- `opensource/fbcode_builder/manifests/packsim`: `[github.actions] timeout_minutes` goes from 180 to 300, and the comment above it gives the reason and drops the claim that openssl is built from source (its manifest uses the system package on Linux).
- `ai_simulation/.github/workflows/getdeps_linux.yml`: regenerated from the manifest with packsim's usual generator flags; the only change is `timeout-minutes: 300`.

## Why
A cold run builds boost, folly and fbthrift from source, then compiles every packsim unit test and runs all but the heavy ones. Scaled from local build times, that is estimated at 2 to 3 hours on a 2-core runner with an empty cache, too close to the old 180-minute limit. 300 stays under GitHub's 360-minute job limit and can be lowered once green runs report real figures.

Differential Revision: D124256112

fbshipit-source-id: edbee764fe837f5b4f8cd5356e2866813788f5b3
2026-10-08 22:08:15 -07:00
Kainan Jiang
49daeba63f Fetch pinned bpftool tag in shallow clones
Summary:
A fresh socket-lb GitHub runner fails in `Fetch bpftool`: getdeps clones the default branch with `--depth=1`, then runs `git rev-parse v7.4.0` before fetching that tag. Set the manifest's `branch` to the existing `v7.4.0` pin so the initial shallow clone contains the requested release.

The dependency version and build configuration are unchanged.

Failing run: https://github.com/facebookincubator/socket-lb/actions/runs/37854893377/job/113576600015

Reviewed By: dzhdhr

Differential Revision: D124210806

fbshipit-source-id: a6822082eb5620b2eb27837e0289ded74a03c2da
2026-10-08 17:22:21 -07:00
Scott Smith
26d837706d Fix FBThrift Python runtime packaging
Summary:
> Note: FBThriftPython is only used by FBOSS builds, so this diff does not affect any other existing getdeps projects.

# Context

`add_fb_thrift_python_executable()` discovers the FBThrift wheel through `thrift.__file__`, but `thrift` is a namespace package and has no concrete file. The helper also packages `thrift/python` without auditwheel's `thrift.libs`, so native extensions can fail to load their Folly dependencies.

# Mitigation

Locate site-packages through the concrete `thrift.python.types` module with `PYTHONPATH` unset. Validate and package both `thrift/python` and `thrift.libs`, and remove existing runtime links before recreating them so rebuilds remain safe.

Reviewed By: AarjunC

Differential Revision: D123128835

fbshipit-source-id: 66a371f4689b3a432e1d8c25a9bc97d51ccba248
2026-10-08 13:12:56 -07:00
Open Source Bot
aa4f0c5753 Updating hashes
Summary:
GitHub commits:

8cac6f7269
bad2b69540
4d9ac345b3
0b1c8f2328
1f1391f4e6
31b516b69b
5564e8c072
ef29c6c7f4
052b0dbb10
dee3b288f0
28094281ef
aac52e3aeb
db11889cad

Reviewed By: pranavcivi

fbshipit-source-id: 2ce754cabfb7ae1b372e495c27ec23f0fe8cf23d
2026-10-08 09:33:56 -07:00
Sujay Patel
5564e8c072 Reject oversized QUIC long headers before writing buffers
Summary:
A token-bearing long header could exceed its packet budget after the shared encoder had already written its first byte. The encoder then continued writing with zero remaining space, so an accepted Retry with a large token aborted the next Initial on the continuous-memory path.

Check fixed fields, the token length prefix, the token itself, and deferred packet length/number before the first write. Use a subtraction-based capacity check and return `CODEC_ERROR` through the existing regular/inplace builder error paths. Add boundary and untouched-buffer tests plus a client regression with a computed valid Retry integrity tag and a successful normal Retry control.

Capping the accepted Retry and `NEW_TOKEN` token size in `QuicClientTransportLite` is out of scope here; this diff downgrades the outcome from a process abort to a connection close.

AVDP issue: 2053213891975966
AVDP finding: 1413413147587016

Reviewed By: jbeshay

Differential Revision: D120043576

fbshipit-source-id: 3da07c92683f6152e5879e052e7086e194b4ab6d
2026-10-08 08:32:09 -07:00
generatedunixname26860585020226206
b08b6d4e06 mvfst: keep transport alive through drain timeout
Summary: As title.

Reviewed By: jbeshay

Differential Revision: D123096075

fbshipit-source-id: 35caab12166d2eeb7cbe643e4c8d55a4ffc96be3
2026-10-07 23:05:41 -07:00
Open Source Bot
ca8da9f635 Updating hashes
Summary:
GitHub commits:

ab104be641
ab1c8493c3
933b1a046f
24cd5eed7c
0c515a4048
4d739cf131
9db811c348
5649ee0f0b
875c8297a4
6ffb42d78e
d414bb898e
a12a7f07b9
5bf936ea42

Reviewed By: pranavcivi

fbshipit-source-id: 6f4e5b73e398b88f37b552804463ac82f8412e8d
2026-10-07 09:33:12 -07:00
Alan Frindell
9db811c348 Accept RESET_STREAM_AT when reliable reset support is advertised
Summary: An endpoint that advertises reliable stream reset support still closes the connection with a protocol violation when the peer sends RESET_STREAM_AT. Now the frame is rejected only when the endpoint did not advertise support. The default for `advertisedReliableResetStreamSupport` stays off.

Reviewed By: jbeshay

Differential Revision: D85708325

fbshipit-source-id: 935aa856390ce335e55972b4a0b9ab89bcc479f3
2026-10-06 22:58:05 -07:00
Kevin Yakar
5ef381b243 Add swig3 getdeps manifest for vendor SDK builds
Summary:
Some vendor SAI SDKs generate Python wrappers as part of their build and require SWIG 3, while distributions only package SWIG 4. This pins upstream SWIG 3.0.12 and backports the Python 3 fixes upstream only shipped in SWIG 4, so an SDK build can take it from getdeps rather than a hand-built copy.

Nothing depends on it; FBOSS itself does not need SWIG.

Reviewed By: srikrishnagopu

Differential Revision: D123481792

fbshipit-source-id: c72667ef03c8c1918e65810e7aaea3d6f8b394da
2026-10-06 17:11:01 -07:00
Joseph Beshay
d510c9df00 Test VN on the first happy eyeballs socket
Summary: Adds happy eyeballs tests for a version negotiation on the first socket, both before the second socket starts and after it has sent an Initial. In both cases the VN fails connection setup with `NEW_VERSION_NEGOTIATED` and neither socket writes again.

Differential Revision: D123669462

fbshipit-source-id: d29b29a4d8f3a972e701f54aa46e1c020d044c2d
2026-10-06 12:22:16 -07:00
Open Source Bot
58880666c7 Updating hashes
Summary:
GitHub commits:

d02b39afc2
188a00d7d0
ac07e92b65
7bd73258b7
70489ffb99
a1154cb46a
2fd43888e2
c707d7ec0f
86d94a4c79
31d92932f2
c2a16f5f33
2b66f4cfde
2b40941ee7

Reviewed By: pranavcivi

fbshipit-source-id: 5ebd5ce68a2a902ab89c0b11843eba4f5b24cc4a
2026-10-06 09:33:41 -07:00
Open Source Bot
2fd43888e2 Updating hashes
Summary:
GitHub commits:

a3fbbeb7bf
44996150a2
b59cd8748e
ee4b51d975
57294bdd95
1a9de61903
8ca1fa0bea
7761c62fde
319a43dc80
02c6881fed
6d02e7fec2
4c3b2fba5c
74eab216c2

Reviewed By: pranavcivi

fbshipit-source-id: 0f7a3467120da769e15ab60569ef3e5a8c4cc4db
2026-10-05 09:33:07 -07:00
Open Source Bot
8ca1fa0bea Updating hashes
Summary:
GitHub commits:

1afde0fbf9
85654178c8
e2d2c89fa7
68cabf06ae
2e6b5c97cb
196479211a
02b812e082
40a2fe0711
a151ad99d2
745d642107
bf0cef2129

Reviewed By: pranavcivi

fbshipit-source-id: a5c8a6062fa8d2ee907a898b3b40bac146ab372e
v2026.10.05.00
2026-10-04 09:32:48 -07:00
Open Source Bot
2e6b5c97cb Updating hashes
Summary:
GitHub commits:

7d5b0a4660
df937ab772
96ec5932ae
6fbaf3f026
8f9358786e
6cb3676787
c21e4c118e
bc95264c43
16b85b9b2d
d663575d0f
43046de79e
dd096d0fda
52d4aa1c14

Reviewed By: pranavcivi

fbshipit-source-id: 6db8856506b3cb0918b1758ed3d77b3a782c07b0
2026-10-03 09:32:37 -07:00