unix: have uv_strerror() handle getaddrinfo() errors

This commit is contained in:
Ben Noordhuis 2011-10-28 01:31:55 +02:00
parent 314d0ee4f6
commit f2c6b4106d
5 changed files with 10 additions and 5 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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";

View File

@ -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_);
}