diff --git a/crates/client/src/error/dnssec_error.rs b/crates/client/src/error/dnssec_error.rs index 518117681c..a6653a9c8f 100644 --- a/crates/client/src/error/dnssec_error.rs +++ b/crates/client/src/error/dnssec_error.rs @@ -161,7 +161,7 @@ impl From for Error { pub mod not_openssl { use std; - #[derive(Debug)] + #[derive(Debug, Clone, Copy)] pub struct SslErrorStack; impl std::fmt::Display for SslErrorStack { @@ -181,10 +181,10 @@ pub mod not_openssl { pub mod not_ring { use std; - #[derive(Debug)] + #[derive(Debug, Clone, Copy)] pub struct KeyRejected; - #[derive(Debug)] + #[derive(Debug, Clone, Copy)] pub struct Unspecified; impl std::fmt::Display for KeyRejected { diff --git a/crates/proto/src/error.rs b/crates/proto/src/error.rs index b9fbb02ec3..c8168e5ce3 100644 --- a/crates/proto/src/error.rs +++ b/crates/proto/src/error.rs @@ -354,7 +354,7 @@ pub mod not_ring { use std; /// The Unspecified error replacement - #[derive(Debug)] + #[derive(Debug, Copy, Clone)] pub struct Unspecified; impl std::fmt::Display for Unspecified { diff --git a/crates/proto/src/op/query.rs b/crates/proto/src/op/query.rs index fc45e0042e..7e90e231c0 100644 --- a/crates/proto/src/op/query.rs +++ b/crates/proto/src/op/query.rs @@ -183,12 +183,20 @@ pub struct QueryParts { impl From for QueryParts { fn from(q: Query) -> Self { + #[cfg(feature = "mdns")] let Query { name, query_type, query_class, mdns_unicast_response, } = q; + #[cfg(not(feature = "mdns"))] + let Query { + name, + query_type, + query_class, + } = q; + Self { name, query_type, diff --git a/crates/proto/src/rr/resource.rs b/crates/proto/src/rr/resource.rs index e78b7aea94..b5fee500a5 100644 --- a/crates/proto/src/rr/resource.rs +++ b/crates/proto/src/rr/resource.rs @@ -291,6 +291,7 @@ pub struct RecordParts { impl From for RecordParts { fn from(record: Record) -> Self { + #[cfg(feature = "mdns")] let Record { name_labels, rr_type, @@ -299,6 +300,16 @@ impl From for RecordParts { rdata, mdns_cache_flush, } = record; + + #[cfg(not(feature = "mdns"))] + let Record { + name_labels, + rr_type, + dns_class, + ttl, + rdata, + } = record; + RecordParts { name_labels, rr_type, diff --git a/crates/resolver/src/caching_client.rs b/crates/resolver/src/caching_client.rs index 4a87ca08ed..6c706fa427 100644 --- a/crates/resolver/src/caching_client.rs +++ b/crates/resolver/src/caching_client.rs @@ -177,7 +177,7 @@ where let response_message = client .client - .lookup(query.clone(), options.clone()) + .lookup(query.clone(), options) .await .map_err(E::into); diff --git a/crates/resolver/src/lookup.rs b/crates/resolver/src/lookup.rs index 6762edc9bb..d1de342562 100644 --- a/crates/resolver/src/lookup.rs +++ b/crates/resolver/src/lookup.rs @@ -245,7 +245,7 @@ where let query: Pin> + Send>> = match name { Ok(name) => client_cache - .lookup(Query::query(name, record_type), options.clone()) + .lookup(Query::query(name, record_type), options) .boxed(), Err(err) => future::err(err).boxed(), }; @@ -287,7 +287,7 @@ where if should_retry { if let Some(name) = self.names.pop() { let record_type = self.record_type; - let options = self.options.clone(); + let options = self.options; // If there's another name left to try, build a new query // for that next name and continue looping. diff --git a/crates/resolver/src/lookup_ip.rs b/crates/resolver/src/lookup_ip.rs index 26f4e33f42..db65eb2fdd 100644 --- a/crates/resolver/src/lookup_ip.rs +++ b/crates/resolver/src/lookup_ip.rs @@ -166,7 +166,7 @@ where name, self.strategy, self.client_cache.clone(), - self.options.clone(), + self.options, self.hosts.clone(), ) .boxed(); @@ -315,7 +315,7 @@ where hosts_lookup( Query::query(name.clone(), RecordType::A), client.clone(), - options.clone(), + options, hosts.clone(), ) .boxed(), @@ -414,7 +414,7 @@ where let res = hosts_lookup( Query::query(name.clone(), first_type), client, - options.clone(), + options, hosts.clone(), ) .await;