fix(bridge): port BRIDGES iteration guards

pull/4/head
Rodrigo Pérez 6 months ago
parent d94bc0965e
commit 4f93e21b13

@ -114,6 +114,8 @@ class BridgeUseCases:
_debug_msgs: list[str] = []
for bridge_key, entries in list(bridges.items()):
if bridge_key not in bridges:
continue
bridge_used = False
is_special_tg = _is_special_tg(bridge_key)
@ -215,6 +217,8 @@ class BridgeUseCases:
dialroll = 0
activeroll = 0
for _bridge, entries in list(bridges.items()):
if _bridge not in bridges:
continue
for enabled_system in entries:
if enabled_system.get("SYSTEM") == system:
bridgeroll += 1
@ -239,12 +243,16 @@ class BridgeUseCases:
_tmout = float(systems_cfg.get(system, {}).get("DEFAULT_UA_TIMER", 10))
times: dict[float, str] = {}
for _bridge, entries in list(bridges.items()):
if _bridge not in bridges:
continue
for enabled_system in entries:
if enabled_system.get("ACTIVE") and _bridge and _bridge[:1] == "#":
t = enabled_system.get("TIMER")
if isinstance(t, (int, float)):
times[t] = _bridge
for _bridge in set(times.values()):
if _bridge not in bridges:
continue
logger.warning("(BRIDGEDEBUG) deactivating system: %s for bridge: %s", system, _bridge)
try:
_setbridge = int(_bridge[1:]) if _bridge[:1] == "#" else int(_bridge)
@ -280,6 +288,8 @@ class BridgeUseCases:
dst_id_b = dst_id if isinstance(dst_id, bytes) and len(dst_id) >= 3 else bytes_3(_dst_group)
for _bridge, entries in list(bridges.items()):
if _bridge not in bridges:
continue
for _system in entries:
if _system.get("SYSTEM") != system_name:
continue
@ -513,6 +523,8 @@ class BridgeUseCases:
"""Remove all bridge entries for system (legacy remove_bridge_system)."""
to_remove: list[str] = []
for bridge_key, entries in list(bridges.items()):
if bridge_key not in bridges:
continue
new_entries = [e for e in entries if e.get("SYSTEM") != system_name]
if len(new_entries) < len(entries):
if new_entries:
@ -528,6 +540,8 @@ class BridgeUseCases:
bridges = self._router.get_bridges()
remove_bridges: deque = deque()
for bridge_key, entries in list(bridges.items()):
if bridge_key not in bridges:
continue
has_stat = any(e.get("TO_TYPE") == "STAT" for e in entries)
in_use = any(
(e.get("TO_TYPE") == "ON" and e.get("ACTIVE")) or e.get("TO_TYPE") == "OFF"
@ -760,7 +774,7 @@ class BridgeUseCases:
if key not in bridges:
return
bridgetemp = deque()
for bridgesystem in bridges[key]:
for bridgesystem in bridges.get(key, []):
if bridgesystem.get("SYSTEM") == system and bridgesystem.get("TS") == ts:
bridgetemp.append({"SYSTEM": system, "TS": ts, "TGID": bytes_3(tg), "ACTIVE": False, "TIMEOUT": _tmout * 60.0, "TO_TYPE": "ON", "OFF": [], "ON": [bytes_3(tg)], "RESET": [], "TIMER": time.time() + _tmout * 60.0})
else:
@ -773,6 +787,8 @@ class BridgeUseCases:
timeout_sec = _tmout * 60.0
now = time.time()
for bridge in list(bridges.keys()):
if bridge not in bridges:
continue
if bridge[:1] != "#":
continue
bridgetemp = deque()
@ -789,6 +805,8 @@ class BridgeUseCases:
"""Legacy remove_bridge_system: set all entries for system to ACTIVE False, TO_TYPE ON."""
bridges = self._router.get_bridges()
for _bridge in list(bridges.keys()):
if _bridge not in bridges:
continue
bridgetemp = deque()
for bridgesystem in bridges.get(_bridge, []):
if bridgesystem.get("SYSTEM") != system:
@ -822,9 +840,11 @@ class BridgeUseCases:
"""Legacy deactivate_all_dynamic_bridges: deactivate all non-STAT, non-reflector bridges for a system (TG 4000)."""
bridges = self._router.get_bridges()
for _bridge in list(bridges):
if _bridge not in bridges:
continue
if _bridge[:1] == "#":
continue
for _sys_entry in bridges[_bridge]:
for _sys_entry in bridges.get(_bridge, []):
if _sys_entry.get("SYSTEM") == system_name and _sys_entry.get("TO_TYPE") != "STAT":
if _sys_entry.get("ACTIVE"):
_sys_entry["ACTIVE"] = False
@ -839,6 +859,8 @@ class BridgeUseCases:
timeout_sec = _tmout * 60.0
now = time.time()
for _bridge in list(bridges.keys()):
if _bridge not in bridges:
continue
has_ts1 = any(e.get("SYSTEM") == system and e.get("TS") == 1 for e in bridges.get(_bridge, []))
has_ts2 = any(e.get("SYSTEM") == system and e.get("TS") == 2 for e in bridges.get(_bridge, []))
if _bridge[:1] != "#":
@ -1835,6 +1857,9 @@ class BridgeUseCases:
sys_ignore_obp: set[tuple[str, int]] = set()
forwarded = []
for _bridge_table_name, _bridge_rows in list(bridges.items()):
# Legacy: routerOBP/routerHBP to_target — if BRIDGES[_bridge] was removed mid-routing, skip
if _bridge_table_name not in bridges:
continue
if not any(_row_is_active_source(r) for r in _bridge_rows):
continue
for entry in _bridge_rows:

Loading…
Cancel
Save

Powered by TurnKey Linux.