diff --git a/crates/ruci-tls/src/client.rs b/crates/ruci-tls/src/client.rs index 747309f..5f16c8e 100644 --- a/crates/ruci-tls/src/client.rs +++ b/crates/ruci-tls/src/client.rs @@ -141,9 +141,12 @@ impl Client { let new_c = connector .connect( ServerName::try_from( - self.server_domain - .clone() - .unwrap_or(a.clone().unwrap_or_default().get_name().unwrap_or_default()), + self.server_domain.clone().unwrap_or( + a.clone() + .unwrap_or_default() + .get_name_or_ip_string() + .unwrap_or_default(), + ), ) .expect("domain string to serverName ok"), conn, diff --git a/rucimp/src/map/native_tls/mod.rs b/rucimp/src/map/native_tls/mod.rs index 271d4fe..0448a0b 100644 --- a/rucimp/src/map/native_tls/mod.rs +++ b/rucimp/src/map/native_tls/mod.rs @@ -18,6 +18,7 @@ use ruci::{ use macro_map::*; use tokio_native_tls::{native_tls::Identity, TlsAcceptor, TlsConnector}; +use tracing::debug; use crate::utils::FileSource; @@ -156,12 +157,19 @@ impl map::Map for Client { TlsConnector::from(b.build().unwrap()) }; + if self.config.host.is_none() { + debug!("host: {:?}", params.a); + } let r = connector .connect( - self.config - .host - .as_ref() - .unwrap_or(¶ms.a.clone().unwrap().get_name().unwrap()), + self.config.host.as_ref().unwrap_or( + ¶ms + .a + .clone() + .unwrap_or_default() + .get_name_or_ip_string() + .unwrap_or_default(), + ), conn, ) .await; diff --git a/src/net/addr.rs b/src/net/addr.rs index 021a11f..4b9f9e4 100644 --- a/src/net/addr.rs +++ b/src/net/addr.rs @@ -353,6 +353,20 @@ impl Addr { _ => None, } } + + /// used for get a domain + pub fn get_name_or_ip_string(&self) -> Option { + let on = self.get_name(); + if on.is_none() { + Some(match &self.addr { + NetAddr::Socket(so) => so.ip().to_string(), + NetAddr::Name(n, _) => n.clone(), + NetAddr::NameAndSocket(_, ip, _) => ip.to_string(), + }) + } else { + on + } + } pub fn get_port(&self) -> u16 { match &self.addr { NetAddr::Name(_, p) => *p,