OSDN Git Service

Cleanup error case a bit
authorEric Andersen <andersen@codepoet.org>
Thu, 28 Apr 2005 18:57:25 +0000 (18:57 -0000)
committerEric Andersen <andersen@codepoet.org>
Thu, 28 Apr 2005 18:57:25 +0000 (18:57 -0000)
libc/inet/resolv.c

index 752bf7f..6ceb077 100644 (file)
@@ -674,7 +674,7 @@ int __dns_lookup(const char *name, int type, int nscount, char **nsip,
        char *dns, *lookup = malloc(MAXDNAME);
        int variant = -1;
        struct sockaddr_in sa;
-       int local_ns, local_id;
+       int local_ns = -1, local_id = -1;
 #ifdef __UCLIBC_HAS_IPV6__
        int v6;
        struct sockaddr_in6 sa6;
@@ -689,12 +689,10 @@ int __dns_lookup(const char *name, int type, int nscount, char **nsip,
 
        /* Mess with globals while under lock */
        LOCK;
-       local_ns = ns;
+       local_ns = ns % nscount;
        local_id = id;
        UNLOCK;
 
-       local_ns %= nscount;
-
        while (retries < MAX_RETRIES) {
                if (fd != -1)
                        close(fd);
@@ -912,10 +910,12 @@ fail:
            free(packet);
        h_errno = NETDB_INTERNAL;
        /* Mess with globals while under lock */
-       LOCK;
-       ns = local_ns;
-       id = local_id;
-       UNLOCK;
+       if (local_ns != -1) {
+           LOCK;
+           ns = local_ns;
+           id = local_id;
+           UNLOCK;
+       }
        return -1;
 }
 #endif