1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! Async DNS resolution with caching and Happy Eyeballs support.
//!
//! This module provides DNS resolution with configurable caching, retry logic,
//! and Happy Eyeballs (RFC 6555) support for optimal connection establishment.
//!
//! # Cancel Safety
//!
//! - `lookup_ip`: Cancel-safe, DNS query can be cancelled at any point.
//! - `happy_eyeballs_connect`: Cancel-safe, connection attempts are cancelled on drop.
//! - Cache updates are atomic and don't block on cancellation.
//!
//! # Implementation Notes
//!
//! `lookup_ip` keeps the system-resolver fast path for the default
//! configuration so search-domain behavior stays aligned with the host.
//! When explicit nameservers are configured, or when record-specific lookups
//! (MX, SRV, TXT) are requested, the resolver uses its own DNS transport over
//! UDP/TCP on the blocking pool.
//!
//! # Example
//!
//! ```ignore
//! use asupersync::net::dns::{Resolver, ResolverConfig};
//!
//! let resolver = Resolver::new();
//!
//! // Simple IP lookup
//! let lookup = resolver.lookup_ip("example.com").await?;
//! for addr in lookup.addresses() {
//! println!("{}", addr);
//! }
//!
//! // Happy Eyeballs connection (races IPv6/IPv4)
//! let stream = resolver.happy_eyeballs_connect("example.com", 443).await?;
//! ```
pub use ;
pub use DnsError;
pub use ;
pub use parse_resolv_conf_nameservers_for_test;
pub use ;