Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit da2e6b6d authored by Remi NGUYEN VAN's avatar Remi NGUYEN VAN Committed by android-build-merger
Browse files

Merge "Use AI_ADDRCONFIG for most DNS requests" into pi-dev am: c02b9f6d

am: 4959222b

Change-Id: I8ca15fa079cd5ff94e4d9f7e0476504769f9708f
parents 65417d40 4959222b
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -782,8 +782,9 @@ public class NetworkMonitor extends StateMachine {
        private void resolveStrictModeHostname() {
        private void resolveStrictModeHostname() {
            try {
            try {
                // Do a blocking DNS resolution using the network-assigned nameservers.
                // Do a blocking DNS resolution using the network-assigned nameservers.
                // Do not set AI_ADDRCONFIG in ai_flags so we get all address families in advance.
                final InetAddress[] ips = ResolvUtil.blockingResolveAllLocally(
                final InetAddress[] ips = ResolvUtil.blockingResolveAllLocally(
                        mNetwork, mPrivateDnsProviderHostname);
                        mNetwork, mPrivateDnsProviderHostname, 0 /* aiFlags */);
                mPrivateDnsConfig = new PrivateDnsConfig(mPrivateDnsProviderHostname, ips);
                mPrivateDnsConfig = new PrivateDnsConfig(mPrivateDnsProviderHostname, ips);
            } catch (UnknownHostException uhe) {
            } catch (UnknownHostException uhe) {
                mPrivateDnsConfig = null;
                mPrivateDnsConfig = null;
+11 −4
Original line number Original line Diff line number Diff line
@@ -16,6 +16,8 @@


package android.net.dns;
package android.net.dns;


import static android.system.OsConstants.AI_ADDRCONFIG;

import android.net.Network;
import android.net.Network;
import android.net.NetworkUtils;
import android.net.NetworkUtils;
import android.system.GaiException;
import android.system.GaiException;
@@ -41,12 +43,17 @@ public class ResolvUtil {


    public static InetAddress[] blockingResolveAllLocally(Network network, String name)
    public static InetAddress[] blockingResolveAllLocally(Network network, String name)
            throws UnknownHostException {
            throws UnknownHostException {
        // Use AI_ADDRCONFIG by default
        return blockingResolveAllLocally(network, name, AI_ADDRCONFIG);
    }

    public static InetAddress[] blockingResolveAllLocally(
            Network network, String name, int aiFlags) throws UnknownHostException  {
        final StructAddrinfo hints = new StructAddrinfo();
        final StructAddrinfo hints = new StructAddrinfo();
        // Unnecessary, but expressly no AI_ADDRCONFIG.
        hints.ai_flags = aiFlags;
        hints.ai_flags = 0;
        // Other hints identical to the default Inet6AddressImpl implementation
        // Fetch all IP addresses at once to minimize re-resolution.
        hints.ai_family = OsConstants.AF_UNSPEC;
        hints.ai_family = OsConstants.AF_UNSPEC;
        hints.ai_socktype = OsConstants.SOCK_DGRAM;
        hints.ai_socktype = OsConstants.SOCK_STREAM;


        final Network networkForResolv = getNetworkWithUseLocalNameserversFlag(network);
        final Network networkForResolv = getNetworkWithUseLocalNameserversFlag(network);