3p: update curl 7.54 -> current 8.x #391
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#391
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Update libcurl to a current 8.x release. No prebuilt package exists from AlchemyViewer or secondlife, so this needs our own 3p build (fork 3p-curl), built together with the OpenSSL update.
CURLMOPT_PIPELINING=1(llcorehttp/_httplibcurl.cpp:494/497) would be ignored, so texture and mesh fetch fall back to connection limits: measure fetch throughput and tune connection counts.CURLOPT_PROTOCOLS/REDIR_PROTOCOLS(_httpoprequest.cpp:530-531,httpcommon.cpp:298-300),CURLINFO_SIZE_DOWNLOAD(_httpoprequest.cpp:287).curl_multi_poll/curl_multi_wakeup, which the HTTP-service busy-poll ticket needs.Part of keeping third-party dependencies current; check Linux and Windows packages together, and update
autobuild.xmlwithautobuild edit installable.Analysis before upgrading (2026-10-06)
The claim that newer curl "drops HTTP/1.1" is a misunderstanding. Current curl still fully supports HTTP/1.1. What it removed (deprecated around 7.62, removed in 7.65, 2019) is HTTP/1.1 pipelining. On 8.x,
CURLPIPE_HTTP1is ignored. LL'sllcorehttppipelines AP_TEXTURE (8 connections by default, max 12,TextureFetchConcurrency) and AP_MESH2 (8, max 32,Mesh2MaxConcurrentRequests) (llappcorehttp.cpp~64-117; the log prints "HTTP Pipelining enabled!"). After an upgrade, nothing breaks, but per-connection concurrency drops to 1, so asset loading could slow down.The asset CDN has no HTTP/2 (tested:
asset-cdn.glb.agni.lindenlab.com, Akamai):image/x-j2c, keep-aliveUpgradea248.e.akamai.netcertificate (hostname mismatch). With verification off, ALPN offershttp/1.1onlySo HTTP/2 multiplexing can't replace pipelining for assets.
TPV policy constraint:
Request and byte volume don't change without pipelining, only the connection count. Stay within LL's own shipped maxima (texture ≤ 12, mesh2 ≤ 32 connections). Do NOT raise the caps above LL's without LL's agreement.
Plan:
HttpPipelining= false;TextureFetchConcurrency= 12 andMesh2MaxConcurrentRequests= 32.llcorehttp.Security note: 7.54.1 is from 2017 and has many published vulnerabilities, and chat image previews now fetch arbitrary web URLs through it. So the upgrade should happen; the question is only how to tune it.
Measured: HttpPipelining on vs off, cold cache (2026-10-06)
Setup: the AssetFetch timeline log (
e991adb381), real caches moved aside, default connection counts (texture 8, mesh2 8, well within LL's caps).Light region (on first, then off):
Busy region (off first, then on; similar camera turn in both):
Conclusion:
Decision:
Shipped in 1.1.0 Beta 5: curl 8.22.0. Closing; please reopen if anything regressed.