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

Reply via email to