Commit Graph
91 Commits
Author SHA1 Message Date
Dean Galvin fc0ef17ce0 Merge main into fix/http2-cookie-boxes
Apply review request from 2026-11-05: resolve the GuestHttp2Transport Mode enum and content-encoding conflicts.
2026-11-05 18:08:06 +13:00
JJenkx 939d961c50 fix(http2): retain gzip member checks on current transport 2026-11-04 10:15:28 -05:00
JJenkxandClaude Opus 5.5 d6a8038853 fix(http2): carry cookie boxes through HTTP1 transport
(cherry picked from commit a73753f129c9c02b6eee9781afa370975e9f3b7d)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 15:34:48 +01:00
BunnyFlandClaude Opus 5.5 760eba6585 Merge upstream/main into fix/http2-cookie-box-binding
Resolve the HTTP/1.x transport merge (#11611): keep both includes in Transport.cpp, and add Cookie and CookieFlood to the test Mode enum after StallUpload, outside the Http10..Http1Plain and EarlyFinal ranges.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 06:43:44 +01:00
BunnyFlandClaude Opus 5.5 1897b26943 Merge upstream/main into fix/http2-cookie-box-binding
Resolve core/libs/tests/GuestHttp2Transport.cpp: keep both sides' Mode values (all before EarlyFinal) and run the cookie-box tests before main's handshake tests, which replace the old Failure(ssl, Mode::Normal, true) call.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-04 05:25:14 +01:00
Dean Galvin a614d407e2 Merge branch 'main' into feat/http2-http1-transport 2026-11-04 17:01:05 +13:00
JJenkx 9a05af1539 fix(http2): emit one overridden Host header for HTTP1 2026-11-03 16:45:26 -05:00
JJenkx 3f9c054d18 feat(http2): support synchronous HTTP/1.0 and HTTP/1.1 requests 2026-11-03 16:45:25 -05:00
hugodearaujo 6dd4bcd43a Merge remote-tracking branch 'origin/main' into http2/merge-main-2
# Conflicts:
#	core/libs/prx/libSceHttp2/Transport.cpp
#	docs/dev/debt/libSceHttp2.md
2026-11-03 18:32:20 -03:00
JJenkx 3989a014e7 fix(http2): decode and validate each gzip member 2026-11-03 07:34:40 -05:00
JJenkx 64b8e667ee chore: refresh HTTP2 callback review branch on main 2026-11-02 11:57:34 -05:00
Dean Galvin 7b95725572 Merge commit 'refs/fu/main' into HEAD
# Conflicts:
#	core/libs/tests/GuestHttp2Transport.cpp
#	docs/dev/debt/libSceHttp2.md
2026-11-03 05:44:48 +13:00
Dean Galvin cbbf248943 Merge commit '0278ca983148dbb9b8b54a267b2aeab0ce8aff37' into HEAD
# Conflicts:
#	core/libs/prx/libSceHttp2/Transport.cpp
2026-11-03 01:33:11 +13:00
Dean cbfc0f02ca Merge pull request #11627 from edubox/feat/http2-host-authority
fix(http2): translate the Host request header to :authority
2026-11-03 01:26:10 +13:00
BunnyFlandClaude Opus 5.5 8a5f9e2706 Merge upstream/main into fix/http2-cookie-box-binding
Keeps main's redirect scenarios in GuestHttp2Transport.cpp next to this
branch's cookie box modes and scenarios.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 11:59:15 +01:00
Dean 792caaf6dd Merge pull request #11575 from JJenkx/feat/http2-redirect-callbacks
feat(http2): deliver redirect callbacks and follow HTTPS redirects
2026-11-02 23:29:05 +13:00
JJenkx 2de2bfe764 feat(http2): deliver TLS certificate verification callbacks 2026-11-01 20:17:24 -05:00
JJenkx 59bc5a8f19 feat(http2): deliver redirect callbacks and follow HTTPS redirects 2026-11-01 20:17:24 -05:00
hugodearaujo 6e29a45057 Merge main f776fddcff into fix/http2-tls-handshake-codes 2026-10-31 19:15:54 -03:00
SnekPolylepisandClaude Opus 5.5 754aad4e9c fix(libSceHttp2): accept SSL options on a context
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 22:01:22 +01:00
JJenkx 6ae1f9381b fix(http2): compose gzip with callback and HTTP1 transport 2026-10-30 19:01:44 -04:00
BunnyFlandClaude Opus 5.5 77c3d1d379 Merge upstream/main into fix/http2-cookie-box-binding
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 18:43:08 +01:00
hugodearaujo 0d054bf053 Merge main into fix/http2-tls-handshake-codes
# Conflicts:
#	core/libs/prx/libSceHttp2/Transport.cpp
#	core/libs/tests/GuestHttp2Transport.cpp
#	docs/dev/debt/libSceHttp2.md
2026-10-30 12:34:47 -03:00
Eduardo Ruiz 58f325624e fix(http2): consume flow control while buffering gzip bodies
Reads already wait for END_STREAM when inflation applies, so keep the receive window open while the encoded body is buffered. This lets a gzip response larger than 65,535 bytes inflate instead of failing, and the split test now reads before the content length so it exercises the read path.
2026-10-30 13:31:03 +01:00
Eduardo Ruiz bd68b64dd1 fix(http2): inflate gzip responses after END_STREAM 2026-10-30 13:31:03 +01:00
edubox 9624b77bc6 feat(http2): inflate gzip response bodies 2026-10-30 13:31:03 +01:00
JJenkx 5f18e5abe7 fix(http2): retain callback chain with current main import inventory 2026-10-30 08:22:57 -04:00
Dean e49f8c380c Merge pull request #11769 from oneandonlydean/salvage/web-misc-9485
feat(prx): declare 46 PS5 3.20 exports in four libraries
2026-10-31 01:16:48 +13:00
JJenkx e069fd2308 fix(http2): integrate current main and preserve callback parent order 2026-10-30 07:37:48 -04:00
hugodearaujo 83c9231966 Merge main into fix/http2-tls-handshake-codes
# Conflicts:
#	docs/dev/debt/libSceHttp2.md
2026-10-30 06:35:47 -03:00
milescovielloandClaude Opus 5.5 bb2620548c refactor(libSceHttp2): keep the lookup hook in the transport header
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 00:33:35 +01:00
milescovielloandClaude Opus 5.5 200e1c0f7c test(libSceHttp2): count the lookups of a retried and an exhausted resolve
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 00:33:35 +01:00
milescovielloandClaude Opus 5.5 d986a418ad fix(libSceHttp2): retry a failed lookup the number of times sceHttp2SetResolveRetry sets
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 00:33:35 +01:00
Adrià b39faccc7a Merge pull request #12731 from bunbeans2-arch/fix/msys2-nghttp2-seh
fix(cmake): keep the SEH personalities out of nghttp2's export set
2026-10-30 00:10:32 +01:00
hugodearaujo af99299f6f Merge main into fix/http2-tls-handshake-codes
# Conflicts:
#	docs/dev/debt/libSceHttp2.md
2026-10-29 19:34:48 -03:00
hugodearaujo 35f95a1d4b Merge main into fix/http2-tls-handshake-codes
# Conflicts:
#	docs/dev/debt/libSceHttp2.md
2026-10-29 09:38:23 -03:00
bunbeans2-archandClaude Opus 5.5 3ec77ef717 fix(cmake): keep the SEH personalities out of nghttp2's export set
With GCC whose exceptions are SEH, as MSYS2 UCRT64 ships it, link_libraries
adds windows_seh_personalities to every later target, nghttp2_static
included. nghttp2's install(EXPORT) then fails at generation because the
object library is in no export set, so the Windows MSYS2 workflow stops at
configure. nghttp2 is C and needs no personality routine; the libraries
that link it still get it from link_libraries.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 01:55:52 -04:00
Lindamea1andClaude Opus 5.5 677da22471 feat(libSceHttp2): implement sceHttp2SetMinSslVersion for versions 2 to 5
sceHttp2SetMinSslVersion returns 0 for versions 2 (SSL 3.0) to 5 (TLS 1.2)
on a template or an unsent request: the range libSceSsl's
sceSslSetMinSslVersion takes on a 13.40 console (docs/dev/debt/libSceSsl.md).
The floor is not kept, as libSceSsl negotiates TLS 1.2 only, which meets
every accepted floor. Versions 0, 1 and above 5 still throw, as do context
and cookie-box ids and sent requests; unknown and deleted ids still return
0x817B1100.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 23:16:31 +00:00
Adrià 3b362ba2e0 Merge pull request #11730 from ionut27001/fix/http2-init-zero-concurrency
fix(libSceHttp2): return invalid value from sceHttp2Init for a maximum of 0 requests as measured in a PS5 payload
2026-10-28 17:45:01 +01:00
Adrià 4aec576ede Merge pull request #11616 from milescoviello/fix/http2-memory-pool-stats
fix(libSceHttp2): report a live context's pool size from sceHttp2GetMemoryPoolStats
2026-10-28 15:17:09 +01:00
hugodearaujo 486a71ef91 fix(libSceHttp2): return the console codes for failed TLS handshakes
sceHttp2SendRequest threw when sceSslConnect failed. A PS5 payload measured the result against loopback TLS servers: the console returns the handshake failure unchanged for an untrusted or mismatched certificate, an expired one once 0x8 is enabled, a fatal alert, a peer that closes or resets during the handshake and a reply that is not TLS. After a failed send the status call returns 0, the content length and read calls 0x817B1065, and another send the same error.
2026-10-28 10:52:32 +01:00
Dean fe84a7bd37 Merge pull request #11919 from kyon-eth/feat/http2-1360-inventory
feat(libSceHttp2): declare eight additional exports
2026-10-28 22:30:44 +13:00
Adrià e694001109 refactor(libSceHttp2): use ERROR_INVALID_VALUE in sceHttp2Init 2026-10-28 10:03:00 +01:00
ionut27001 7db98b9058 fix(libSceHttp2): return invalid value from sceHttp2Init for a maximum of 0 requests as measured in a PS5 payload 2026-10-28 10:02:57 +01:00
p3nicillinandClaude Opus 5.5 6cb305e844 test(libSceSsl): cover the system CA list helper and its HTTP2 call
Each test serves its own CA_LIST.cer through the working-directory
override of the sandbox path. guest_ssl_system_roots checks that a
handshake to the fixture server fails without the helper and passes
with it, that a context authority still works alongside the list, and
that an empty or certificate-free list throws with its path.
guest_http2_system_roots sends a request from a context with no loaded
certificate, which passes only through the transport's helper call.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 23:02:48 +00:00
p3nicillinandClaude Opus 5.5 f685ee8720 fix(http2): trust the system CA list for HTTPS requests
Every libSceSsl context started without trust anchors, so a libSceHttp2
request without a verify callback failed the known-CA check. RetroArch's
updater, PS5LM and Porpoise all use version-3 templates over https://
without one. libSceSsl now parses /<sandbox word>/common/cert/CA_LIST.cer,
served by libkernel from the host trust store, once per process into its
own pool, and SslTrustSystemRoots_nid_no_patch links those roots after
the context's own authorities for one connection. The HTTP/2 transport
calls it after creating each connection.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 23:02:48 +00:00
BunnyFlandClaude Opus 5.5 bbef95bb68 fix(libSceHttp2): keep cookie box lookups off the handles mutex
The transport read and stored a bound box's cookies under the request's
state mutex, and the box lookup took the handles mutex, while deleting a
request holds the handles mutex and waits for that state mutex. The cookie
module now records live boxes itself, so the lookup no longer needs the
handles mutex.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 15:59:56 +01:00
BunnyFlandClaude Opus 5.5 96603d9851 feat(libSceHttp2): bind cookie boxes to templates and requests
sceHttp2SetCookieBox and sceHttp2GetCookieBox follow an emulator run of
the firmware 13.42 module: templates and requests take a live box or 0,
other ids and unknown boxes return the invalid-id error, a new request
copies its template's box, and the getter checks a null output first.

A request with a bound box sends the box's matching cookies and stores
every Set-Cookie of the response in the box.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 15:59:15 +01:00
Adrià 2ee8e9751a Merge pull request #9598 from Ondra97/codex/fix-http2-teardown-ownership
test(http2): guard allocation-free handle teardown
2026-10-27 15:51:00 +01:00
milescoviello a45f140d85 Merge remote-tracking branch 'upstream/main' into fix/http2-memory-pool-stats
# Conflicts:
#	docs/dev/debt/libSceHttp2.md
2026-10-27 13:06:25 +00:00