XX-net/XX-Net · warning
%s %s%s status:%d trace:%s
Error message
%s %s%s status:%d trace:%s
What it means
Logged by seley_front's request() when the relay returned a response whose HTTP status is not 200. It prints method, host, path, the status code, and the task trace so the failure is attributable, then returns (content, status, response) to the caller for handling.
Source
Thrown at code/default/x_tunnel/local/seley_front/front.py:85
def request(self, method, host, path="/", headers={}, data="", timeout=120):
headers = dict(headers)
headers["XX-Account"] = self.account
headers["X-Host"] = host
headers["X-Path"] = path
response = self.http_dispatcher.request(method, host, "/", dict(headers), data, timeout=timeout)
if not response:
logger.warn("req %s get response timeout", path)
return "", 602, {}
status = response.status
content = response.task.read_all()
if status == 200:
logger.debug("%s %s%s send:%d recv:%d trace:%s", method, host, path, len(data), len(content),
response.task.get_trace())
else:
logger.warn("%s %s%s status:%d trace:%s", method, host, path, status,
response.task.get_trace())
return content, status, response
def stop(self):
logger.info("terminate")
self.connect_manager.set_ssl_created_cb(None)
self.http_dispatcher.stop()
self.connect_manager.stop()
self.running = False
def set_proxy(self, args):
logger.info("set_proxy:%s", args)
self.config.PROXY_ENABLE = args["enable"]
self.config.PROXY_TYPE = args["type"]
self.config.PROXY_HOST = args["host"]
self.config.PROXY_PORT = args["port"]View on GitHub (pinned to cfa5bc17b6)
Solutions
- Read the status code in the log: 403 → fix account/credentials; 404 → verify X-Host/X-Path headers; 5xx → upstream/relay problem, retry later.
- Retry transient 5xx responses with backoff using the returned status.
- Check the task trace to see at which hop the non-200 was produced.
- Verify XX-Account header matches a valid account if the relay enforces auth.
Defensive patterns
Strategy: fallback
Try / catch
content, status, resp = front.request(method, host, path, timeout=timeout)
if status != 200:
if 500 <= status < 600:
content, status, resp = retry_with_backoff(...) # retryable
else:
handle_client_error(status, resp) # 4xx: fix headers/account Prevention
- Branch on status: retry 5xx, fix 4xx.
- Ensure XX-Account/X-Host/X-Path headers are always set correctly.
- Log response bodies for 4xx to catch auth/quota issues early.
When it happens
Trigger: Any SeleyFront.request/.get call where response.status != 200 — e.g. the relay returns 403 (auth/quota), 404 (bad path/host), 5xx (upstream failure), or a block page from an intermediary.
Common situations: Expired or missing account credentials on the relay, requesting hosts not covered by the plan, upstream origin server errors, or ISP/middlebox injection returning error pages.
Related errors
- req %s get response timeout
- api:%s fail:%s t:%d
- %s %s%s status:%d trace:%s
- direct %s %s % status:%d
- entity header:%s
AI-assisted analysis of XX-net/XX-Net@cfa5bc17b6 (2026-08-27).
Data as JSON: /api/errors/2a524cce44d9b6e5.
Report an issue: GitHub.