--- old/src/jdk.jdwp.agent/share/native/libdt_socket/socketTransport.c 2018-01-29 07:30:54.363041955 -0500 +++ new/src/jdk.jdwp.agent/share/native/libdt_socket/socketTransport.c 2018-01-29 07:30:53.965018782 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -241,7 +241,9 @@ // getaddrinfo might return more than one address // but we are using first one only - return ((struct sockaddr_in *)(res->ai_addr))->sin_addr.s_addr; + uint32_t addr = ((struct sockaddr_in *)(res->ai_addr))->sin_addr.s_addr; + freeaddrinfo(res); + return addr; } static int @@ -315,16 +317,25 @@ */ addr = dbgsysInetAddr(hostname); if (addr == 0xffffffff) { - struct hostent *hp = dbgsysGetHostByName(hostname); - if (hp == NULL) { + struct addrinfo hints; + struct addrinfo *results = NULL; + memset (&hints, 0, sizeof(hints)); + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; + + int ai = dbgsysGetAddrInfo(hostname, NULL, &hints, &results); + + if (ai != 0) { /* don't use RETURN_IO_ERROR as unknown host is normal */ - setLastError(0, "gethostbyname: unknown host"); + setLastError(0, "getaddrinfo: unknown host"); (*callback->free)(buf); return JDWPTRANSPORT_ERROR_IO_ERROR; } /* lookup was successful */ - memcpy(&(sa->sin_addr), hp->h_addr_list[0], hp->h_length); + sa->sin_addr = ((struct sockaddr_in *)results->ai_addr)->sin_addr; + freeaddrinfo(results); } else { sa->sin_addr.s_addr = addr; }