summaryrefslogtreecommitdiffstats
path: root/src/OSSupport/GetAddressInfoError.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/OSSupport/GetAddressInfoError.h')
-rw-r--r--src/OSSupport/GetAddressInfoError.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/OSSupport/GetAddressInfoError.h b/src/OSSupport/GetAddressInfoError.h
new file mode 100644
index 000000000..43869fb63
--- /dev/null
+++ b/src/OSSupport/GetAddressInfoError.h
@@ -0,0 +1,29 @@
+#pragma once
+
+
+
+/** Returns the readable form of a getaddressinfo type error code */
+inline AString ErrorString(int a_ErrorCode)
+{
+ // Note gai_strerror is not threadsafe on windows
+ #ifdef _WIN32
+ char ErrorStr[GAI_STRERROR_BUFFER_SIZE + 1];
+
+ int MsgLen = FormatMessageA(
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS |
+ FORMAT_MESSAGE_MAX_WIDTH_MASK,
+ nullptr,
+ a_ErrorCode,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ ErrorStr,
+ sizeof(ErrorStr) - 1,
+ nullptr
+ );
+
+ return AString(ErrorStr, MsgLen);
+ #else
+ return gai_strerror(a_ErrorCode);
+ #endif
+}
+