48 Commits
Author SHA1 Message Date
milescovielloandClaude Opus 5.5 4c8e9ca634 test(libSceHttp): cover sceHttpsGetCaList and sceHttpsFreeCaList with a null and a filled list
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 18:03:17 +00:00
boykopovar fdf9ca7574 fix(sdk): reconcile public headers after rebase 2026-10-24 23:17:47 +03:00
boykopovar 35cf8d56cd refactor(sdk): add canonical headers for core libraries 2026-10-24 23:17:37 +03:00
Adrià a39be6252d Merge pull request #8357 from MarrasFederico/feat/http-memory-pool-stats
feat(libSceHttp): report a context's pool in sceHttpGetMemoryPoolStats
2026-10-24 12:48:06 +02:00
Dean 291cb22c04 Merge pull request #9066 from orezraey/fix/http-status-line-measured-ps5
fix(libSceHttp): parse status lines past lineLen as measured on a PS5
2026-10-23 15:36:50 +13:00
Dean b7a451d62b Merge pull request #9073 from orezraey/fix/http-uri-copy-measured-ps5
fix(libSceHttp): copy URIs as measured on a PS5
2026-10-23 14:43:44 +13:00
orezraeyandClaude Opus 5.5 5fd2403725 Merge main into fix/http-status-line-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 22:39:17 -03:00
Federico Marras 83be1aae7d Merge remote-tracking branch 'upstream/main' into feat/http-memory-pool-stats
# Conflicts:
#	core/libs/prx/libSceHttp/Export.cpp
#	docs/dev/debt/libSceHttp.md
2026-10-22 07:05:11 +02:00
orezraeyandClaude Opus 5.5 3bcc0fd719 Merge main into fix/http-uri-parse-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 20:51:44 -03:00
orezraeyandClaude Opus 5.5 20ec66fe21 Merge main into fix/http-status-line-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 20:49:58 -03:00
orezraeyandClaude Opus 5.5 eed64b8c11 Merge main into fix/http-uri-copy-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 20:48:42 -03:00
boykopovar 870376c65f fix(abi): apply guest calling convention to system callbacks 2026-10-21 21:55:56 +03:00
boykopovar 5b01f05550 fix(http): apply sdk character rules to uri decoding 2026-10-21 21:51:45 +03:00
boykopovar 7eac0fbbac fix(http): restore uri builder limits and output rules 2026-10-21 21:51:43 +03:00
boykopovar 3985ae95cb fix(http): match native header parsing and uri decoding 2026-10-21 21:51:42 +03:00
orezraeyandClaude Opus 5.5 19d7e29b3a fix(libSceHttp): copy URIs as measured on a PS5
A payload on a PS5 (firmware 13.60) shows sceHttpUriCopy clears the
whole output and all prepare bytes of the pool before it reads the
source, so a source that is the output or lies in the pool copies as
empty. Read the source after clearing, clear the output with its
padding, and test the measured layout, failures and aliasing.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 08:33:25 -03:00
orezraeyandClaude Opus 5.5 77a05cbfe9 fix(libSceHttp): parse status lines past lineLen as measured on a PS5
A payload process on a PS5 (firmware 13.60) parsed 124 status lines and
lengths. It checks lineLen only for its minimum of 8 and for the three
code digits, reads the version and its separators past it, and finds the
line feed up to and including the byte at lineLen, so a length that
stops right before the line feed still parses. When the version ends
past lineLen the unsigned subtractions wrap and the search continues
until a line feed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 08:24:19 -03:00
orezraeyandClaude Opus 5.5 b9b9c07713 fix(libSceHttp): parse, build and merge URIs as measured on a PS5
A payload process on a PS5 (firmware 13.60) parsed, built and merged
several hundred URIs. sceHttpUriParse cuts the hostname at the first
byte that cannot be in it and starts the path there instead of failing,
takes the userinfo up to the first '@', accepts a port up to 65536 that
ends at '/' or the end, and gives https... schemes 443 and http...
schemes 80. It sweeps the path as sceHttpUriSweepPath does but sizes the
pool for the unswept path, and leaves require alone when the pool is too
small. sceHttpUriBuild writes IPv6 hostnames without brackets.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 08:07:12 -03:00
orezraeyandClaude Opus 5.5 d991252d25 fix(libSceHttp): keep the unmeasured single-dot sweep boundary
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 22:50:59 -03:00
orezraeyandClaude Opus 5.5 e2c37be594 fix(libSceHttp): unescape and sweep URIs as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 20:25:59 -03:00
Federico Marras 849bc36362 feat(libSceHttp): report a context's pool in sceHttpGetMemoryPoolStats 2026-10-20 12:58:42 +02:00
Atharv Jairath 81cd06b8bb fix(http): make URI parsing independent of host locale 2026-10-19 23:17:34 +05:30
Dean 95d08209cd Merge pull request #7779 from Antifrag/codex/http-cache-flush
fix(libSceHttp): add authentication and cookie cache flush exports
2026-10-19 23:52:45 +13:00
Adrià 079afa9b84 Merge pull request #6649 from ymatrix1/feat/http-uri-copy
feat(libSceHttp): implement sceHttpUriCopy
2026-10-19 10:01:28 +02:00
Anton Ermolaev 4450bafec8 fix(libSceHttp): add authentication and cookie cache flush exports 2026-10-19 12:07:02 +05:00
unknown 7c71fc603a fix(libSceHttp): make URI escaping independent of host locale 2026-10-17 18:46:12 +02:00
Yuri Olive 630ab4c20b feat(libSceHttp): implement sceHttpUriCopy 2026-10-15 22:46:40 -03:00
Adrià 1be2ca2028 Merge pull request #3706 from MarcZX100/codex/http-abort-wait-3156
feat(libSceHttp): implement abortable epoll waits
2026-10-11 23:53:59 +02:00
David 4c7d83a2bf feat(libSceHttp): implement sceHttpAbortWaitRequest and the unlimited sceHttpWaitRequest
Deathloop (PPSA01670) imports sceHttpAbortWaitRequest; Planet Coaster
(PPSA01736) and Palworld import sceHttpWaitRequest.

