Skip to content

Update libSession to 1.9.4 and cap the QUIC UDP payload at 1372 - #810

Merged
mpretty-cyro merged 1 commit into
session-foundation:devfrom
mpretty-cyro:fix/libsession-1.9.3-quic-payload
Oct 8, 2026
Merged

mpretty-cyro merged 1 commit into
session-foundation:devfrom
mpretty-cyro:fix/libsession-1.9.3-quic-payload

Conversation

@mpretty-cyro

@mpretty-cyro mpretty-cyro commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Changes

  • Updates libsession-util-spm from 1.9.2 to 1.9.4 (exactVersion in the project; Package.resolved → 1743d909e49a).
  • Replaces config.quic_disable_mtu_discovery = true with config.quic_max_udp_payload = 1372 in LibSession+Networking.swift.

quic_max_udp_payload is new in libsession 1.9.3/1.9.4 (a9bafa6c, "Add opt::quic_max_udp_payload"). When non-zero it takes precedence over quic_disable_mtu_discovery, which with libquic 1.11 amounts to a hard 1200-byte cap. With that cap, the client also advertises 1200 as its maximum UDP payload, so service nodes send it smaller packets, which probably slows downloads. The new setting still prevents oversized datagrams, which some mobile networks silently drop, but lets path-MTU discovery go up to 1372 bytes.

1.9.4 is used rather than 1.9.3 because the 1.9.3 xcframework doesn't link: it shipped without its bundled dependencies. That was fixed in session-foundation/libsession#181.

The 1.9.4 package relies on the system iconv: its modulemap autolinks it for the SPM path, and #809 covers the build-from-source path.

Verification

Xcode 27.0 (27A266a), iPhone 17 simulator, iOS 27.0, on dev 048c84636c:

  • Builds and links against the published 1.9.4 package, which has 2283 arm64 object files in both slices and link "iconv" in its modulemap. The Session 2.0 regression build also built it independently.
  • Unit tests (SessionTests, SessionMessagingKitTests, SessionNetworkingKitTests, SessionUtilitiesKitTests, SessionUIKitTests) against the published 1.9.4 package at 1af286ce8d: 2252/2252 passed, 0 failed. ThreadDisappearingMessagesSettingsViewModelSpec is flaky on 1.9.2 too (4 of 5 runs fail), so one red run of it isn't caused by this change.
  • Not yet tested on a device, or by actually sending traffic over the network.

1.9.4 adds quic_max_udp_payload. Setting it replaces
quic_disable_mtu_discovery, which pinned datagrams to the 1200-byte
minimum and advertised that as the client's maximum. Path-MTU discovery
can now grow up to 1372 bytes, but no further.
@mpretty-cyro
mpretty-cyro force-pushed the fix/libsession-1.9.3-quic-payload branch from 0be41f1 to 1af286c Compare October 7, 2026 04:15
@mpretty-cyro mpretty-cyro changed the title Update libSession to 1.9.3 and cap the QUIC UDP payload at 1372 Update libSession to 1.9.4 and cap the QUIC UDP payload at 1372 Oct 7, 2026
@mpretty-cyro
mpretty-cyro marked this pull request as ready for review October 7, 2026 04:16
@mpretty-cyro
mpretty-cyro merged commit 8340c99 into session-foundation:dev Oct 8, 2026
2 of 4 checks passed
@mpretty-cyro
mpretty-cyro deleted the fix/libsession-1.9.3-quic-payload branch October 8, 2026 00:19
@mpretty-cyro mpretty-cyro mentioned this pull request Oct 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant