forked from pool/nodejs22
156 lines
5.1 KiB
Diff
156 lines
5.1 KiB
Diff
temporary revert changes until we can upgrade c-ares in SLE-15:Update
|
|
|
|
commit bf68733e7f61bf4ff51a456e27123f44a526aebc
|
|
Author: Aviv Keller <redyetidev@gmail.com>
|
|
Date: Wed Oct 30 10:10:28 2024 -0400
|
|
|
|
dns: stop using deprecated `ares_query`
|
|
|
|
PR-URL: https://github.com/nodejs/node/pull/55430
|
|
Refs: https://github.com/nodejs/node/issues/52464
|
|
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
|
|
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
|
|
|
|
|
|
Index: node-v22.12.0/src/cares_wrap.cc
|
|
===================================================================
|
|
--- node-v22.12.0.orig/src/cares_wrap.cc
|
|
+++ node-v22.12.0/src/cares_wrap.cc
|
|
@@ -825,62 +825,62 @@ void ChannelWrap::EnsureServers() {
|
|
}
|
|
|
|
int AnyTraits::Send(QueryWrap<AnyTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_ANY);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_any);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int ATraits::Send(QueryWrap<ATraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_A);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_a);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int AaaaTraits::Send(QueryWrap<AaaaTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_AAAA);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_aaaa);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int CaaTraits::Send(QueryWrap<CaaTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_CAA);
|
|
+ wrap->AresQuery(name, ns_c_in, T_CAA);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int CnameTraits::Send(QueryWrap<CnameTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_CNAME);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_cname);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int MxTraits::Send(QueryWrap<MxTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_MX);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_mx);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int NsTraits::Send(QueryWrap<NsTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_NS);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_ns);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int TxtTraits::Send(QueryWrap<TxtTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_TXT);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_txt);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int SrvTraits::Send(QueryWrap<SrvTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_SRV);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_srv);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int PtrTraits::Send(QueryWrap<PtrTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_PTR);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_ptr);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int NaptrTraits::Send(QueryWrap<NaptrTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_NAPTR);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_naptr);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
int SoaTraits::Send(QueryWrap<SoaTraits>* wrap, const char* name) {
|
|
- wrap->AresQuery(name, ARES_CLASS_IN, ARES_REC_TYPE_SOA);
|
|
+ wrap->AresQuery(name, ns_c_in, ns_t_soa);
|
|
return ARES_SUCCESS;
|
|
}
|
|
|
|
Index: node-v22.12.0/src/cares_wrap.h
|
|
===================================================================
|
|
--- node-v22.12.0.orig/src/cares_wrap.h
|
|
+++ node-v22.12.0/src/cares_wrap.h
|
|
@@ -246,20 +246,18 @@ class QueryWrap final : public AsyncWrap
|
|
return Traits::Send(this, name);
|
|
}
|
|
|
|
- void AresQuery(const char* name,
|
|
- ares_dns_class_t dnsclass,
|
|
- ares_dns_rec_type_t type) {
|
|
+ void AresQuery(const char* name, int dnsclass, int type) {
|
|
channel_->EnsureServers();
|
|
TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(
|
|
TRACING_CATEGORY_NODE2(dns, native), trace_name_, this,
|
|
"name", TRACE_STR_COPY(name));
|
|
- ares_query_dnsrec(channel_->cares_channel(),
|
|
- name,
|
|
- dnsclass,
|
|
- type,
|
|
- Callback,
|
|
- MakeCallbackPointer(),
|
|
- nullptr);
|
|
+ ares_query(
|
|
+ channel_->cares_channel(),
|
|
+ name,
|
|
+ dnsclass,
|
|
+ type,
|
|
+ Callback,
|
|
+ MakeCallbackPointer());
|
|
}
|
|
|
|
void ParseError(int status) {
|
|
@@ -306,20 +304,19 @@ class QueryWrap final : public AsyncWrap
|
|
return wrap;
|
|
}
|
|
|
|
- static void Callback(void* arg,
|
|
- ares_status_t status,
|
|
- size_t timeouts,
|
|
- const ares_dns_record_t* dnsrec) {
|
|
+ static void Callback(
|
|
+ void* arg,
|
|
+ int status,
|
|
+ int timeouts,
|
|
+ unsigned char* answer_buf,
|
|
+ int answer_len) {
|
|
QueryWrap<Traits>* wrap = FromCallbackPointer(arg);
|
|
if (wrap == nullptr) return;
|
|
|
|
unsigned char* buf_copy = nullptr;
|
|
- size_t answer_len = 0;
|
|
if (status == ARES_SUCCESS) {
|
|
- // No need to explicitly call ares_free_string here,
|
|
- // as it is a wrapper around free, which is already
|
|
- // invoked when MallocedBuffer is destructed.
|
|
- ares_dns_write(dnsrec, &buf_copy, &answer_len);
|
|
+ buf_copy = node::Malloc<unsigned char>(answer_len);
|
|
+ memcpy(buf_copy, answer_buf, answer_len);
|
|
}
|
|
|
|
wrap->response_data_ = std::make_unique<ResponseData>();
|