clash-verge-rev/clash-verge-rev · error · anyhow::Error
Invalid DNS name: {host}
Error message
Invalid DNS name: {host} What it means
Error "Invalid DNS name: {host}" thrown in clash-verge-rev/clash-verge-rev.
Source
Thrown at src-tauri/src/feat/clash.rs:169
let mut buf = BytesMut::with_capacity(1024);
if is_https {
let stream = match proxy_port {
Some(pp) => {
let mut s = TcpStream::connect(format!("127.0.0.1:{pp}")).await?;
s.write_all(format!("CONNECT {host}:{port} HTTP/1.1\r\nHost: {host}:{port}\r\n\r\n").as_bytes())
.await?;
s.read_buf(&mut buf).await?;
if !buf.windows(3).any(|w| w == b"200") {
return Err(anyhow::anyhow!("Proxy CONNECT failed"));
}
s
}
None => TcpStream::connect(format!("{host}:{port}")).await?,
};
let connector = tokio_rustls::TlsConnector::from(Arc::clone(&TLS_CONFIG));
let server_name = rustls::pki_types::ServerName::try_from(host.as_str())
.map_err(|_| anyhow::anyhow!("Invalid DNS name: {host}"))?
.to_owned();
connector.connect(server_name, stream).await?;
} else {
let (mut stream, req) = match proxy_port {
Some(pp) => (
TcpStream::connect(format!("127.0.0.1:{pp}")).await?,
format!("HEAD {url} HTTP/1.1\r\nHost: {host}\r\nConnection: close\r\n\r\n"),
),
None => (
TcpStream::connect(format!("{host}:{port}")).await?,
format!("HEAD / HTTP/1.1\r\nHost: {host}\r\nConnection: close\r\n\r\n"),
),
};
stream.write_all(req.as_bytes()).await?;
let _ = stream.read(&mut buf).await?;
}
// frontend treats 0 as timeoutView on GitHub (pinned to 5cad0f2799)
When it happens
Trigger: Thrown at src-tauri/src/feat/clash.rs:169 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of clash-verge-rev/clash-verge-rev@5cad0f2799 (2026-08-12).
Data as JSON: /api/errors/2d0f6a129faab560.
Report an issue: GitHub.