XX-net/XX-Net · warning

no quota

Error message

no quota

What it means

Warning printed by request_balance in x_tunnel when the account's remaining quota (calculated from the quota_list returned by the login/balance API) is less than or equal to zero. It is informational only — the function continues and updates host/plans — but signals that paid traffic for the x_tunnel account is exhausted.

Source

Thrown at code/default/x_tunnel/local/proxy_session.py:1288

    }

    try:
        center_login_process = True
        if g.tls_relay_front:
            g.tls_relay_front.set_x_tunnel_account(account, password)
        if g.seley_front:
            g.seley_front.set_x_tunnel_account(account, password)

        res, info = call_api(login_path, req_info)
        if not res:
            return False, info

        g.quota_list = info["quota_list"]
        g.quota = calculate_quota_left(g.quota_list)
        g.paypal_button_id = info["paypal_button_id"]
        g.plans = info["plans"]
        if g.quota <= 0:
            xlog.warn("no quota")

        if g.config.server_host:
            xlog.info("use server:%s specify in config.", g.config.server_host)
            g.server_host = str(g.config.server_host)
        elif update_server or not g.server_host:
            g.server_host = str(info["host"])
            g.server_port = info["port"]
            xlog.info("update xt_server %s:%d", g.server_host, g.server_port)

        g.selectable = info["selectable"]

        if g.config.update_cloudflare_domains:
            g.http_client.save_cloudflare_domain(info.get("cloudflare_domains"))

        g.promote_code = utils.to_str(info["promote_code"])
        g.promoter = info["promoter"]
        g.balance = info["balance"]
        g.openai_balance = info["openai_balance"]

View on GitHub (pinned to cfa5bc17b6)

Solutions

  1. Log in to the x_tunnel (XX-Net) provider dashboard and check the plan/quota for the account; top up or renew if exhausted.
  2. Verify g.config.login_account and g.config.login_password match the account with an active plan.
  3. Wait for quota reset (monthly plans) or switch to a different account.
  4. If quota should be positive, re-run request_balance — the value may be stale after a server-side grant.
Defensive patterns

Strategy: validation

Validate before calling

from x_tunnel.local import proxy_session as ps
quota = ps.calculate_quota_left(ps.g.quota_list) if ps.g.quota_list else 0
if quota <= 0:
    # skip x_tunnel path, fall back to direct or another proxy
    use_x_tunnel = False

Prevention

When it happens

Trigger: Calling request_balance (directly or via login_process, update_quota_loop, get_openai_proxy, req_token_login_handler, req_login_handler) when calculate_quota_left(g.quota_list) returns <= 0. This happens with an expired plan, fully consumed quota, or a new/unpaid account.

Common situations: Free-tier accounts after heavy use, subscription lapse, or using the wrong login_account/login_password in the config so the returned account has no active plan.

Related errors


AI-assisted analysis of XX-net/XX-Net@cfa5bc17b6 (2026-08-27). Data as JSON: /api/errors/0838d46372017765. Report an issue: GitHub.