$OpenBSD: patch-net_dns_dns_config_service_posix_cc,v 1.2 2011/12/14 16:58:19 robert Exp $
--- net/dns/dns_config_service_posix.cc.orig	Tue Dec 13 21:36:06 2011
+++ net/dns/dns_config_service_posix.cc	Tue Dec 13 21:37:13 2011
@@ -30,16 +30,21 @@ class DnsConfigServicePosix::ConfigReader : public Ser
       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.
       success_ = false;
     }
 #if defined(OS_MACOSX)
     res_ndestroy(&res);
-#else
+#elif !defined(OS_OPENBSD)
     res_nclose(&res);
 #endif
   }
@@ -123,7 +128,9 @@ bool ConvertResToConfig(const struct __res_state& res,
   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;
