mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-13 10:15:00 +00:00
Replace obsolete gethostbyname by getaddrinfo
This also protect against the latest glibc bug
This commit is contained in:
+22
-8
@@ -593,14 +593,28 @@ int ns_socketpair(sock_t sp[2]) {
|
||||
|
||||
// TODO(lsm): use non-blocking resolver
|
||||
static int ns_resolve2(const char *host, struct in_addr *ina) {
|
||||
struct hostent *he;
|
||||
if ((he = gethostbyname(host)) == NULL) {
|
||||
DBG(("gethostbyname(%s) failed: %s", host, strerror(errno)));
|
||||
} else {
|
||||
memcpy(ina, he->h_addr_list[0], sizeof(*ina));
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
int rv = 0;
|
||||
struct addrinfo hints, *servinfo, *p;
|
||||
struct sockaddr_in *h = NULL;
|
||||
char *ip = malloc(17);
|
||||
memset(ip, '\0', 17);
|
||||
|
||||
memset(&hints, 0, sizeof hints);
|
||||
hints.ai_family = AF_INET;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
|
||||
if((rv = getaddrinfo(host, NULL , NULL, &servinfo)) != 0) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
for(p = servinfo; p != NULL; p = p->ai_next) {
|
||||
memcpy(&h, &p->ai_addr, sizeof(struct sockaddr_in *));
|
||||
memcpy(ina, &h->sin_addr, sizeof(ina));
|
||||
}
|
||||
|
||||
freeaddrinfo(servinfo);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Resolve FDQN "host", store IP address in the "ip".
|
||||
|
||||
Reference in New Issue
Block a user