fixed dns lib for linux

This commit is contained in:
WolverinDEV 2019-10-26 01:42:37 +02:00
parent b9bd60f4e1
commit 55f3f7656a
4 changed files with 16 additions and 5 deletions

View File

@ -4,7 +4,7 @@ set(SOURCE_FILES ${SOURCE_FILES} src/resolver.cpp src/types.cpp src/response.cpp
if (WIN32) if (WIN32)
set(SOURCE_FILES ${SOURCE_FILES} src/resolver_windows.cpp) set(SOURCE_FILES ${SOURCE_FILES} src/resolver_windows.cpp)
else() else()
set(SOURCE_FILES ${SOURCE_FILES} src/resolver_linux.cpp src/resolver_windows.cpp) set(SOURCE_FILES ${SOURCE_FILES} src/resolver_linux.cpp)
endif() endif()
find_package(Libevent REQUIRED) find_package(Libevent REQUIRED)

View File

@ -85,6 +85,9 @@ NAN_METHOD(query_connect_address) {
}); });
} }
#ifndef WIN32
__attribute__((visibility("default")))
#endif
NAN_MODULE_INIT(init) { NAN_MODULE_INIT(init) {
Nan::Set(target, Nan::Set(target,
v8::String::NewFromUtf8(Nan::GetCurrentContext()->GetIsolate(), "resolve_cr").ToLocalChecked(), v8::String::NewFromUtf8(Nan::GetCurrentContext()->GetIsolate(), "resolve_cr").ToLocalChecked(),

View File

@ -54,7 +54,7 @@ void Resolver::destroy_dns_request(Resolver::dns_request *request) {
} }
if(!this->event.loop_active) if(!this->event.loop_active)
ub_cancel(this->ub_ctx, entry->ub_id); ub_cancel(this->ub_ctx, request->ub_id);
if(request->register_event) { if(request->register_event) {
event_del_noblock(request->register_event); event_del_noblock(request->register_event);

View File

@ -13,10 +13,10 @@
#include <cstring> #include <cstring>
#ifndef WIN32 #ifndef WIN32
#include <arpa/inet.h> #include <arpa/inet.h>
#else #else
#include <Ws2ipdef.h> #include <Ws2ipdef.h>
#include <ip2string.h> #include <ip2string.h>
#endif #endif
using namespace tc::dns; using namespace tc::dns;
@ -181,7 +181,11 @@ void tc::dns::cr_srv(Resolver& resolver, const ServerAddress& address, const cr_
for(auto [priority, pentries] : entries) { for(auto [priority, pentries] : entries) {
uint32_t count = 0; uint32_t count = 0;
for(const auto& entry : pentries) { for(const auto& entry : pentries) {
#ifdef WIN32
count += max((size_t) entry.weight, 1UL); count += max((size_t) entry.weight, 1UL);
#else
count += std::max((size_t) entry.weight, 1UL);
#endif
} }
std::uniform_int_distribution<std::mt19937::result_type> dist(0, (uint32_t) (count - 1)); std::uniform_int_distribution<std::mt19937::result_type> dist(0, (uint32_t) (count - 1));
@ -189,7 +193,11 @@ void tc::dns::cr_srv(Resolver& resolver, const ServerAddress& address, const cr_
count = 0; count = 0;
for(const auto& entry : pentries) { for(const auto& entry : pentries) {
#ifdef WIN32
count += max((size_t) entry.weight, 1UL); count += max((size_t) entry.weight, 1UL);
#else
count += std::max((size_t) entry.weight, 1UL);
#endif
if(count > index) { if(count > index) {
count = -1; count = -1;
results.emplace_back(priority, entry); results.emplace_back(priority, entry);