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;
/* 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);
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