aa7e8de Revert adding AI_ADDRCONFIG flag to getaddrinfo(3) calls.

Authored and Committed by jackorp 4 months ago
    Revert adding AI_ADDRCONFIG flag to getaddrinfo(3) calls.
    
    It is causing problems when network is in certain, valid, configuration.
    The point of it is to workaround a glibc bug that is not present for us.
    https://bugs.ruby-lang.org/issues/20208
    
    To reproduce, have IPv6 enabled localhost but only IPv4
    interfaces (such as eth0, name and count of them may vary based on system)
    to disable public interfaces via sysctl:
    `$ sysctl "net.ipv6.conf.<interface>.disable_ipv6=1"`
    Where <interface> is NOT lo but can be eth0 or other.
    
    Confirm with command `$ ip addr` command that only `lo`
    interface has IPv6 address.
    
    and run the following with Ruby 3.3:
    ~~~
    $ ruby -rnet/http -e 'http = Net::HTTP.new("localhost", 8080); http.local_host = Addrinfo.tcp("localhost", 8080).ip_address; p http.get("/")'
    ~~~
    The error is then related to EAFNOSUPPORT:
    ```
    Errno::EAFNOSUPPORT: Failed to open TCP connection to localhost:37337 (Address family not supported by protocol - bind(2) for "::1" port 45395)
    ```
    
    running above Ruby command with `strace` suggest that
    there is an attempt to bind with AF_INET6
    using an AF_INET socket, however, only if the reproducer above
    attempts to set the `http.local_host` with Addrinfo.
    
    From upstream issue #20208:
    "This is calling getaddrinfo to resolve "localhost" for us to use
    it as the local side of the connection. Because Ruby does not know
    what you intend to do with this IP address, it does not make the request
    with AI_ADDRCONFIG. Thus, you get an IPv6 result returned,
    since there is an IPv6 addres for localhost!"
    
        
file modified
+17 -1