{"record":{"id":"4030b8284ea13618","repo":"XX-net/XX-Net","slug":"req-s-get-response-timeout","errorCode":null,"errorMessage":"req %s get response timeout","messagePattern":"req (.+?) get response timeout","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"code/default/x_tunnel/local/cloudflare_front/front.py","lineNumber":98,"sourceCode":"        if host not in self.dispatchs:\n            if host in [\"center.xx-net.org\", \"dns.xx-net.org\"]:\n                config = self.light_config\n            else:\n                config = self.config\n\n            http_dispatcher = HttpsDispatcher(\n                logger, config, self.ip_manager, self.connect_manager,\n                http2worker=CloudflareHttp2Worker)\n            self.dispatchs[host] = http_dispatcher\n\n        dispatcher = self.dispatchs[host]\n        return dispatcher\n\n    def request(self, method, host, path=\"/\", headers={}, data=\"\", timeout=120):\n        dispatcher = self.get_dispatcher(host)\n        response = dispatcher.request(method, host, path, dict(headers), data, timeout=timeout)\n        if not response:\n            self.logger.warn(\"req %s get response timeout\", path)\n            return \"\", 602, {}\n\n        status = response.status\n        content = response.task.read_all()\n        if status == 200:\n            logger.debug(\"%s %s%s send:%d recv:%d trace:%s\", method, host, path, len(data), len(content),\n                       response.task.get_trace())\n        else:\n            self.logger.warn(\"%s %s%s status:%d trace:%s\", method, response.worker.ssl_sock.host, path, status,\n                       response.task.get_trace())\n        return content, status, response\n\n    def stop(self):\n        logger.info(\"terminate\")\n        self.connect_manager.set_ssl_created_cb(None)\n        for host in self.dispatchs:\n            dispatcher = self.dispatchs[host]\n            dispatcher.stop()","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/XX-net/XX-Net/blob/cfa5bc17b67676e467f37ec50766127e0ab5f0aa/code/default/x_tunnel/local/cloudflare_front/front.py#L80-L116","documentation":"CloudFlareFront.request got no response object from dispatcher.request within the timeout; it returns ('', 602, {}) as a synthetic timeout response.","triggerScenarios":"request/get_dns/post_data call dispatcher.request with timeout=120 (default); response is None when the task times out or the worker fails.","commonSituations":"Front IPs blocked/reset by firewall, GFW interference, or timeout too small for a slow link.","solutions":["Retry the request; the front layer usually rotates workers/IPs","Increase the timeout argument","Check that check_ip still marks the front IPs as working","Verify network connectivity to CloudFlare edges (port 443)"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"content, status, resp = front.request(...)\nif status == 602:\n    # timeout: retry or rotate front","preventionTips":["Pass explicit timeout sized to workload","Keep front IP pool healthy via periodic check_ip runs"],"tags":["cloudflare","http","timeout","front"],"backgroundTag":"http-request-timeout","analyzedSha":"cfa5bc17b67676e467f37ec50766127e0ab5f0aa","analyzedAt":"2026-08-27T19:28:28.225Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}