Epoll handles are kept in a registry with an abort flag, a destroyed flag
and a condition variable. A wait with a negative timeout blocks until
sceHttpAbortWaitRequest, sceHttpDestroyEpoll or the sceHttpTerm of the
last context wakes it; a bounded wait still returns 0 events. An abort
stays set and makes every later wait return SCE_HTTP_ERROR_ABORTED
(0x80431080); a wait woken by destroy or term returns 0 events.
sceHttpDestroyEpoll no longer frees a handle a waiter is blocked on.
sceHttpInit registers its context, and the epoll calls and sceHttpTerm
return BEFORE_INIT without a live context and INVALID_ID for an unknown
context or handle.

Behaviour and error codes: shadPS4 src/core/libraries/network/http.cpp
and http_error.h at a8a70da595da2a96e0410309472ba4a7eb558144.
Signature (void* eh): Orbital tools/ida/db_types.json at
b321fcdbd700cc02da1cb1ad25412781d5ec73c6 and SharpProspero
src/SharpProspero/Interop/Net/Http.cs at
60977b29103452b9681ae10c7a9011d44965bf16.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
(cherry picked from commit 766997df3f8329fd6e8e7aac2b5d83daf88c8292)
2026-10-11 15:40:17 +00:00
Adelmo Junior 5334bd178c fix(libSceHttp): retain authority delimiter for partial URI builds 2026-10-11 10:28:39 -03:00
tototomate123 63d29116b4 fix(http): retain request status callbacks with the guest ABI 2026-10-11 07:36:46 +02:00
Hannah Lyons e203c43221 feat(libSceHttp): accept sceHttpSetRecvBlockSize 2026-10-10 12:40:55 -04:00
Dean 812c86cde7 Merge pull request #1481 from awake-devel/feat/http-auth-info-callback
feat(http): accept sceHttpSetAuthInfoCallback
2026-10-09 21:03:15 +13:00
MathiasDevelopesandClaude Opus 5.5 485eb1aedd fix(libSceHttp): sceHttpWaitRequest reports no ready requests
It returned the network error, which titles that poll their epoll treat
as fatal. No request is ever pending, since sending fails at once, so the
wait now times out with no events; an infinite wait throws.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-08 20:48:20 +02:00
clem-gbandClaude Opus 5.5 c91b306157 feat(http): accept sceHttpSetAuthInfoCallback
PPSA13427 imports sceHttpSetAuthInfoCallback (jf4TB2nUO40), which no
library exported, so the relinked title failed to load. No request
reaches the network, so no server asks for authentication: the
callback is accepted and never called. The signature and callback
type follow shadPS4.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01HeC9bA3n74TzJRYv9AgBE8
2026-10-08 20:42:24 +02:00
Claude 3ed954fb90 feat(libSceHttp): accept the SSL version, SSL error and redirect and cookie callback calls
No request reaches the network, so sceHttpsSetSslVersion has no TLS
connection to configure, sceHttpSetRedirectCallback and
sceHttpSetCookieRecvCallback register callbacks that are never called,
and sceHttpsGetSslError reports error 0 with detail 0. A null errNum or
detail returns SCE_HTTP_ERROR_INVALID_VALUE like sceHttpGetLastErrno.
Signatures follow shadPS4.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-08 10:57:14 +02:00
Dean 66da53663f Merge pull request #810 from adriadam10/feat/http-uri-merge
feat(libSceHttp): implement sceHttpUriMerge
2026-10-07 10:05:32 +13:00
Adrià FranchandClaude 7db0a80b19 libSceHttp: keep sceHttpUriSweepPath inside srcSize, cite shadPS4
Co-Authored-By: Claude <[email protected]>
2026-10-06 11:52:27 +02:00
Adrià FranchandClaude 16285b473f libSceHttp: classify the relative reference without host validation in sceHttpUriMerge
Co-Authored-By: Claude <[email protected]>
2026-10-06 11:51:34 +02:00
Adrià FranchandClaude 0207e28f88 feat(libSceHttp): implement sceHttpUriMerge
Co-Authored-By: Claude <[email protected]>
2026-10-06 11:51:34 +02:00
Adrià FranchandClaude e6d0c9c9b0 feat(libSceHttp): implement sceHttpUriSweepPath
Co-Authored-By: Claude <[email protected]>
2026-10-06 11:51:26 +02:00
Adrià FranchandClaude bc7fdff9e5 feat(libSceHttp): add sceHttpSetResponseHeaderMaxSize, sceHttpRedirectCacheFlush, sceHttpsUnloadCert
Co-Authored-By: Claude <[email protected]>
2026-10-06 08:06:17 +02:00
NumberGuan cda1d4b211 feat(http): implement URI percent decoding 2026-10-05 20:14:23 -03:00
Dean d66925cd5f Merge pull request #708 from adriadam10/feat/http-inflate-gzip
feat(http): name sceHttpSetInflateGZIPEnabled and sceHttpSetRequestStatusCallback
2026-10-06 08:12:50 +13:00
Adrià FranchandClaude 7bcdc6f578 feat(http): name sceHttpSetInflateGZIPEnabled and sceHttpSetRequestStatusCallback
Co-Authored-By: Claude <[email protected]>
2026-10-05 19:29:54 +02:00
Celegans12andClaude Opus 5.5 d926e7879c feat(http): implement sceHttpParseStatusLine
Titles import sceHttpParseStatusLine from libSceHttp to read the
status line of a response; without the export they fail at startup.
Parse the HTTP/x.y version, the three-digit code and the reason phrase
up to the line feed, and return the library's PARSE_HTTP error codes.
The seven-argument signature is the one SharpProspero declares; the
behaviour follows the shadPS4 reimplementation of the PS4 library,
except that no byte past lineLen is read. A consumed count above
INT32_MAX cannot be returned and throws. guest_http covers valid lines
and each error path.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 17:51:29 +02:00
Phi1ow be59a9e7e9 feat(http): implement sceHttpCreateRequest2, sceHttpsEnableOption, sceHttpsLoadCert and sceHttpGetLastErrno
Four more libSceHttp exports, following the library's existing "no network emulated" model:

- sceHttpCreateRequest2 -> a new handle, like sceHttpCreateRequestWithURL2
- sceHttpsEnableOption -> 0, the counterpart of the existing sceHttpsDisableOption
- sceHttpsLoadCert -> 0 (certificates are accepted and ignored; no TLS is performed)
- sceHttpGetLastErrno -> 0 (no request reaches the network, so no errno is recorded); a
  null output pointer returns ERROR_INVALID_VALUE, like the other getters in this file

Signatures follow the public OpenOrbis SDK headers. GuestHttp is extended to cover the four
functions; the new assertions fail without the change (the symbols are undefined).
2026-10-04 22:04:13 +02:00
Adrià FranchandClaude 0a8cc7f543 feat(libSceHttp): implement URI parse, build and escape
sceHttpUriParse, sceHttpUriBuild and sceHttpUriEscape work on strings
only and are implemented. sceHttpCreateRequestWithURL, sceHttpReadData,
sceHttpSetChunkedTransferEnabled and sceHttpCreateEpoll follow the
existing no-network behaviour.

Co-Authored-By: Claude <[email protected]>
2026-10-01 18:15:50 +02:00