{"record":{"id":"2d8ff1b58316c113","repo":"tinyhumansai/openhuman","slug":"dns-resolution-failed-for-host-e","errorCode":null,"errorMessage":"DNS resolution failed for '{host}': {e}","messagePattern":"DNS resolution failed for '(.+?)': (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/network/url_guard.rs","lineNumber":156,"sourceCode":"        if is_private_or_local_host(&ip_str) {\n            log::debug!(\"[url_guard] DNS rebinding blocked host={host} resolved_ip={ip_str}\");\n            anyhow::bail!(\n                \"DNS rebinding blocked: '{host}' resolved to private/local address {ip_str}\"\n            );\n        }\n    }\n\n    Ok(url)\n}\n\nasync fn resolve_host_ips(host: String, port: u16) -> anyhow::Result<Vec<IpAddr>> {\n    let log_host = host.clone();\n    tokio::task::spawn_blocking(move || {\n        (host.as_str(), port)\n            .to_socket_addrs()\n            .map_err(|e| {\n                log::debug!(\"[url_guard] DNS resolution failed host={host} port={port} error={e}\");\n                anyhow::anyhow!(\"DNS resolution failed for '{host}': {e}\")\n            })\n            .map(|iter| iter.map(|addr| addr.ip()).collect())\n    })\n    .await\n    .map_err(|e| {\n        log::debug!(\"[url_guard] DNS resolution task failed host={log_host} port={port} error={e}\");\n        anyhow::anyhow!(\"DNS resolution task failed for '{log_host}': {e}\")\n    })?\n}\n\npub(super) fn normalize_allowed_domains(domains: Vec<String>) -> Vec<String> {\n    if domains.is_empty() {\n        return Vec::new();\n    }\n    let mut normalized = domains\n        .into_iter()\n        .filter_map(|d| normalize_domain(&d))\n        .collect::<Vec<_>>();","sourceCodeStart":138,"sourceCodeEnd":174,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/network/url_guard.rs#L138-L174","documentation":"Error \"DNS resolution failed for '{host}': {e}\" thrown in tinyhumansai/openhuman.","triggerScenarios":"Thrown at src/openhuman/tools/impl/network/url_guard.rs:156 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-21T04:17:39.646Z"}