From a098ac66dde7b12136c0cf51ae4caf7ca73e02d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Mon, 16 Jun 2014 10:09:45 +0200 Subject: [PATCH] unix, windows: return system error on EAI_SYSTEM --- include/uv-errno.h | 1 - include/uv.h | 1 - src/uv-common.c | 2 +- src/win/getaddrinfo.c | 3 +-- 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/include/uv-errno.h b/include/uv-errno.h index 0981834c..00b48609 100644 --- a/include/uv-errno.h +++ b/include/uv-errno.h @@ -39,7 +39,6 @@ #define UV__EAI_OVERFLOW (-3009) #define UV__EAI_SERVICE (-3010) #define UV__EAI_SOCKTYPE (-3011) -#define UV__EAI_SYSTEM (-3012) /* TODO(bnoordhuis) Return system error. */ #define UV__EAI_BADHINTS (-3013) #define UV__EAI_PROTOCOL (-3014) diff --git a/include/uv.h b/include/uv.h index 2eab59ce..2cda9902 100644 --- a/include/uv.h +++ b/include/uv.h @@ -83,7 +83,6 @@ extern "C" { XX(EAI_PROTOCOL, "resolved protocol is unknown") \ XX(EAI_SERVICE, "service not available for socket type") \ XX(EAI_SOCKTYPE, "socket type not supported") \ - XX(EAI_SYSTEM, "system error") \ XX(EALREADY, "connection already in progress") \ XX(EBADF, "bad file descriptor") \ XX(EBUSY, "resource busy or locked") \ diff --git a/src/uv-common.c b/src/uv-common.c index e6e87377..97892068 100644 --- a/src/uv-common.c +++ b/src/uv-common.c @@ -433,7 +433,7 @@ int uv__getaddrinfo_translate_error(int sys_err) { case EAI_SOCKTYPE: return UV_EAI_SOCKTYPE; #endif #if defined(EAI_SYSTEM) - case EAI_SYSTEM: return UV_EAI_SYSTEM; + case EAI_SYSTEM: return -errno; #endif } assert(!"unknown EAI_* error code"); diff --git a/src/win/getaddrinfo.c b/src/win/getaddrinfo.c index fb4ab0a6..b87a933f 100644 --- a/src/win/getaddrinfo.c +++ b/src/win/getaddrinfo.c @@ -113,8 +113,7 @@ void uv_process_getaddrinfo_req(uv_loop_t* loop, uv_getaddrinfo_t* req) { if (addrinfow_ptr->ai_canonname != NULL) { name_len = uv_utf16_to_utf8(addrinfow_ptr->ai_canonname, -1, NULL, 0); if (name_len == 0) { - /* FIXME(bnoordhuis) Retain GetLastError(). */ - err = UV_EAI_SYSTEM; + err = uv_translate_sys_error(GetLastError()); goto complete; } addrinfo_len += ALIGNED_SIZE(name_len);