Loading core/java/android/net/DnsResolver.java +3 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package android.net; import static android.net.NetworkUtils.getDnsNetId; import static android.net.NetworkUtils.getDnsNetwork; import static android.net.NetworkUtils.resNetworkCancel; import static android.net.NetworkUtils.resNetworkQuery; import static android.net.NetworkUtils.resNetworkResult; Loading Loading @@ -333,7 +333,7 @@ public final class DnsResolver { final Object lock = new Object(); final Network queryNetwork; try { queryNetwork = (network != null) ? network : new Network(getDnsNetId()); queryNetwork = (network != null) ? network : getDnsNetwork(); } catch (ErrnoException e) { executor.execute(() -> callback.onError(new DnsException(ERROR_SYSTEM, e))); return; Loading Loading @@ -433,7 +433,7 @@ public final class DnsResolver { final FileDescriptor queryfd; final Network queryNetwork; try { queryNetwork = (network != null) ? network : new Network(getDnsNetId()); queryNetwork = (network != null) ? network : getDnsNetwork(); queryfd = resNetworkQuery(queryNetwork.getNetIdForResolv(), domain, CLASS_IN, nsType, flags); } catch (ErrnoException e) { Loading core/java/android/net/NetworkUtils.java +2 −3 Original line number Diff line number Diff line Loading @@ -158,10 +158,9 @@ public class NetworkUtils { /** * DNS resolver series jni method. * Attempts to get netid of network which resolver will * use if no network is explicitly selected. * Attempts to get network which resolver will use if no network is explicitly selected. */ public static native int getDnsNetId() throws ErrnoException; public static native Network getDnsNetwork() throws ErrnoException; /** * Get the tcp repair window associated with the {@code fd}. Loading core/jni/android_net_NetUtils.cpp +12 −6 Original line number Diff line number Diff line Loading @@ -304,13 +304,19 @@ static void android_net_utils_resNetworkCancel(JNIEnv *env, jobject thiz, jobjec jniSetFileDescriptorOfFD(env, javaFd, -1); } static jint android_net_utils_getDnsNetId(JNIEnv *env, jobject thiz) { int dnsNetId = getNetworkForDns(); if (dnsNetId < 0) { throwErrnoException(env, "getDnsNetId", -dnsNetId); static jobject android_net_utils_getDnsNetwork(JNIEnv *env, jobject thiz) { unsigned dnsNetId = 0; if (int res = getNetworkForDns(&dnsNetId) < 0) { throwErrnoException(env, "getDnsNetId", -res); return nullptr; } bool privateDnsBypass = dnsNetId & NETID_USE_LOCAL_NAMESERVERS; return dnsNetId; static jclass class_Network = MakeGlobalRefOrDie( env, FindClassOrDie(env, "android/net/Network")); static jmethodID ctor = env->GetMethodID(class_Network, "<init>", "(IZ)V"); return env->NewObject( class_Network, ctor, dnsNetId & ~NETID_USE_LOCAL_NAMESERVERS, privateDnsBypass); } static jobject android_net_utils_getTcpRepairWindow(JNIEnv *env, jobject thiz, jobject javaFd) { Loading Loading @@ -369,7 +375,7 @@ static const JNINativeMethod gNetworkUtilMethods[] = { { "resNetworkQuery", "(ILjava/lang/String;III)Ljava/io/FileDescriptor;", (void*) android_net_utils_resNetworkQuery }, { "resNetworkResult", "(Ljava/io/FileDescriptor;)Landroid/net/DnsResolver$DnsResponse;", (void*) android_net_utils_resNetworkResult }, { "resNetworkCancel", "(Ljava/io/FileDescriptor;)V", (void*) android_net_utils_resNetworkCancel }, { "getDnsNetId", "()I", (void*) android_net_utils_getDnsNetId }, { "getDnsNetwork", "()Landroid/net/Network;", (void*) android_net_utils_getDnsNetwork }, }; int register_android_net_NetworkUtils(JNIEnv* env) Loading Loading
core/java/android/net/DnsResolver.java +3 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package android.net; import static android.net.NetworkUtils.getDnsNetId; import static android.net.NetworkUtils.getDnsNetwork; import static android.net.NetworkUtils.resNetworkCancel; import static android.net.NetworkUtils.resNetworkQuery; import static android.net.NetworkUtils.resNetworkResult; Loading Loading @@ -333,7 +333,7 @@ public final class DnsResolver { final Object lock = new Object(); final Network queryNetwork; try { queryNetwork = (network != null) ? network : new Network(getDnsNetId()); queryNetwork = (network != null) ? network : getDnsNetwork(); } catch (ErrnoException e) { executor.execute(() -> callback.onError(new DnsException(ERROR_SYSTEM, e))); return; Loading Loading @@ -433,7 +433,7 @@ public final class DnsResolver { final FileDescriptor queryfd; final Network queryNetwork; try { queryNetwork = (network != null) ? network : new Network(getDnsNetId()); queryNetwork = (network != null) ? network : getDnsNetwork(); queryfd = resNetworkQuery(queryNetwork.getNetIdForResolv(), domain, CLASS_IN, nsType, flags); } catch (ErrnoException e) { Loading
core/java/android/net/NetworkUtils.java +2 −3 Original line number Diff line number Diff line Loading @@ -158,10 +158,9 @@ public class NetworkUtils { /** * DNS resolver series jni method. * Attempts to get netid of network which resolver will * use if no network is explicitly selected. * Attempts to get network which resolver will use if no network is explicitly selected. */ public static native int getDnsNetId() throws ErrnoException; public static native Network getDnsNetwork() throws ErrnoException; /** * Get the tcp repair window associated with the {@code fd}. Loading
core/jni/android_net_NetUtils.cpp +12 −6 Original line number Diff line number Diff line Loading @@ -304,13 +304,19 @@ static void android_net_utils_resNetworkCancel(JNIEnv *env, jobject thiz, jobjec jniSetFileDescriptorOfFD(env, javaFd, -1); } static jint android_net_utils_getDnsNetId(JNIEnv *env, jobject thiz) { int dnsNetId = getNetworkForDns(); if (dnsNetId < 0) { throwErrnoException(env, "getDnsNetId", -dnsNetId); static jobject android_net_utils_getDnsNetwork(JNIEnv *env, jobject thiz) { unsigned dnsNetId = 0; if (int res = getNetworkForDns(&dnsNetId) < 0) { throwErrnoException(env, "getDnsNetId", -res); return nullptr; } bool privateDnsBypass = dnsNetId & NETID_USE_LOCAL_NAMESERVERS; return dnsNetId; static jclass class_Network = MakeGlobalRefOrDie( env, FindClassOrDie(env, "android/net/Network")); static jmethodID ctor = env->GetMethodID(class_Network, "<init>", "(IZ)V"); return env->NewObject( class_Network, ctor, dnsNetId & ~NETID_USE_LOCAL_NAMESERVERS, privateDnsBypass); } static jobject android_net_utils_getTcpRepairWindow(JNIEnv *env, jobject thiz, jobject javaFd) { Loading Loading @@ -369,7 +375,7 @@ static const JNINativeMethod gNetworkUtilMethods[] = { { "resNetworkQuery", "(ILjava/lang/String;III)Ljava/io/FileDescriptor;", (void*) android_net_utils_resNetworkQuery }, { "resNetworkResult", "(Ljava/io/FileDescriptor;)Landroid/net/DnsResolver$DnsResponse;", (void*) android_net_utils_resNetworkResult }, { "resNetworkCancel", "(Ljava/io/FileDescriptor;)V", (void*) android_net_utils_resNetworkCancel }, { "getDnsNetId", "()I", (void*) android_net_utils_getDnsNetId }, { "getDnsNetwork", "()Landroid/net/Network;", (void*) android_net_utils_getDnsNetwork }, }; int register_android_net_NetworkUtils(JNIEnv* env) Loading