diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index c9a3b2aafed7f945156138af8fba67c5dfe5befa..9a8e90e368e421bca367fb6957676296de85c900 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -5731,9 +5731,8 @@ NO_SSH: result = connect(new_node->passthru_socket, (struct sockaddr *)&tmp_addr, tmp_addr_len); if(result != 0) { - inet_ntop(tmp_addr.sin_family, &tmp_addr.sin_addr, addr_str, sizeof(addr_str)); lprintf(LOG_ERR,"Node %d !ERROR %d (%d) connecting to passthru socket: %s port %u" - ,new_node->cfg.node_num, result, ERROR_VALUE, addr_str, htons(tmp_addr.sin_port)); + ,new_node->cfg.node_num, result, ERROR_VALUE, inet_ntoa(tmp_addr.sin_addr), htons(tmp_addr.sin_port)); close_socket(new_node->passthru_socket); new_node->passthru_socket=INVALID_SOCKET; close_socket(tmp_sock); diff --git a/src/xpdev/netwrap.c b/src/xpdev/netwrap.c index 38bf3d7d79cdca545cffe977b585346a57fc212c..40c807ed1878035483f46821dffd025f247897da 100644 --- a/src/xpdev/netwrap.c +++ b/src/xpdev/netwrap.c @@ -151,19 +151,25 @@ struct in6_addr parseIPv6Address(const char* value) const char* IPv4AddressToStr(uint32_t addr, char* dest, size_t size) { - const char* result; - struct in_addr in_addr; - in_addr.s_addr = htonl(addr); -#if defined(__BORLANDC__) || defined(__MINGW32__) - result = inet_ntoa(in_addr); // deprecated function call - if(result == NULL) +#if defined _WIN32 + int result; + WSADATA wsaData; + SOCKADDR_IN sockaddr = {0}; + sockaddr.sin_family = AF_INET; + sockaddr.sin_addr.s_addr = htonl(addr); + + if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) return NULL; - strncpy(dest, result, size); - result = dest; + result = getnameinfo((SOCKADDR*)&sockaddr, sizeof(sockaddr), dest, size, NULL, 0, NI_NUMERICHOST); + WSACleanup(); + if(result != 0) + return NULL; + return dest; #else - result = inet_ntop(AF_INET, &in_addr, dest, size); + struct in_addr in_addr; + in_addr.s_addr = htonl(addr); + return inet_ntop(AF_INET, &in_addr, dest, size); #endif - return result; } #if NETWRAP_TEST @@ -180,6 +186,7 @@ int main(int argc, char** argv) if(argc>1) printf("%s\n", getHostNameByAddr(argv[1])); + return 0; } #endif