Commit Graph
46 Commits
Author SHA1 Message Date
boykopovar 35cf8d56cd refactor(sdk): add canonical headers for core libraries 2026-10-24 23:17:37 +03:00
Dean 9446779906 Merge pull request #9413 from MarcZX10/feat/http-cookie-enabled-option
feat(libSceHttp): implement cookie-enabled option state
2026-10-23 19:28:53 +13: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
Dean Galvin 57bf968aa3 Merge main into feat/http-cookie-enabled-option 2026-10-23 14:37:47 +13:00
Dean 2e0c9251df Merge pull request #9405 from MarcZX10/feat/http-auth-enabled-option
feat(libSceHttp): implement auth-enabled option state
2026-10-23 14:22:37 +13:00
MarcZX10 94ea385b51 feat(libSceHttp): implement cookie-enabled option state 2026-10-22 13:31:21 +00:00
MarcZX10 eb7ed110b5 feat(libSceHttp): implement auth-enabled option state 2026-10-22 13:31:21 +00: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 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 6369edbf12 Merge main into fix/http-uri-parse-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 09:10:14 -03:00
Adrià d099bc6cd8 Merge pull request #8245 from YossiYad/feat/http-object-options
feat(libSceHttp): keep options per template, connection and request and implement their getters
2026-10-21 14:04:15 +02: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
Yossi Yadgar ede0124063 fix(libSceHttp): refuse the option calls before init and sceHttpSetEpoll for a handle that is not an epoll
The last sceHttpTerm now ends every template, connection and request's options, so a stale id is refused after the next sceHttpInit.
2026-10-21 09:36:43 +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
Yossi Yadgar c0f8251a4b feat(libSceHttp): accept the redirect cache, private SSL and forced abort calls
Without a network these change nothing, so they check their arguments and return 0, and the debt file lists them as silent stubs.
2026-10-20 09:37:17 +03:00
Yossi Yadgar 2525578179 feat(libSceHttp): implement sceHttpGetEpoll
sceHttpSetEpoll and sceHttpUnsetEpoll now keep and clear the object's epoll and argument, which sceHttpGetEpoll returns.
2026-10-20 09:36:03 +03:00
Yossi Yadgar 32f0a809be feat(libSceHttp): implement the Accept-Encoding gzip switches
sceHttpSetDefaultAcceptEncodingGZIPEnabled sets the value templates of that context start with; sceHttpSetAcceptEncodingGZIPEnabled and sceHttpGetAcceptEncodingGZIPEnabled set and read it per object.
2026-10-20 09:35:20 +03:00
Yossi Yadgar 585e42bcab feat(libSceHttp): implement sceHttpGetNonblock and the Try variants of the nonblocking switch 2026-10-20 09:34:26 +03:00
Yossi Yadgar ac6ceb0b55 feat(libSceHttp): keep redirect options per object and implement sceHttpGetAutoRedirect
Templates, connections and requests now each keep their options, copied from the parent when they are created, so sceHttpSetAutoRedirect is no longer dropped and sceHttpGetAutoRedirect returns it.
2026-10-20 09:33:53 +03:00
Atharv Jairath 81cd06b8bb fix(http): make URI parsing independent of host locale 2026-10-19 23:17:34 +05:30
Adrià 079afa9b84 Merge pull request #6649 from ymatrix1/feat/http-uri-copy
feat(libSceHttp): implement sceHttpUriCopy
2026-10-19 10:01:28 +02: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
MarcZX100 0e838c5be3 fix: skip zero-length memcpy calls 2026-10-10 21:23:19 +13:00
Dean 24eac1c445 Merge pull request #886 from Fishybeing/fix/http-status-line-overflow
fix(http): count sceHttpParseStatusLine as implemented
2026-10-07 11:06:19 +13: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
Fishybeing 38824ec524 fix(http): count sceHttpParseStatusLine as implemented
Its only NotImplemented_nid_no_patch call guarded the int range limit on the consumed byte count, so tools/progress.py listed the implemented function as missing. Throw std::out_of_range like sceHttpParseResponseHeader does for the same limit.
2026-10-06 14:57:53 +02: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
NumberGuan cda1d4b211 feat(http): implement URI percent decoding 2026-10-05 20:14:23 -03: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
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