diff --git a/src/xpdev/sockwrap.c b/src/xpdev/sockwrap.c
index 2f401cd539f0ad05c25582ab763da217ef338305..abc1670cb97b8aae285567931a7f52e04ac81946 100644
--- a/src/xpdev/sockwrap.c
+++ b/src/xpdev/sockwrap.c
@@ -507,6 +507,8 @@ DLLEXPORT char* socket_strerror(int error_number, char* buf, size_t buflen)
 #if defined(_WINSOCKAPI_)
 	strncpy(buf, "Unknown error", buflen);
 	buf[buflen - 1] = 0;
+	if(error_number > 0 && error_number < WSABASEERR)
+		error_number += WSABASEERR;
 	FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK,	// dwFlags
 		NULL,			// lpSource
 		error_number,	// dwMessageId