{"record":{"id":"e9a811477249f524","repo":"XX-net/XX-Net","slug":"get-ip-for-s-fail-r","errorCode":null,"errorMessage":"get ip for %s fail:%r","messagePattern":"get ip for (.+?) fail:%r","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"code/default/x_tunnel/local/cloudflare_front/ip_manager.py","lineNumber":82,"sourceCode":"        self.domain_map = self.load_domains()\n\n    def get_ip_sni_host(self):\n        now = time.time()\n        for top_domain, info in self.domain_map.items():\n            if info[\"links\"] < 0:\n                info[\"links\"] = 0\n\n            if info[\"links\"] >= self.config.max_connection_per_domain:\n                continue\n\n            if info[\"fail_times\"] and now - info[\"last_try\"] < 60:\n                continue\n\n            sni = \"www.\" + top_domain\n            try:\n                ip = socket.gethostbyname(sni)\n            except Exception as e:\n                self.logger.warn(\"get ip for %s fail:%r\", sni, e)\n                continue\n\n            self.logger.debug(\"get ip:%s sni:%s\", ip, sni)\n            info[\"links\"] += 1\n            info[\"last_try\"] = now\n            return {\n                \"ip_str\": ip,\n                \"sni\": sni,\n                \"host\": top_domain,\n            }\n\n        return None\n\n    def _get_domain(self, top_domain):\n        self.domain_map.setdefault(top_domain, {\n                            \"links\": 0,\n                            \"fail_times\": 0,\n                            \"last_try\": 0.0","sourceCodeStart":64,"sourceCodeEnd":100,"githubUrl":"https://github.com/XX-net/XX-Net/blob/cfa5bc17b67676e467f37ec50766127e0ab5f0aa/code/default/x_tunnel/local/cloudflare_front/ip_manager.py#L64-L100","documentation":"DNS resolution of 'www.<top_domain>' failed while ip_manager tried to obtain an IP for a domain; that domain is skipped this round.","triggerScenarios":"get_ip_sni_host calls socket.gethostbyname('www.'+top_domain) and it raises (NXDOMAIN, timeout, no resolver).","commonSituations":"Dead/expired domains in the saved list; local DNS blocked or poisoned; offline machine.","solutions":["Check system DNS works (nslookup www.cloudflare.com)","Prune dead domains from the saved domain list","Use a working resolver / disable DNS hijacking"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"import socket\ntry:\n    socket.gethostbyname(sni)\nexcept socket.gaierror:\n    skip_domain()","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use a reliable local resolver","Periodically prune dead domains from the saved list"],"tags":["cloudflare","dns","ip-manager"],"backgroundTag":"dns-resolution-failed","analyzedSha":"cfa5bc17b67676e467f37ec50766127e0ab5f0aa","analyzedAt":"2026-08-27T19:28:28.225Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}