unix: have uv_strerror() handle getaddrinfo() errors
This commit is contained in:
parent
314d0ee4f6
commit
f2c6b4106d
@ -52,6 +52,7 @@ typedef enum {
|
||||
UV_UNKNOWN = -1,
|
||||
UV_OK = 0,
|
||||
UV_EOF,
|
||||
UV_EADDRINFO,
|
||||
UV_EACCESS,
|
||||
UV_EAGAIN,
|
||||
UV_EADDRINUSE,
|
||||
@ -261,7 +262,7 @@ struct uv_err_s {
|
||||
* the error code.
|
||||
*/
|
||||
uv_err_t uv_last_error(uv_loop_t*);
|
||||
char* uv_strerror(uv_err_t err);
|
||||
const char* uv_strerror(uv_err_t err);
|
||||
const char* uv_err_name(uv_err_t err);
|
||||
|
||||
|
||||
|
||||
@ -594,8 +594,8 @@ static int uv_getaddrinfo_done(eio_req* req) {
|
||||
free(handle->hostname);
|
||||
|
||||
if (handle->retcode != 0) {
|
||||
/* TODO how to display gai error strings? */
|
||||
uv__set_sys_error(handle->loop, handle->retcode);
|
||||
handle->loop->last_err.code = UV_EADDRINFO;
|
||||
handle->loop->last_err.sys_errno_ = handle->retcode;
|
||||
}
|
||||
|
||||
handle->cb(handle, handle->retcode, res);
|
||||
|
||||
@ -118,7 +118,7 @@ uv_err_code uv_translate_sys_error(int sys_errno) {
|
||||
* a) rely on what the system provides us
|
||||
* b) reverse-map the error codes
|
||||
*/
|
||||
char* uv_strerror(uv_err_t err) {
|
||||
const char* uv_strerror(uv_err_t err) {
|
||||
int errorno;
|
||||
|
||||
if (err.sys_errno_)
|
||||
@ -126,6 +126,9 @@ char* uv_strerror(uv_err_t err) {
|
||||
else
|
||||
errorno = uv__translate_lib_error(err.code);
|
||||
|
||||
if (err.code == UV_EADDRINFO)
|
||||
return gai_strerror(errorno);
|
||||
|
||||
if (errorno == -1)
|
||||
return "Unknown error";
|
||||
else
|
||||
|
||||
@ -53,6 +53,7 @@ const char* uv_err_name(uv_err_t err) {
|
||||
case UV_UNKNOWN: return "UNKNOWN";
|
||||
case UV_OK: return "OK";
|
||||
case UV_EOF: return "EOF";
|
||||
case UV_EADDRINFO: return "EADDRINFO";
|
||||
case UV_EACCESS: return "EACCESS";
|
||||
case UV_EAGAIN: return "EAGAIN";
|
||||
case UV_EADDRINUSE: return "EADDRINUSE";
|
||||
|
||||
@ -70,7 +70,7 @@ void uv_fatal_error(const int errorno, const char* syscall) {
|
||||
/* TODO: thread safety */
|
||||
static char* last_err_str_ = NULL;
|
||||
|
||||
char* uv_strerror(uv_err_t err) {
|
||||
const char* uv_strerror(uv_err_t err) {
|
||||
if (last_err_str_ != NULL) {
|
||||
LocalFree(last_err_str_);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user