On Mon, 18 Sep 2023 23:57:33 GMT, Liam Miller-Cushon <[email protected]> wrote:
> For 748, it's handling a situation where IPv4 isn't specifically preferred.
> The implementation comment notes 'if preferredAddressFamily is AF_INET6 or
> not set'.
What does "specifically preferred" mean? By default it will be set to AF_INET.
If it is set to AF_INET, you can't tell if
`java.net.preferIPv6Addresses=false` was specified (which implies AF_INET), or
if nothing was specified and it just defaulted to AF_INET. The comment and the
code read as if preferredAddressFamily will be something other than AF_INET
unless `java.net.preferIPv6Addresses=false` is used. Maybe the code is correct
and the comment needs some cleaning up. TBH I don't understand what this code
is suppose to do.
743 // Binding to IN6ADDR_ANY allows to serve both IPv4 and IPv6
connections,
744 // but binding to mapped INADDR_ANY (::ffff:0.0.0.0) allows to serve
IPv4
745 // connections only. Make sure that IN6ADDR_ANY is preferred over
746 // mapped INADDR_ANY if preferredAddressFamily is AF_INET6 or not set.
747
748 if (preferredAddressFamily != AF_INET) {
749 inet_pton(AF_INET6, "::ffff:0.0.0.0", &mappedAny);
750
751 if (isEqualIPv6Addr(listenAddr, mappedAny)) {
752 for (ai = addrInfo; ai != NULL; ai = ai->ai_next) {
753 if (isEqualIPv6Addr(listenAddr, in6addr_any)) {
754 listenAddr = ai;
755 break;
756 }
757 }
758 }
759 }
-------------
PR Comment: https://git.openjdk.org/jdk/pull/15796#issuecomment-1726680570