Repository navigation
feat(libSceNet): implement sceNetResolverStartNtoa6 - #5411
Merged
oneandonlydean merged 1 commit intoOct 13, 2026
Merged
Conversation
Resolve a host name to its first IPv6 address through the host resolver (getaddrinfo with AF_INET6) and write the 16-byte address. The lookup shares the IPv4 path's resolver bookkeeping (abort preservation, error state); a name without an IPv6 address fails with RESOLVER_ENODNS like a failed lookup. Nonzero flags throw. Metal Gear Solid 4 Master Collection (PPSA18194) imports it and failed to load without it (unresolved zl35YNs9jnI from libSceNet.prx). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10 tasks done
This was referenced Oct 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
sceNetResolverStartNtoa6resolves a host name to its first IPv6 address and writes the 16-byte address. It was not exported, so a title that imports it fails to load (unresolved ELF import zl35YNs9jnI from libSceNet.prx).lookup_host);sceNetResolverStartNtoaand the multiple-record variants keep their behaviour and go through it withAF_INET.EINTR),sceNetResolverGetError, and theRESOLVER_ENODNSerror for a failed lookup. A name without an IPv6 address fails the same way.sceNetResolverStartNtoa. Nonzero flags throw, since their meaning for this call is not known.docs/dev/debt/libSceNet.mdrecords the assumptions: signature taken fromsceNetResolverStartNtoa, no IPv4-mapped fallback, unverified on hardware.Tested
Windows 11, RTX 3080, WinLibs GCC 15.2.0 r7, Release.
guest_sce_netgains checks:::1resolves to::1, a null name returnsEINVAL(0x80410116), and an IPv4 literal (no IPv6 address) returns and recordsRESOLVER_ENODNS(0x804101E1). Without the implementation the test does not link (undefined reference to sceNetResolverStartNtoa6). With it the test passes (exit 0). On this machine the whole test takes about 34 s, because the existing.invalidlookups wait on the local DNS, so it hits its 20 s ctest timeout here both with and without this change.python tools/check_conventions.py --base origin/mainandtools/check_test_registration.pypass.mainit fails to load on this import. With this change it reaches its title screen ("Press any button", Ver. 1.4.1) and runs at 60 fps for the 240 s run. Starting a game hands off to the second executable (--executable mgs4/mgs4.elf), which then stops on missing libSceCesCs EUC-JP conversions (sceCesUtf8StrToMbcsStrand its family). That is a separate follow-up.Checklist
main; no other open PR implements the same functions.mdfiles or images added to the repository🤖 Generated with Claude Code