mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 16:43:05 -05:00
sceNetGetSockInfo returned 0 for a known socket and wrote nothing, so callers read uninitialised bytes as the socket's endpoints. Monster Hunter Wilds (PPSA24191) calls it after bind, connect and accept and stores the local and remote address and port it reads back. It now writes one 0xA0-byte record in the layout SharpProspero and shadPS4 give: the socket id, the socket type, the local and remote IPv4 address and port of the host socket in network byte order, the SELF and NONBLOCK status flags, and the receive and send buffer sizes sceNetGetsockopt reports for the socket. The other fields are 0. It returns 1, the number of records written, and EINVAL for a null record or an n below 1, as shadPS4 does. An s below 0 lists the sockets as shadPS4 does: with a null record it returns their number, otherwise it writes up to n records in socket order and returns how many it wrote. Unlike shadPS4, which lists IPv6 sockets with zero addresses and ignores flags, an IPv6 socket fails with EAFNOSUPPORT and is left out of the count and the list, and a flags bit other than 0x40 fails with EINVAL. SharpProspero names 0x40 SockInfoTimeWait; closed sockets leave the table at once, so it lists the same sockets. docs/dev/debt/libSceNet.md lists the fields left 0 and these differences. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>