mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-27 00:28:14 +00:00
Merge pull request #8321 from MarrasFederico/feat/netctl-get-result-v6
feat(libSceNetCtl): report no error for IPv6 events in sceNetCtlGetResultV6
This commit is contained in:
3 files changed
+19
-3
No files matched your search
@@ -672,8 +672,12 @@ int APS5_VABI sceNetCtlUnregisterCallbackV6IpcInt(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceNetCtlGetResultV6(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
int APS5_VABI sceNetCtlGetResultV6(int event_type, int* error_code) {
|
||||
if (!error_code) return SCE_NET_CTL_ERROR_INVALID_ADDR;
|
||||
if (event_type < NET_CTL_EVENT_DISCONNECTED || event_type > NET_CTL_EVENT_IPOBTAINED) {
|
||||
throw std::runtime_error("sceNetCtlGetResultV6: event type " + std::to_string(event_type) + " is not implemented");
|
||||
}
|
||||
*error_code = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ int APS5_VABI sceNetCtlGetState(int*);
|
||||
int APS5_VABI sceNetCtlGetStateV6(int*);
|
||||
int APS5_VABI sceNetCtlGetInfoV6(int, void*);
|
||||
int APS5_VABI sceNetCtlGetResult(int, int*);
|
||||
int APS5_VABI sceNetCtlGetResultV6(int, int*);
|
||||
#ifdef __APPLE__
|
||||
std::size_t NetCtlDefaultRoutes_nid_no_patch(const char*, std::size_t, NetCtlDefaultRoute*, std::size_t);
|
||||
#endif
|
||||
@@ -271,6 +272,17 @@ int main() {
|
||||
Require(sceNetCtlGetResult(0, nullptr) == kErrInvalidAddr);
|
||||
int errorCode = -1;
|
||||
Require(sceNetCtlGetResult(0, &errorCode) == 0 && errorCode == 0);
|
||||
Require(sceNetCtlGetResultV6(kEventIpObtained, nullptr) == kErrInvalidAddr);
|
||||
for (const int eventType : {kEventDisconnected, 2, kEventIpObtained}) {
|
||||
int errorCodeV6 = -1;
|
||||
Require(sceNetCtlGetResultV6(eventType, &errorCodeV6) == 0 && errorCodeV6 == 0);
|
||||
}
|
||||
for (const int eventType : {0, 4, -1}) {
|
||||
int errorCodeV6 = -1;
|
||||
bool threw = false;
|
||||
try { sceNetCtlGetResultV6(eventType, &errorCodeV6); } catch (const std::runtime_error&) { threw = true; }
|
||||
Require(threw && errorCodeV6 == -1);
|
||||
}
|
||||
NetCtlInfo info{};
|
||||
Require(sceNetCtlGetInfo(0, &info) == kErrInvalidCode);
|
||||
Require(sceNetCtlGetInfo(22, &info) == kErrInvalidCode);
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
- [sceNetCtlSetErrorNotificationEnabledIpcInt](../../../core/libs/prx/libSceNetCtl/Export.cpp) (libSceNetCtl) - unknown signature
|
||||
- [sceNetCtlRegisterCallbackV6IpcInt](../../../core/libs/prx/libSceNetCtl/Export.cpp) (libSceNetCtl) - unknown signature
|
||||
- [sceNetCtlUnregisterCallbackV6IpcInt](../../../core/libs/prx/libSceNetCtl/Export.cpp) (libSceNetCtl) - unknown signature
|
||||
- [sceNetCtlGetResultV6](../../../core/libs/prx/libSceNetCtl/Export.cpp) (libSceNetCtl) - unknown signature
|
||||
- [sceNetCtlGetResultV6](../../../core/libs/prx/libSceNetCtl/Export.cpp) (libSceNetCtl, NID `H5yARg37U5g`) - `(int eventType, int* errorCode)` comes only from [SharpProspero](https://github.com/SvenGDK/SharpProspero/blob/5dfdb4b0b166e83dc9ae275001afb695f12c7174/src/SharpProspero/Interop/Net/NetCtl.cs#L246-L251), whose source is unknown; shadPS4 only stubs it. Callbacks registered with `sceNetCtlRegisterCallbackV6` receive no event, so event types 1-3 write 0 to `errorCode`; what a console writes before the first event is unmeasured. A null `errorCode` answers `INVALID_ADDR`, as `sceNetCtlGetResult` does, and other event types throw, as their error code on a console is unknown
|
||||
- [sceNetCtlGetResultV6IpcInt](../../../core/libs/prx/libSceNetCtl/Export.cpp) (libSceNetCtl) - unknown signature
|
||||
- [sceNetCtlGetStateV6IpcInt](../../../core/libs/prx/libSceNetCtl/Export.cpp) (libSceNetCtl) - unknown signature
|
||||
- [sceNetCtlGetInfoV6IpcInt](../../../core/libs/prx/libSceNetCtl/Export.cpp) (libSceNetCtl) - unknown signature
|
||||
|
||||
Reference in new issue
Block a user