Fix infinite recursion in 3x-ui server ensure/get helpers.
ensure_xui_servers no longer calls get_xui_server when mirroring the primary panel into legacy sync fields. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+11
-8
@@ -2,7 +2,6 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import secrets
|
||||
import uuid
|
||||
from typing import Any, Optional
|
||||
|
||||
@@ -59,14 +58,18 @@ def ensure_xui_servers(settings: dict) -> list:
|
||||
migrated = legacy_sync_to_server(settings.get('sync') or {})
|
||||
if migrated:
|
||||
servers = [migrated]
|
||||
settings['xui_servers'] = servers
|
||||
else:
|
||||
settings['xui_servers'] = servers
|
||||
settings['xui_servers'] = servers
|
||||
|
||||
# Keep legacy sync.* mirrored from first/default for older code paths
|
||||
# Mirror primary into legacy sync.* for older code paths (no get_xui_server — avoids recursion)
|
||||
sync = settings.setdefault('sync', {})
|
||||
primary = get_xui_server(settings, None) or {}
|
||||
if primary.get('url'):
|
||||
primary = None
|
||||
for s in servers:
|
||||
if s.get('enabled'):
|
||||
primary = s
|
||||
break
|
||||
if primary is None and servers:
|
||||
primary = servers[0]
|
||||
if primary and primary.get('url'):
|
||||
sync.setdefault('xui_url', primary.get('url') or '')
|
||||
sync.setdefault('xui_sub_url', primary.get('sub_url') or '')
|
||||
sync.setdefault('xui_api_token', primary.get('api_token') or '')
|
||||
@@ -91,7 +94,7 @@ def get_xui_server(settings: dict, panel_id: Optional[str] = None) -> Optional[d
|
||||
for s in servers:
|
||||
if str(s.get('id')) == str(panel_id):
|
||||
return s
|
||||
# Prefer enabled
|
||||
return None
|
||||
for s in servers:
|
||||
if s.get('enabled'):
|
||||
return s
|
||||
|
||||
Reference in New Issue
Block a user