$NetBSD: patch-ay,v 1.3 2021/07/04 07:57:13 jnemeth Exp $

--- sendmail/sm_resolve.c.orig	2020-06-08 08:35:03.000000000 +0000
+++ sendmail/sm_resolve.c
@@ -57,2 +57,6 @@ SM_RCSID("$Id: sm_resolve.c,v 8.40 2013-
 
+#if NAMED_BIND
+extern struct __res_state sm_res;
+#endif
+
 static struct stot
@@ -771,3 +775,3 @@ nsportip(p)
 	{
-		if ((_res.options & RES_INIT) == 0)
+		if ((sm_res.options & RES_INIT) == 0)
 			(void) res_init();
@@ -796,7 +800,7 @@ dns_setns(ns, port)
 {
-	_res.nsaddr_list[0].sin_family = AF_INET;
-	_res.nsaddr_list[0].sin_addr = *ns;
+	sm_res.nsaddr_list[0].sin_family = AF_INET;
+	sm_res.nsaddr_list[0].sin_addr = *ns;
 	if (port != 0)
-		_res.nsaddr_list[0].sin_port = htons(port);
-	_res.nscount = 1;
+		sm_res.nsaddr_list[0].sin_port = htons(port);
+	sm_res.nscount = 1;
 	if (tTd(8, 61))
@@ -945,3 +949,3 @@ dnscrtrr(domain, query, qtype, value, rr
 
-			adflag = (_res.options & RES_USE_DNSSEC) != 0;
+			adflag = (sm_res.options & RES_USE_DNSSEC) != 0;
 
@@ -1289,3 +1293,2 @@ dns_lookup_int(domain, rr_class, rr_type
 	unsigned char *reply;
-	int (*resfunc) __P((const char *, int, int, u_char *, int));
 
@@ -1296,10 +1299,4 @@ dns_lookup_int(domain, rr_class, rr_type
 
-	resfunc = res_search;
-#  if DNSSEC_TEST
-	if (tTd(8, 110))
-		resfunc = tstdns_search;
-#  endif
-
-	old_options = _res.options;
-	_res.options |= options;
+	old_options = sm_res.options;
+	sm_res.options |= options;
 	if (err != NULL)
@@ -1310,3 +1307,3 @@ dns_lookup_int(domain, rr_class, rr_type
 	{
-		_res.options |= RES_DEBUG;
+		sm_res.options |= RES_DEBUG;
 		sm_dprintf("dns_lookup_int(%s, %d, %s, %x)\n", domain,
@@ -1317,4 +1314,4 @@ dns_lookup_int(domain, rr_class, rr_type
 		sm_dprintf("NS=%s, port=%d\n",
-			inet_ntoa(_res.nsaddr_list[0].sin_addr),
-			ntohs(_res.nsaddr_list[0].sin_port));
+			inet_ntoa(sm_res.nsaddr_list[0].sin_addr),
+			ntohs(sm_res.nsaddr_list[0].sin_port));
 #  endif
@@ -1322,4 +1319,4 @@ dns_lookup_int(domain, rr_class, rr_type
 	{
-		save_retrans = _res.retrans;
-		_res.retrans = retrans;
+		save_retrans = sm_res.retrans;
+		sm_res.retrans = retrans;
 	}
@@ -1327,4 +1324,4 @@ dns_lookup_int(domain, rr_class, rr_type
 	{
-		save_retry = _res.retry;
-		_res.retry = retry;
+		save_retry = sm_res.retry;
+		sm_res.retry = retry;
 	}
@@ -1333,3 +1330,12 @@ dns_lookup_int(domain, rr_class, rr_type
 	reply = (unsigned char *)&reply_buf;
-	len = (*resfunc)(domain, rr_class, rr_type, reply, SMRBSIZE);
+#  if DNSSEC_TEST
+	if (tTd(8, 110))
+		len = tstdns_search(domain, rr_class, rr_type, reply, SMRBSIZE);
+	else
+#  endif
+#  if NAMED_RESN
+	len = res_nsearch(&sm_res, domain, rr_class, rr_type, reply, SMRBSIZE);
+#  else
+	len = res_search(domain, rr_class, rr_type, reply, SMRBSIZE);
+#  endif
 	if (len >= SMRBSIZE)
@@ -1353,4 +1359,15 @@ dns_lookup_int(domain, rr_class, rr_type
 				SM_SET_H_ERRNO(0);
-				len = (*resfunc)(domain, rr_class, rr_type,
-						 reply, IP_MAXPACKET);
+#  if DNSSEC_TEST
+				if (tTd(8, 110))
+					len = tstdns_search(domain, rr_class,
+					    rr_type, reply, IP_MAXPACKET);
+				else
+#  endif
+#  if NAMED_RESN
+				len = res_nsearch(&sm_res, domain, rr_class,
+				    rr_type, reply, IP_MAXPACKET);
+#  else
+				len = res_search(domain, rr_class, rr_type,
+				    reply, IP_MAXPACKET);
+#  endif
 			}
@@ -1358,3 +1375,3 @@ dns_lookup_int(domain, rr_class, rr_type
 	}
-	_res.options = old_options;
+	sm_res.options = old_options;
 	if (len < 0)
@@ -1394,5 +1411,5 @@ dns_lookup_int(domain, rr_class, rr_type
 	if (retrans > 0)
-		_res.retrans = save_retrans;
+		sm_res.retrans = save_retrans;
 	if (retry > 0)
-		_res.retry = save_retry;
+		sm_res.retry = save_retry;
 	return dr;
