feat(libSceNpWebApi): return the measured errors from ReadData and the header getters
9.7 KiB
libSceNpWebApi technical debt
Additional callable exports
- Additional callable exports - 38 NIDs occur as functions under the same module and logical library in both version-labelled images. The labels do not independently authenticate retail firmware provenance; the NIDs are absent from the pinned public 3.20 catalogue. Names, prototypes and behavior are unverified. These import-resolution declarations throw through
NotImplemented_nid_no_patchand implement no runtime functionality.
| Name | NID |
|---|---|
| Unknown | +aMuhoVidDY |
| Unknown | 0cCtt7Uv6rU |
| Unknown | 4yR2XRjuTRI |
| Unknown | 54n5gNkHtlM |
| Unknown | B4OVXU6VY9o |
| Unknown | BkxO0e2+ueg |
| Unknown | Gm138-2DI6g |
| Unknown | HgaTom-g+VQ |
| Unknown | JKm18ddwAM8 |
| Unknown | JNiFPWtH-Hk |
| Unknown | KEYeKen41pc |
| Unknown | PCliRwT6ueA |
| Unknown | PwJ4BO0uwR4 |
| Unknown | QGbJTngpl80 |
| Unknown | U2KAvj2rtSE |
| Unknown | V6DhvHJCGfM |
| Unknown | WBl0nAQLZjc |
| Unknown | YZjQyCXoYxk |
| Unknown | YfK56KsJN0M |
| Unknown | a8OI5hE-DUQ |
| Unknown | daA4FMfpA58 |
| Unknown | eJ1gJsUhQW4 |
| Unknown | fe1j0GOZ7-8 |
| Unknown | flWi3MA9OVo |
| Unknown | fwS31KfUHoA |
| Unknown | jhZyUt+lyVc |
| Unknown | ldAEblBOOwk |
| Unknown | lyhL-aTxj98 |
| Unknown | meMsH0c36rQ |
| Unknown | nP9mHqC8v4M |
| Unknown | nrDh9GesOyk |
| Unknown | ojGP5vur+qM |
| Unknown | ugei4b97OXE |
| Unknown | vQgD7uDMKaA |
| Unknown | vm9OVSS7E18 |
| Unknown | wNSQ60gepNA |
| Unknown | wXXTksptCEo |
| Unknown | zQE2rxZdLy8 |
Unknown function info
-
sceNpWebApiGetHttpStatusCode - throws through
NotImplemented_nid_no_patch; its behaviour and PS5 prototype are unmeasured. The only source of the parameter list is shadPS4's PS4-derived prototype (GPLv2, used as a reference only), with no second reference.sceNpWebApiReadDatatakes its parameter list from the same source; its behaviour is recorded below. -
sceNpWebApiInitialize, sceNpWebApiTerminate, sceNpWebApiCreateHandle, sceNpWebApiDeleteHandle, sceNpWebApiCreatePushEventFilter, sceNpWebApiDeletePushEventFilter (libSceNpWebApi, PS4) - signatures, id ranges (library contexts 1 to 0x7fff, handles and filters below 0xf0000000) and errors (
LIB_CONTEXT_NOT_FOUND,HANDLE_NOT_FOUND,PUSH_EVENT_FILTER_NOT_FOUND,INVALID_ARGUMENTfor a missing filter parameter) follow shadPS4; they are not checked on a console. The libHttp context and pool size are kept but not used, since no request is ever sent. Limbo (CUSA01664) creates a context, a handle and filters when its game starts. -
The firmware inventory exports listed below have unknown signatures and behaviour. Only their names and NIDs are established by the 13.60 export inventory. Their parameterless
intdeclarations are import-resolution placeholders, not confirmed ABI signatures, and every call throws throughNotImplemented_nid_no_patch.
| Name | NID |
|---|---|
sceNpWebApiAddMultipartPart |
19KgfJXgM+U |
sceNpWebApiClearAllUnusedConnection |
KQIkDGf80PQ |
sceNpWebApiClearUnusedConnection |
f-pgaNSd1zc |
sceNpWebApiGetConnectionStats |
UJ8H+7kVQUE |
sceNpWebApiGetErrorCode |
2qSZ0DgwTsc |
sceNpWebApiIntCreateCtxIndExtdPushEventFilter |
c1pKoztonB8 |
sceNpWebApiIntCreateServicePushEventFilter |
TZSep4xB4EY |
sceNpWebApiIntRegisterServicePushEventCallback |
VjVukb2EWPc |
sceNpWebApiIntRegisterServicePushEventCallbackA |
sfq23ZVHVEw |
sceNpWebApiRegisterExtdPushEventCallback |
vrM02A5Gy1M |
sceNpWebApiSendMultipartRequest |
KCItz6QkeGs |
sceNpWebApiSendMultipartRequest2 |
DsPOTEvSe7M |
sceNpWebApiSetMaxConnection |
gRiilVCvfAI |
- sceNpWebApiAbortHandle, sceNpWebApiAddHttpRequestHeader, sceNpWebApiCheckTimeout, sceNpWebApiCreateMultipartRequest, sceNpWebApiSendRequest2, sceNpWebApiSetHandleTimeout, sceNpWebApiSetMultipartContentType, sceNpWebApiSetRequestTimeout - the timeout unit is unverified: shadPS4 logs both timeouts as ms but adds them to microsecond process time, as done here from a request's first send. Not checked on a console; prototypes are Orbital's, checks shadPS4's. Headers, multipart types and handle timeouts go unused, as nothing is sent.
sceNpWebApiCheckTimeoutaborts expired requests at most once per 1000 µs, then a send returnsNOT_SIGNED_IN, notABORTED. Multipart parts throw, so no multipart send succeeds. - sceNpWebApiCreateServicePushEventFilter (libSceNpWebApi, PS4) - a filter for a PSN service needs the signed-in user, and no user is signed in to PSN, so a valid call returns
SIGNED_IN_USER_NOT_FOUNDafter the context and handle checks, as shadPS4 does with its network disabled.sceNpWebApiDeleteServicePushEventFiltertherefore never finds a filter. - sceNpWebApiInitializeForPresence, sceNpWebApiVshInitialize and sceNpWebApiIntInitialize (libSceNpWebApi) - create a library context like
sceNpWebApiInitialize, as shadPS4 does on the PS4: the 32-byte internal argument structure and itsstructSizecheck (INVALID_ARGUMENT) follow its declaration. The context type shadPS4 records and the internal name are not kept, because nothing reads them, as withlibSceNpWebApi2. Not measured on a console - sceNpWebApiRegisterNotificationCallback and sceNpWebApiUnregisterNotificationCallback (libSceNpWebApi) - check a null callback, then the library and user context, as shadPS4 does, and return 0. The callback is not kept, because no NP notification can arrive offline, so it would never be called. Not measured on a console
- sceNpWebApiIntCreateRequest (libSceNpWebApi) - creates a request like
sceNpWebApiCreateRequest, as shadPS4 does: a null group or path, or a method past PATCH, returnsINVALID_ARGUMENTwhatever the SDK version, then a content length without a type returnsINVALID_CONTENT_PARAMETER. Its internal arguments are three pointers that shadPS4 accepts only when all are null, so a set field throws after the user context check. Not measured on a console - sceNpWebApiCreateContext, sceNpWebApiDeleteContext, sceNpWebApiCreateRequest, sceNpWebApiDeleteRequest, sceNpWebApiAbortRequest, sceNpWebApiSendRequest (libSceNpWebApi, PS4) - the online id is not looked up: as in shadPS4, a user context belongs to the initial user, so a library context holds at most one. With no user signed in to PSN,
sceNpWebApiSendRequestreturnsNOT_SIGNED_INunless the request is aborted. Id layouts and the delete, abort and not-found results match an offline PS4 Pro probe on firmware 10.71 (#9797); other checks follow shadPS4. Method 99 after DELETE givesINVALID_ARGUMENT(0x80552902) from a probe built at SDK 0x05050001; the 2.50 threshold is shadPS4's, not measured.sceNpWebApiTerminatealso deletes user contexts and requests; shadPS4 stops after the first user context. - sceNpWebApiRegisterPushEventCallback, sceNpWebApiUnregisterPushEventCallback, sceNpWebApiRegisterServicePushEventCallback, sceNpWebApiUnregisterServicePushEventCallback (libSceNpWebApi, PS4) - registered callbacks are never called, since no push event arrives. A null function is rejected from SDK 1.00 and the filter must exist in the library context from SDK 2.50, as in shadPS4; this is not checked on a console. No service filter can be created, so from SDK 2.50 a service callback returns
SERVICE_PUSH_EVENT_FILTER_NOT_FOUND. Callback ids come from the counter of handles and filters. - sceNpWebApiReadData, sceNpWebApiGetHttpResponseHeaderValue, sceNpWebApiGetHttpResponseHeaderValueLength (libSceNpWebApi, PS4) - no request is ever sent, so none has a response:
sceNpWebApiReadDatareturns libSceHttpINVALID_ID(0x80431100) and the header gettersPARSE_HTTP_INVALID_RESPONSE(0x80432060), as an offline PS4 Pro probe on firmware 10.71 measured for an unsent request, along withLIB_CONTEXT_NOT_FOUNDfor request -1 (#9797). shadPS4 reads 0 bytes there instead. The argument checks before the lookup,ABORTEDfromsceNpWebApiReadDatafor an aborted request and the unwritten outputs follow shadPS4; they are not checked on a console.