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

Commit 23d7a55d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix issue for DnsResolver#query" into qt-dev

parents 37efc112 459a5bec
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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) {
+2 −3
Original line number Diff line number Diff line
@@ -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}.
+12 −6
Original line number Diff line number Diff line
@@ -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) {
@@ -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)