This commit is contained in:
open-trade 2022-01-05 15:59:01 +08:00
parent 5f61c2442a
commit 6767dda246

View File

@ -4,18 +4,14 @@ use crate::{
udp::FramedSocket, udp::FramedSocket,
ResultType, ResultType,
}; };
use anyhow::bail; use anyhow::{bail, Context};
use std::net::SocketAddr; use std::net::SocketAddr;
use tokio::net::ToSocketAddrs; use tokio::net::ToSocketAddrs;
use tokio_socks::{IntoTargetAddr, TargetAddr}; use tokio_socks::{IntoTargetAddr, TargetAddr};
fn to_socket_addr(host: &str) -> ResultType<SocketAddr> { fn to_socket_addr(host: &str) -> ResultType<SocketAddr> {
use std::net::ToSocketAddrs; use std::net::ToSocketAddrs;
let addrs: Vec<SocketAddr> = host.to_socket_addrs()?.collect(); host.to_socket_addrs()?.next().context("Failed to solve")
if addrs.is_empty() {
bail!("Failed to solve {}", host);
}
Ok(addrs[0])
} }
pub fn get_target_addr(host: &str) -> ResultType<TargetAddr<'static>> { pub fn get_target_addr(host: &str) -> ResultType<TargetAddr<'static>> {
@ -63,13 +59,10 @@ pub async fn connect_tcp<'t, T: IntoTargetAddr<'t>>(
) )
.await .await
} else { } else {
let addrs: Vec<SocketAddr> = let addr = std::net::ToSocketAddrs::to_socket_addrs(&target_addr)?
std::net::ToSocketAddrs::to_socket_addrs(&target_addr)?.collect(); .next()
if addrs.is_empty() { .context("Invalid target addr")?;
bail!("Invalid target addr"); Ok(FramedStream::new(addr, local, ms_timeout).await?)
};
Ok(FramedStream::new(addrs[0], local, ms_timeout).await?)
} }
} }