On Mon, 18 Sep 2023 23:57:33 GMT, Liam Miller-Cushon <cus...@openjdk.org> 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