{"record":{"id":"2d0f6a129faab560","repo":"clash-verge-rev/clash-verge-rev","slug":"invalid-dns-name-host","errorCode":null,"errorMessage":"Invalid DNS name: {host}","messagePattern":"Invalid DNS name: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src-tauri/src/feat/clash.rs","lineNumber":169,"sourceCode":"        let mut buf = BytesMut::with_capacity(1024);\n\n        if is_https {\n            let stream = match proxy_port {\n                Some(pp) => {\n                    let mut s = TcpStream::connect(format!(\"127.0.0.1:{pp}\")).await?;\n                    s.write_all(format!(\"CONNECT {host}:{port} HTTP/1.1\\r\\nHost: {host}:{port}\\r\\n\\r\\n\").as_bytes())\n                        .await?;\n                    s.read_buf(&mut buf).await?;\n                    if !buf.windows(3).any(|w| w == b\"200\") {\n                        return Err(anyhow::anyhow!(\"Proxy CONNECT failed\"));\n                    }\n                    s\n                }\n                None => TcpStream::connect(format!(\"{host}:{port}\")).await?,\n            };\n            let connector = tokio_rustls::TlsConnector::from(Arc::clone(&TLS_CONFIG));\n            let server_name = rustls::pki_types::ServerName::try_from(host.as_str())\n                .map_err(|_| anyhow::anyhow!(\"Invalid DNS name: {host}\"))?\n                .to_owned();\n            connector.connect(server_name, stream).await?;\n        } else {\n            let (mut stream, req) = match proxy_port {\n                Some(pp) => (\n                    TcpStream::connect(format!(\"127.0.0.1:{pp}\")).await?,\n                    format!(\"HEAD {url} HTTP/1.1\\r\\nHost: {host}\\r\\nConnection: close\\r\\n\\r\\n\"),\n                ),\n                None => (\n                    TcpStream::connect(format!(\"{host}:{port}\")).await?,\n                    format!(\"HEAD / HTTP/1.1\\r\\nHost: {host}\\r\\nConnection: close\\r\\n\\r\\n\"),\n                ),\n            };\n            stream.write_all(req.as_bytes()).await?;\n            let _ = stream.read(&mut buf).await?;\n        }\n\n        // frontend treats 0 as timeout","sourceCodeStart":151,"sourceCodeEnd":187,"githubUrl":"https://github.com/clash-verge-rev/clash-verge-rev/blob/5cad0f2799e74b1105e133bcfc2a45f5c1370ef1/src-tauri/src/feat/clash.rs#L151-L187","documentation":"Error \"Invalid DNS name: {host}\" thrown in clash-verge-rev/clash-verge-rev.","triggerScenarios":"Thrown at src-tauri/src/feat/clash.rs:169 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"5cad0f2799e74b1105e133bcfc2a45f5c1370ef1","analyzedAt":"2026-08-12T03:25:57.699Z","schemaVersion":2},"datasetVersion":"2026-08-12T08:17:17.861Z"}