Skip to content
Closed
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 19 additions & 18 deletions src/cares_wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1797,22 +1797,24 @@ static void Query(const FunctionCallbackInfo<Value>& args) {

Local<Object> req_wrap_obj = args[0].As<Object>();
Local<String> string = args[1].As<String>();
Wrap* wrap = new Wrap(channel, req_wrap_obj);
auto wrap = std::make_unique<Wrap>(channel, req_wrap_obj);

node::Utf8Value name(env->isolate(), string);
channel->ModifyActivityQueryCount(1);
int err = wrap->Send(*name);
if (err) {
channel->ModifyActivityQueryCount(-1);
delete wrap;
} else {
USE(wrap.release());
Comment thread
refack marked this conversation as resolved.
}

args.GetReturnValue().Set(err);
}


void AfterGetAddrInfo(uv_getaddrinfo_t* req, int status, struct addrinfo* res) {
GetAddrInfoReqWrap* req_wrap = static_cast<GetAddrInfoReqWrap*>(req->data);
std::unique_ptr<GetAddrInfoReqWrap> req_wrap {
Comment thread
refack marked this conversation as resolved.
static_cast<GetAddrInfoReqWrap*>(req->data)};
Environment* env = req_wrap->env();

HandleScope handle_scope(env->isolate());
Expand Down Expand Up @@ -1869,21 +1871,20 @@ void AfterGetAddrInfo(uv_getaddrinfo_t* req, int status, struct addrinfo* res) {
uv_freeaddrinfo(res);
Comment thread
danbev marked this conversation as resolved.

TRACE_EVENT_NESTABLE_ASYNC_END2(
TRACING_CATEGORY_NODE2(dns, native), "lookup", req_wrap,
TRACING_CATEGORY_NODE2(dns, native), "lookup", req_wrap.get(),
"count", n, "verbatim", verbatim);

// Make the callback into JavaScript
req_wrap->MakeCallback(env->oncomplete_string(), arraysize(argv), argv);

delete req_wrap;
}


void AfterGetNameInfo(uv_getnameinfo_t* req,
int status,
const char* hostname,
const char* service) {
GetNameInfoReqWrap* req_wrap = static_cast<GetNameInfoReqWrap*>(req->data);
std::unique_ptr<GetNameInfoReqWrap> req_wrap {
static_cast<GetNameInfoReqWrap*>(req->data)};
Environment* env = req_wrap->env();

HandleScope handle_scope(env->isolate());
Expand All @@ -1904,14 +1905,12 @@ void AfterGetNameInfo(uv_getnameinfo_t* req,
}

TRACE_EVENT_NESTABLE_ASYNC_END2(
TRACING_CATEGORY_NODE2(dns, native), "lookupService", req_wrap,
TRACING_CATEGORY_NODE2(dns, native), "lookupService", req_wrap.get(),
"hostname", TRACE_STR_COPY(hostname),
"service", TRACE_STR_COPY(service));

// Make the callback into JavaScript
req_wrap->MakeCallback(env->oncomplete_string(), arraysize(argv), argv);

delete req_wrap;
}

using ParseIPResult = decltype(static_cast<ares_addr_port_node*>(0)->addr);
Expand Down Expand Up @@ -1971,7 +1970,9 @@ void GetAddrInfo(const FunctionCallbackInfo<Value>& args) {
CHECK(0 && "bad address family");
}

auto req_wrap = new GetAddrInfoReqWrap(env, req_wrap_obj, args[4]->IsTrue());
auto req_wrap = std::make_unique<GetAddrInfoReqWrap>(env,
req_wrap_obj,
args[4]->IsTrue());

struct addrinfo hints;
memset(&hints, 0, sizeof(struct addrinfo));
Expand All @@ -1980,7 +1981,7 @@ void GetAddrInfo(const FunctionCallbackInfo<Value>& args) {
hints.ai_flags = flags;

TRACE_EVENT_NESTABLE_ASYNC_BEGIN2(
TRACING_CATEGORY_NODE2(dns, native), "lookup", req_wrap,
TRACING_CATEGORY_NODE2(dns, native), "lookup", req_wrap.get(),
"hostname", TRACE_STR_COPY(*hostname),
"family",
family == AF_INET ? "ipv4" : family == AF_INET6 ? "ipv6" : "unspec");
Expand All @@ -1990,8 +1991,8 @@ void GetAddrInfo(const FunctionCallbackInfo<Value>& args) {
*hostname,
nullptr,
&hints);
if (err)
delete req_wrap;
if (err == 0)
req_wrap.release();
Comment thread
danbev marked this conversation as resolved.
Outdated

args.GetReturnValue().Set(err);
}
Expand All @@ -2011,18 +2012,18 @@ void GetNameInfo(const FunctionCallbackInfo<Value>& args) {
CHECK(uv_ip4_addr(*ip, port, reinterpret_cast<sockaddr_in*>(&addr)) == 0 ||
uv_ip6_addr(*ip, port, reinterpret_cast<sockaddr_in6*>(&addr)) == 0);

GetNameInfoReqWrap* req_wrap = new GetNameInfoReqWrap(env, req_wrap_obj);
auto req_wrap = std::make_unique<GetNameInfoReqWrap>(env, req_wrap_obj);

TRACE_EVENT_NESTABLE_ASYNC_BEGIN2(
TRACING_CATEGORY_NODE2(dns, native), "lookupService", req_wrap,
TRACING_CATEGORY_NODE2(dns, native), "lookupService", req_wrap.get(),
"ip", TRACE_STR_COPY(*ip), "port", port);

int err = req_wrap->Dispatch(uv_getnameinfo,
AfterGetNameInfo,
reinterpret_cast<struct sockaddr*>(&addr),
NI_NAMEREQD);
if (err)
delete req_wrap;
if (err == 0)
req_wrap.release();
Comment thread
danbev marked this conversation as resolved.
Outdated

args.GetReturnValue().Set(err);
}
Expand Down