4.4 KiB
libSceHttp2 technical debt
Silent stubs
- libSceHttp2 - no request reaches the network, so
sceHttp2SetMinSslVersionhas no TLS connection to restrict and its value is ignored, as forsceHttp2SslEnableOptionandsceHttp2SslDisableOption. The three setters validateidagainst the live handle registry and returnSCE_HTTP2_ERROR_INVALID_ID(0x817B1100) for an invalid handle, following prosper. Whether the console restricts the object kind these setters accept, and what it does with an id from a previous init/term cycle, is unverified, so any live handle kind is accepted and ids are never reused.sceHttp2Term,sceHttp2DeleteTemplate,sceHttp2DeleteRequest,sceHttp2CreateTemplate,sceHttp2CreateRequestWithURLandsceHttp2SendRequestAsyncalso return the invalid-id error for a handle of the wrong kind or no longer live, following prosper (not measured on a console)
Unknown function info
-
sceHttp2DeleteCookieBox (libSceHttp2) - imported by PPSA35943's Unity player. The
(int cookieBoxId)signature follows SharpProspero. A boxsceHttp2CreateCookieBoxreturned is discarded; an unknown or already deleted id returns the library's invalid-id error (0x817B1100), as prosper does; not measured on a console -
sceHttp2SetResolveRetry (libSceHttp2) - signature
(int id, int32_t retry)from libSceHttp'ssceHttpSetResolveRetry; the value is accepted and ignored like the other Http2 settings, since no request reaches the network -
libSceHttp2 cookie boxes (libSceHttp2) -
sceHttp2CreateCookieBoxtakes a machine-sized pool size, requires at least 64 KiB and allocates independently of HTTP contexts. The host reserves the pool with 16 KiB rounding but does not reproduce native cookie-heap bookkeeping, identifier ranges or retained request references. Its delete signature and invalid-ID error are confirmed.sceHttp2SetRequestNoContentLengthtakes only the request id. Cookies are never stored, sosceHttp2CookieFlushhas nothing to discard -
libSceHttp2 pending exports - 18 named callable exports were identified in the PS5 3.20 export table and cross-checked against firmware 13.60. Signatures and behavior remain unverified; declarations use the unknown-signature convention and throw through
NotImplemented_nid_no_patch. Evidence: 3.20 export list.
Functional
-
libSceHttp2 asynchronous requests (libSceHttp2) never reach the network:
sceHttp2SendRequestAsyncaccepts the request, queues a completion whose result is the library's network error and triggers the user event named by the kqueue option (equeue at offset 0, event id at 8, user data at 16, layout inferred from PPSA17221);sceHttp2WaitAsyncreturns that completion. The completion'sevent_typevalue is unknown and left 0. PPSA17221 completes its request object only aftersceHttp2SendRequestAsyncreturns, and its handler for a synchronous failure callsshared_from_thisbefore that, so a send must not fail synchronously. PPSA15508 passes null kqueue and extra options at original VA 0xb63931, then callssceHttp2WaitAsyncwith a 24-byte result and a 2,000,000 timeout, and checks the result at offset 8. A null kqueue option therefore retains the same offline completion for direct waiting without an event notification. The timeout is not used because the offline result is already complete. This path follows the original title call and caller control flow, not a console measurement. A supplied kqueue with a missing user event, an extra option, and a wait with no completed operation still throw -
WebSocket ping settings: both setters take a 32-bit request ID and a 32-bit interval/timeout in microseconds, confirmed by the timer consumer and its clock conversion. The protected implementations remain unchanged.