Skip to content

Commit bf68733

Browse files
avivkellerruyadorno
authored andcommitted
dns: stop using deprecated ares_query
PR-URL: #55430 Refs: #52464 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
1 parent bbf51d7 commit bf68733

File tree

2 files changed

+31
-28
lines changed

2 files changed

+31
-28
lines changed

src/cares_wrap.cc

+12-12
Original file line numberDiff line numberDiff line change
@@ -830,62 +830,62 @@ void ChannelWrap::EnsureServers() {
830830
}
831831

832832
int AnyTraits::Send(QueryWrap<AnyTraits>* wrap, const char* name) {
833-
wrap->AresQuery(name, ns_c_in, ns_t_any);
833+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_ANY);
834834
return ARES_SUCCESS;
835835
}
836836

837837
int ATraits::Send(QueryWrap<ATraits>* wrap, const char* name) {
838-
wrap->AresQuery(name, ns_c_in, ns_t_a);
838+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_A);
839839
return ARES_SUCCESS;
840840
}
841841

842842
int AaaaTraits::Send(QueryWrap<AaaaTraits>* wrap, const char* name) {
843-
wrap->AresQuery(name, ns_c_in, ns_t_aaaa);
843+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_AAAA);
844844
return ARES_SUCCESS;
845845
}
846846

847847
int CaaTraits::Send(QueryWrap<CaaTraits>* wrap, const char* name) {
848-
wrap->AresQuery(name, ns_c_in, T_CAA);
848+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_CAA);
849849
return ARES_SUCCESS;
850850
}
851851

852852
int CnameTraits::Send(QueryWrap<CnameTraits>* wrap, const char* name) {
853-
wrap->AresQuery(name, ns_c_in, ns_t_cname);
853+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_CNAME);
854854
return ARES_SUCCESS;
855855
}
856856

857857
int MxTraits::Send(QueryWrap<MxTraits>* wrap, const char* name) {
858-
wrap->AresQuery(name, ns_c_in, ns_t_mx);
858+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_MX);
859859
return ARES_SUCCESS;
860860
}
861861

862862
int NsTraits::Send(QueryWrap<NsTraits>* wrap, const char* name) {
863-
wrap->AresQuery(name, ns_c_in, ns_t_ns);
863+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_NS);
864864
return ARES_SUCCESS;
865865
}
866866

867867
int TxtTraits::Send(QueryWrap<TxtTraits>* wrap, const char* name) {
868-
wrap->AresQuery(name, ns_c_in, ns_t_txt);
868+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_TXT);
869869
return ARES_SUCCESS;
870870
}
871871

872872
int SrvTraits::Send(QueryWrap<SrvTraits>* wrap, const char* name) {
873-
wrap->AresQuery(name, ns_c_in, ns_t_srv);
873+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_SRV);
874874
return ARES_SUCCESS;
875875
}
876876

877877
int PtrTraits::Send(QueryWrap<PtrTraits>* wrap, const char* name) {
878-
wrap->AresQuery(name, ns_c_in, ns_t_ptr);
878+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_PTR);
879879
return ARES_SUCCESS;
880880
}
881881

882882
int NaptrTraits::Send(QueryWrap<NaptrTraits>* wrap, const char* name) {
883-
wrap->AresQuery(name, ns_c_in, ns_t_naptr);
883+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_NAPTR);
884884
return ARES_SUCCESS;
885885
}
886886

887887
int SoaTraits::Send(QueryWrap<SoaTraits>* wrap, const char* name) {
888-
wrap->AresQuery(name, ns_c_in, ns_t_soa);
888+
wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_SOA);
889889
return ARES_SUCCESS;
890890
}
891891

src/cares_wrap.h

+19-16
Original file line numberDiff line numberDiff line change
@@ -246,18 +246,20 @@ class QueryWrap final : public AsyncWrap {
246246
return Traits::Send(this, name);
247247
}
248248

249-
void AresQuery(const char* name, int dnsclass, int type) {
249+
void AresQuery(const char* name,
250+
ares_dns_class_t dnsclass,
251+
ares_dns_rec_type_t type) {
250252
channel_->EnsureServers();
251253
TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(
252254
TRACING_CATEGORY_NODE2(dns, native), trace_name_, this,
253255
"name", TRACE_STR_COPY(name));
254-
ares_query(
255-
channel_->cares_channel(),
256-
name,
257-
dnsclass,
258-
type,
259-
Callback,
260-
MakeCallbackPointer());
256+
ares_query_dnsrec(channel_->cares_channel(),
257+
name,
258+
dnsclass,
259+
type,
260+
Callback,
261+
MakeCallbackPointer(),
262+
nullptr);
261263
}
262264

263265
void ParseError(int status) {
@@ -304,19 +306,20 @@ class QueryWrap final : public AsyncWrap {
304306
return wrap;
305307
}
306308

307-
static void Callback(
308-
void* arg,
309-
int status,
310-
int timeouts,
311-
unsigned char* answer_buf,
312-
int answer_len) {
309+
static void Callback(void* arg,
310+
ares_status_t status,
311+
size_t timeouts,
312+
const ares_dns_record_t* dnsrec) {
313313
QueryWrap<Traits>* wrap = FromCallbackPointer(arg);
314314
if (wrap == nullptr) return;
315315

316316
unsigned char* buf_copy = nullptr;
317+
size_t answer_len = 0;
317318
if (status == ARES_SUCCESS) {
318-
buf_copy = node::Malloc<unsigned char>(answer_len);
319-
memcpy(buf_copy, answer_buf, answer_len);
319+
// No need to explicitly call ares_free_string here,
320+
// as it is a wrapper around free, which is already
321+
// invoked when MallocedBuffer is destructed.
322+
ares_dns_write(dnsrec, &buf_copy, &answer_len);
320323
}
321324

322325
wrap->response_data_ = std::make_unique<ResponseData>();

0 commit comments

Comments
 (0)