mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-27 00:28:14 +00:00
2.9 KiB
2.9 KiB
libSceHttpCache technical debt
Unknown function info
- sceHttpCacheDebugSetUrl, sceHttpCacheSystemSendStatistics and sceHttpCacheSystemTerm: the supplied implementations return zero without reading arguments. No callers have yet established whether their public prototypes include unused arguments.
sceHttpCacheClearCacheInfoandsceHttpCacheRemoveTag: signatures unverified; parameterless declarations that throw throughNotImplemented_nid_no_patch. The pointer types ofsceHttpCacheClearAllUserTags(a list of at most 20 entries, taken as user ids) andsceHttpCacheRegisterCacheInfoUrlare inferred from the checks.
Functional
- libSceHttpCache - cached responses live in process memory, keyed by user, URL and
User-Agentvalue, instead of the console's per-user files, so they are lost when the process exits; they surviveTerm. Request states, freshness, revalidation and header rules follow firmware 13.60, read from disassembly, not measured on a console. Apublicresponse stored while cache sharing is on, which the console files under the store shared by all users, throws throughNotImplemented_nid_no_patch, as do a lookup and aClearAllby another user while such an entry exists, since whether they reach the shared store was not read. The console's debug request header that adds cache state to responses is not reproduced. Header numbers the firmware'sstoulorstolrejects, a null URL inRetrieve(the firmware dereferences it) and an empty header list to return throw. - libSceHttpCache -
SetQuota,ClearAllUserTagsand a non-nullRegisterCacheInfoUrlthrow throughNotImplemented_nid_no_patchonce their arguments pass;Clear,CreateRequestWithTag,RemoveTag,ClearCacheInfo, bothWithMemoryPoolforms,SystemInit,SystemClearAllandSystemShutdownthrow outright, so no entry has a tag or a quota.Initignores its pool size, so the pool allocation failure is not reproduced, and storing never fails, so the console's file errors are not reproduced. - libSceHttpCache - the freshness lifetime is
ExpiresminusDate, or a tenth ofDateminusLast-Modified, computed on unsigned ticks without comparing them first, and an entry is fresh while its age is below that lifetime, as in firmware 13.60, read from disassembly, not measured on a console. AnExpiresearlier thanDate, or aLast-Modifiedlater thanDate, therefore wraps to a lifetime that never runs out, so the entry keeps being returned as a hit instead of going stale as RFC 9111 asks; this is kept to match the console.