diff options
Diffstat (limited to 'ext/net/ops.rs')
-rw-r--r-- | ext/net/ops.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/ext/net/ops.rs b/ext/net/ops.rs index 7019a9b1f..43a562e0f 100644 --- a/ext/net/ops.rs +++ b/ext/net/ops.rs @@ -35,6 +35,7 @@ use trust_dns_proto::rr::record_type::RecordType; use trust_dns_resolver::config::NameServerConfigGroup; use trust_dns_resolver::config::ResolverConfig; use trust_dns_resolver::config::ResolverOpts; +use trust_dns_resolver::error::ResolveErrorKind; use trust_dns_resolver::system_conf; use trust_dns_resolver::AsyncResolver; @@ -630,7 +631,19 @@ where let results = resolver .lookup(query, record_type, Default::default()) .await - .map_err(|e| generic_error(format!("{}", e)))? + .map_err(|e| { + let message = format!("{}", e); + match e.kind() { + ResolveErrorKind::NoRecordsFound { .. } => { + custom_error("NotFound", message) + } + ResolveErrorKind::Message("No connections available") => { + custom_error("NotConnected", message) + } + ResolveErrorKind::Timeout => custom_error("TimedOut", message), + _ => generic_error(message), + } + })? .iter() .filter_map(rdata_to_return_record(record_type)) .collect(); |