Skip to content

Commit

Permalink
tests/server/resolve.c: fix deprecation warning
Browse files Browse the repository at this point in the history
MSVC warns that gethostbyname is deprecated. Always use getaddrinfo
instead to fix this when IPv6 is enabled, also for IPv4 resolves. This
is also consistent with what libcurl does.
  • Loading branch information
MarcelRaad committed Jul 17, 2017
1 parent 798ad5d commit 0d357b2
Showing 1 changed file with 27 additions and 26 deletions.
53 changes: 27 additions & 26 deletions tests/server/resolve.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,16 +107,8 @@ int main(int argc, char *argv[])
atexit(win32_cleanup);
#endif

if(!use_ipv6) {
/* gethostbyname() resolve */
struct hostent *he;

he = gethostbyname(host);

rc = !he;
}
else {
#ifdef ENABLE_IPV6
if(use_ipv6) {
/* Check that the system has IPv6 enabled before checking the resolver */
curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0);
if(s == CURL_SOCKET_BAD)
Expand All @@ -125,28 +117,37 @@ int main(int argc, char *argv[])
else {
sclose(s);
}
}

if(rc == 0) {
/* getaddrinfo() resolve */
struct addrinfo *ai;
struct addrinfo hints;

memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_INET6;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME;
/* Use parenthesis around functions to stop them from being replaced by
the macro in memdebug.h */
rc = (getaddrinfo)(host, "80", &hints, &ai);
if(rc == 0)
(freeaddrinfo)(ai);
}

if(rc == 0) {
/* getaddrinfo() resolve */
struct addrinfo *ai;
struct addrinfo hints;

memset(&hints, 0, sizeof(hints));
hints.ai_family = use_ipv6 ? PF_INET6 : PF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME;
/* Use parenthesis around functions to stop them from being replaced by
the macro in memdebug.h */
rc = (getaddrinfo)(host, "80", &hints, &ai);
if(rc == 0)
(freeaddrinfo)(ai);
}
#else
if(use_ipv6) {
puts("IPv6 support has been disabled in this program");
return 1;
#endif
}
else {
/* gethostbyname() resolve */
struct hostent *he;

he = gethostbyname(host);

rc = !he;
#endif

if(rc)
printf("Resolving %s '%s' didn't work\n", ipv_inuse, host);

Expand Down

0 comments on commit 0d357b2

Please sign in to comment.