From d8894ad108aecfab05a4524fef1f2b2d928e387e Mon Sep 17 00:00:00 2001 From: klzgrad Date: Sat, 30 Nov 2019 22:21:18 +0800 Subject: [PATCH] dns: Support Musl --- src/net/dns/dns_config_service_posix.cc | 2 +- src/net/dns/dns_reloader.cc | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/net/dns/dns_config_service_posix.cc b/src/net/dns/dns_config_service_posix.cc index 2e0f06b0c1..d9307e5497 100644 --- a/src/net/dns/dns_config_service_posix.cc +++ b/src/net/dns/dns_config_service_posix.cc @@ -150,7 +150,7 @@ ConfigParsePosixResult ReadDnsConfig(DnsConfig* dns_config) { #if !defined(OS_ANDROID) ConfigParsePosixResult result; // TODO(fuchsia): Use res_ninit() when it's implemented on Fuchsia. -#if defined(OS_OPENBSD) || defined(OS_FUCHSIA) +#if defined(OS_OPENBSD) || defined(OS_FUCHSIA) || defined(__UCLIBC__) // Note: res_ninit in glibc always returns 0 and sets RES_INIT. // res_init behaves the same way. memset(&_res, 0, sizeof(_res)); diff --git a/src/net/dns/dns_reloader.cc b/src/net/dns/dns_reloader.cc index 952cff494d..24c4170b72 100644 --- a/src/net/dns/dns_reloader.cc +++ b/src/net/dns/dns_reloader.cc @@ -57,20 +57,32 @@ class DnsReloader : public NetworkChangeNotifier::DNSObserver { if (!reload_state) { auto new_reload_state = std::make_unique(); new_reload_state->resolver_generation = resolver_generation_; +#ifndef __UCLIBC__ res_ninit(&_res); +#else + res_init(); +#endif tls_reload_state_.Set(std::move(new_reload_state)); } else if (reload_state->resolver_generation != resolver_generation_) { reload_state->resolver_generation = resolver_generation_; // It is safe to call res_nclose here since we know res_ninit will have // been called above. +#ifndef __UCLIBC__ res_nclose(&_res); res_ninit(&_res); +#else + res_init(); +#endif } } private: struct ReloadState { - ~ReloadState() { res_nclose(&_res); } + ~ReloadState() { +#ifndef __UCLIBC__ + res_nclose(&_res); +#endif + } int resolver_generation; };