$NetBSD$

--- sendmail/daemon.c.orig	2020-06-02 11:41:43.000000000 +0200
+++ sendmail/daemon.c	2021-03-18 14:25:41.212453614 +0100
@@ -74,8 +74,12 @@
 #  endif /* ! IPOPTION */
 # endif /* HAS_IN_H */
 #endif /* IP_SRCROUTE && NETINET */
 
+#if NAMED_BIND
+extern struct __res_state sm_res;
+#endif
+
 #include <sm/fdset.h>
 
 #include <ratectrl.h>
 
@@ -773,8 +777,10 @@
 				sm_setproctitle(true, e, "startup with %s",
 						anynet_ntoa(&RealHostAddr));
 			}
 
+			BLACKLIST_INIT();
+
 			if (pipefd[0] != -1)
 			{
 				auto char c;
 
@@ -2334,18 +2340,18 @@
 				hp = sm_gethostbyname(&host[1], family);
 				if (hp == NULL && p[-1] == '.')
 				{
 #if NAMED_BIND
-					int oldopts = _res.options;
+					int oldopts = sm_res.options;
 
-					_res.options &= ~(RES_DEFNAMES|RES_DNSRCH);
+					sm_res.options &= ~(RES_DEFNAMES|RES_DNSRCH);
 #endif /* NAMED_BIND */
 					p[-1] = '\0';
 					hp = sm_gethostbyname(&host[1],
 							      family);
 					p[-1] = '.';
 #if NAMED_BIND
-					_res.options = oldopts;
+					sm_res.options = oldopts;
 #endif
 				}
 				*p = ']';
 				goto gothostent;
@@ -2419,17 +2425,17 @@
 				hp = sm_gethostbyname(host, family);
 			if (hp == NULL && *p == '.')
 			{
 #if NAMED_BIND
-				int oldopts = _res.options;
+				int oldopts = sm_res.options;
 
-				_res.options &= ~(RES_DEFNAMES|RES_DNSRCH);
+				sm_res.options &= ~(RES_DEFNAMES|RES_DNSRCH);
 #endif
 				*p = '\0';
 				hp = sm_gethostbyname(host, family);
 				*p = '.';
 #if NAMED_BIND
-				_res.options = oldopts;
+				sm_res.options = oldopts;
 #endif
 			}
 		}
 gothostent:
@@ -4135,15 +4141,15 @@
 		sm_dprintf("host_map_lookup(%s) => ", name);
 #if NAMED_BIND
 	if (map->map_timeout > 0)
 	{
-		retrans = _res.retrans;
-		_res.retrans = map->map_timeout;
+		retrans = sm_res.retrans;
+		sm_res.retrans = map->map_timeout;
 	}
 	if (map->map_retry > 0)
 	{
-		retry = _res.retry;
-		_res.retry = map->map_retry;
+		retry = sm_res.retry;
+		sm_res.retry = map->map_retry;
 	}
 #endif /* NAMED_BIND */
 
 	/* set default TTL */
@@ -4219,11 +4225,11 @@
 		}
 	}
 #if NAMED_BIND
 	if (map->map_timeout > 0)
-		_res.retrans = retrans;
+		sm_res.retrans = retrans;
 	if (map->map_retry > 0)
-		_res.retry = retry;
+		sm_res.retry = retry;
 #endif /* NAMED_BIND */
 
 	s->s_namecanon.nc_flags |= NCF_VALID;	/* will be soon */
 
@@ -4550,13 +4556,13 @@
 # endif /* NETINET6 */
 
 # if NAMED_BIND
 	/* shorten name server timeout to avoid higher level timeouts */
-	saveretry = _res.retry;
-	if (_res.retry * _res.retrans > 20)
-		_res.retry = 20 / _res.retrans;
-	if (_res.retry == 0)
-		_res.retry = 1;
+	saveretry = sm_res.retry;
+	if (sm_res.retry * sm_res.retrans > 20)
+		sm_res.retry = 20 / sm_res.retrans;
+	if (sm_res.retry == 0)
+		sm_res.retry = 1;
 # endif /* NAMED_BIND */
 
 	switch (sap->sa.sa_family)
 	{
@@ -4593,9 +4599,9 @@
 		break;
 	}
 
 # if NAMED_BIND
-	_res.retry = saveretry;
+	sm_res.retry = saveretry;
 # endif
 
 # if NETINET || NETINET6
 	if (hp != NULL && hp->h_name[0] != '['
