@@ -75,6 +75,7 @@ impl DNS {
7575 & self ,
7676 target : & str ,
7777 subdomain : & str ,
78+ resolver : & TokioAsyncResolver ,
7879 timeout : Duration ,
7980 ) -> Vec < Loot > {
8081 let mut loot = vec ! [ ] ;
@@ -122,9 +123,7 @@ impl DNS {
122123 // skip domains that have already been processed
123124 if !self . domains . contains ( & tls_domain) {
124125 // try to resolve to ip
125- if let Ok ( response) =
126- self . resolver . as_ref ( ) . unwrap ( ) . lookup_ip ( & tls_domain) . await
127- {
126+ if let Ok ( response) = resolver. lookup_ip ( & tls_domain) . await {
128127 // collect valid IPs
129128 let addresses: Vec < IpAddr > =
130129 response. iter ( ) . filter ( |ip| !ip. is_loopback ( ) ) . collect ( ) ;
@@ -224,8 +223,11 @@ impl Plugin for DNS {
224223 return Ok ( None ) ;
225224 }
226225
226+ // each worker will use its own resolver object instance
227+ let resolver = self . resolver . as_ref ( ) . unwrap ( ) . clone ( ) ;
228+
227229 // attempt resolving this subdomain to a one or more IP addresses
228- if let Ok ( response) = self . resolver . as_ref ( ) . unwrap ( ) . lookup_ip ( & subdomain) . await {
230+ if let Ok ( response) = resolver. lookup_ip ( & subdomain) . await {
229231 // collect valid IPs
230232 let addresses: Vec < IpAddr > = response. iter ( ) . filter ( |ip| !ip. is_loopback ( ) ) . collect ( ) ;
231233 // Some domains are configured to resolve any subdomain, whatever it is, to the same IP. We do
@@ -265,7 +267,7 @@ impl Plugin for DNS {
265267
266268 if !self . opts . dns_no_https {
267269 let more_loot = self
268- . get_additional_tls_loot ( & creds . target , & subdomain, timeout)
270+ . get_additional_tls_loot ( & target_host , & subdomain, & resolver , timeout)
269271 . await ;
270272
271273 // keep track of domains we processed already
0 commit comments