Use correct encoding for error message from getaddrinfo in Windows

This commit is contained in:
Benau 2020-02-01 14:05:52 +08:00
parent 33d228bb6d
commit 10a158db70

View File

@ -136,9 +136,20 @@ void SocketAddress::init(const std::string& str, uint16_t port_number,
&res);
if (status != 0)
{
#ifdef WIN32
wchar_t msgbuf[256] = {};
DWORD flags = FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_MAX_WIDTH_MASK;
FormatMessage(flags, NULL, WSAGetLastError(), 0, msgbuf,
sizeof(msgbuf) / sizeof(wchar_t), NULL);
Log::error("SocketAddress", "Error in getaddrinfo for "
"SocketAddress (str constructor) %s: %s",
str.c_str(), StringUtils::wideToUtf8(msgbuf).c_str());
#else
Log::error("SocketAddress", "Error in getaddrinfo for "
"SocketAddress (str constructor) %s: %s",
str.c_str(), gai_strerror(status));
#endif
return;
}
if (res == NULL)