mirror of https://github.com/nodejs/node.git
Fix errno display in c-ares exceptions
parent
0a539865dd
commit
1036aa9762
|
@ -167,11 +167,54 @@ static Local<Array> HostEntToNames(struct hostent* hostent) {
|
|||
return names;
|
||||
}
|
||||
|
||||
static inline const char *ares_errno_string(int errorno) {
|
||||
#define ERRNO_CASE(e) case ARES_##e: return #e;
|
||||
switch (errorno) {
|
||||
ERRNO_CASE(SUCCESS)
|
||||
ERRNO_CASE(ENODATA)
|
||||
ERRNO_CASE(EFORMERR)
|
||||
ERRNO_CASE(ESERVFAIL)
|
||||
ERRNO_CASE(ENOTFOUND)
|
||||
ERRNO_CASE(ENOTIMP)
|
||||
ERRNO_CASE(EREFUSED)
|
||||
ERRNO_CASE(EBADQUERY)
|
||||
ERRNO_CASE(EBADNAME)
|
||||
ERRNO_CASE(EBADFAMILY)
|
||||
ERRNO_CASE(EBADRESP)
|
||||
ERRNO_CASE(ECONNREFUSED)
|
||||
ERRNO_CASE(ETIMEOUT)
|
||||
ERRNO_CASE(EOF)
|
||||
ERRNO_CASE(EFILE)
|
||||
ERRNO_CASE(ENOMEM)
|
||||
ERRNO_CASE(EDESTRUCTION)
|
||||
ERRNO_CASE(EBADSTR)
|
||||
ERRNO_CASE(EBADFLAGS)
|
||||
ERRNO_CASE(ENONAME)
|
||||
ERRNO_CASE(EBADHINTS)
|
||||
ERRNO_CASE(ENOTINITIALIZED)
|
||||
ERRNO_CASE(ELOADIPHLPAPI)
|
||||
ERRNO_CASE(EADDRGETNETWORKPARAMS)
|
||||
ERRNO_CASE(ECANCELLED)
|
||||
default:
|
||||
assert(0 && "Unhandled c-ares errno");
|
||||
return "(UNKNOWN)";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void ResolveError(Persistent<Function> &cb, int status) {
|
||||
HandleScope scope;
|
||||
|
||||
Local<Value> e = ErrnoException(status, NULL, ares_strerror(status));
|
||||
Local<String> code = String::NewSymbol(ares_errno_string(status));
|
||||
Local<String> message = String::NewSymbol(ares_strerror(status));
|
||||
|
||||
Local<String> cons1 = String::Concat(code, String::NewSymbol(", "));
|
||||
Local<String> cons2 = String::Concat(cons1, message);
|
||||
|
||||
Local<Value> e = Exception::Error(cons2);
|
||||
|
||||
Local<Object> obj = e->ToObject();
|
||||
obj->Set(String::NewSymbol("errno"), Integer::New(status));
|
||||
|
||||
TryCatch try_catch;
|
||||
|
||||
|
|
Loading…
Reference in New Issue