| Index: net/dns/dns_config_service_posix.cc
|
| diff --git a/net/dns/dns_config_service_posix.cc b/net/dns/dns_config_service_posix.cc
|
| index 0224c39cb9ec0273a79f5b4d86efe7983f803776..3385c52c3e479fe296cc3dcc897cd7e8f6c6fce8 100644
|
| --- a/net/dns/dns_config_service_posix.cc
|
| +++ b/net/dns/dns_config_service_posix.cc
|
| @@ -30,16 +30,22 @@ class DnsConfigServicePosix::ConfigReader : public SerialWorker {
|
| success_(false) {}
|
|
|
| void DoWork() OVERRIDE {
|
| +#if defined(OS_OPENBSD)
|
| + if ((res_init() == 0) && (_res.options & RES_INIT)) {
|
| + success_ = ConvertResToConfig(_res, &dns_config_);
|
| +#else
|
| struct __res_state res;
|
| if ((res_ninit(&res) == 0) && (res.options & RES_INIT)) {
|
| success_ = ConvertResToConfig(res, &dns_config_);
|
| +#endif
|
| } else {
|
| // Note: res_ninit in glibc always returns 0 and sets RES_INIT.
|
| + // res_init behaves the same way.
|
| success_ = false;
|
| }
|
| #if defined(OS_MACOSX)
|
| res_ndestroy(&res);
|
| -#else
|
| +#elif !defined(OS_OPENBSD)
|
| res_nclose(&res);
|
| #endif
|
| }
|
| @@ -123,7 +129,9 @@ bool ConvertResToConfig(const struct __res_state& res, DnsConfig* dns_config) {
|
| dns_config->ndots = res.ndots;
|
| dns_config->timeout = base::TimeDelta::FromSeconds(res.retrans);
|
| dns_config->attempts = res.retry;
|
| +#if defined(RES_ROTATE)
|
| dns_config->rotate = res.options & RES_ROTATE;
|
| +#endif
|
| dns_config->edns0 = res.options & RES_USE_EDNS0;
|
|
|
| return true;
|
|
|