3.7 KiB
3.7 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 a handle that was never allocated, was deleted, or belonged to a terminated context, 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,sceHttp2CreateRequestWithURL,sceHttp2CreateCookieBoxandsceHttp2SendRequestAsyncalso 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
- sceHttp2WebSocketSetPingInterval (libSceHttp2, NID
YfaXPnc8PJE) - imported bylibdiscord_partner_sdk.prxof PPSA23126 (issue 2648). The parameters, the unit of the interval and the console errors are unknown. Every call throws. - 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 - sceHttp2WebSocketCreateRequest, sceHttp2WebSocketCloseAsync, sceHttp2WebSocketSendTextMessageAsync, sceHttp2WebSocketSendDataMessageAsync (libSceHttp2) - imported by PPSA16064 and not called during its start-up; unknown signatures
- libSceHttp2 cookie boxes (libSceHttp2) -
sceHttp2CreateCookieBoxis taken to take the library context id first, as in the prosper reimplementation; further arguments are unknown and ignored.sceHttp2SetRequestNoContentLengthis assumed to take only the request id. Cookies are never stored, sosceHttp2CookieFlushhas nothing to discard
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. A kqueue option or user event that is missing, an extra option, and a wait with no completed operation throw