fix(scan): _db_complete_blocklist must return sets, not lists

B001 change caused 'unsupported operand type(s) for -: list and set' during a
full consolidated scan: _db_complete_blocklist returned split_cidr_versions()
output, which is tuple[list, list], but write_blocklist_report()/blocklist_delta()
expect set operands. Return set(v4), set(v6) to match cumulative_blocklist's
contract. Reproduced the exact report path with a populated ledger and
verified it no longer crashes.
This commit is contained in:
zwitschi committed 2026-10-24 20:00:59 +02:00
1 parent 6051d2b548
commit 714aaf901e
1 file changed
+6 -5
+6 -5
View File
@@ -63,10 +63,11 @@ def _sync_blocklist_to_db(connected: bool, desired_v4: list[str],
def _db_complete_blocklist(desired_v4: list[str], desired_v6: list[str]): def _db_complete_blocklist(desired_v4: list[str], desired_v6: list[str]):
"""Complete cumulative blocklist from the DB ledger (B001). """Complete cumulative blocklist from the DB ledger (B001).
Returns ``(complete_v4, complete_v6)`` derived from the active blocklist Returns ``(complete_v4, complete_v6)`` as **sets** (same contract as
ledger plus this scan's newly desired targets (in case the DB write for ``cumulative_blocklist``) derived from the active blocklist ledger plus
this scan has not run yet). Falls back to the git-history reconstruction this scan's newly desired targets (in case the DB write for this scan has
when the DB is unavailable, so nothing regresses. not run yet). Falls back to the git-history reconstruction when the DB is
unavailable, so nothing regresses.
""" """
try: try:
from ..db import get_connection from ..db import get_connection
@@ -77,7 +78,7 @@ def _db_complete_blocklist(desired_v4: list[str], desired_v6: list[str]):
active = [] active = []
union = set(active) | set(desired_v4) | set(desired_v6) union = set(active) | set(desired_v4) | set(desired_v6)
v4, v6 = split_cidr_versions(union) v4, v6 = split_cidr_versions(union)
return v4, v6 return set(v4), set(v6)
@dataclass @dataclass