diff --git a/lib/net/mod.rs b/lib/net/mod.rs index f4f653a2..581cd2e3 100644 --- a/lib/net/mod.rs +++ b/lib/net/mod.rs @@ -161,19 +161,10 @@ pub fn make_server_endpoint( pub type PeerInfoRx = mpsc::UnboundedReceiver<(SocketAddr, Option)>; -const ALPHANET_SEED_PEER_ADDRS: &[PeerAddress<&'static str>] = { - // seed.alpha.ecash.drivecha.in - const DRIVECHA_IN: PeerAddress<&'static str> = PeerAddress { - host: url::Host::Ipv4(Ipv4Addr::new(157, 180, 96, 24)), - port: DEFAULT_PORT, - }; - // seed.alpha.ecash.ninja - const ECASH_NINJA: PeerAddress<&'static str> = PeerAddress { - host: url::Host::Domain("seed.alpha.ecash.ninja"), - port: DEFAULT_PORT, - }; - &[DRIVECHA_IN, ECASH_NINJA] -}; +const ALPHANET_SEED_PEER_ADDRS: &[PeerAddress<&'static str>] = &[PeerAddress { + host: url::Host::Domain("seed.alpha.ecash.eu.com"), + port: DEFAULT_PORT, +}]; const SIGNET_SEED_PEER_ADDRS: &[PeerAddress<&'static str>] = { const SIGNET_MINING_SERVER: PeerAddress<&'static str> = PeerAddress { @@ -216,7 +207,7 @@ pub async fn resolve_peer_address( peer_addr: PeerAddress, ) -> std::io::Result> where - S: std::fmt::Display + tokio::net::ToSocketAddrs, + S: std::fmt::Display, { match peer_addr.host { url::Host::Ipv4(ipv4) => Ok(ResolvedPeerAddress::Static( @@ -226,7 +217,9 @@ where SocketAddr::new(IpAddr::V6(ipv6), peer_addr.port), )), url::Host::Domain(domain) => { - let mut addrs: Vec<_> = tokio::net::lookup_host(&domain) + // `lookup_host` reads a `host:port` pair, not a bare name. + let host_port = format!("{domain}:{}", peer_addr.port); + let mut addrs: Vec<_> = tokio::net::lookup_host(host_port) .await? .filter_map(|addr| { if addr.ip().is_unspecified() { @@ -674,3 +667,25 @@ impl Net { }) } } + +#[cfg(test)] +mod test { + use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + + use crate::{net::resolve_peer_address, types::net::PeerAddress}; + + /// A seed names a host and a port, and the resolver keeps both. + #[tokio::test] + async fn a_seed_name_resolves_with_its_port() -> anyhow::Result<()> { + let peer_addr: PeerAddress = "localhost:4009".parse()?; + let resolved = resolve_peer_address(peer_addr).await?; + assert_eq!(resolved.port(), 4009); + assert!( + resolved + .ip_addrs() + .any(|addr| addr == IpAddr::V4(Ipv4Addr::LOCALHOST) + || addr == IpAddr::V6(Ipv6Addr::LOCALHOST)) + ); + Ok(()) + } +}