Added invalid discovery stamp cache

This commit is contained in:
Mark Qvist
2026-07-20 12:57:49 +02:00
parent 2c9edc43f1
commit 2b79db03c0
+8
View File
@@ -8,6 +8,7 @@ import ipaddress
import subprocess import subprocess
from threading import Lock from threading import Lock
from .vendor import umsgpack as msgpack from .vendor import umsgpack as msgpack
from collections import deque
NAME = 0xFF NAME = 0xFF
TRANSPORT_ID = 0xFE TRANSPORT_ID = 0xFE
@@ -228,6 +229,7 @@ class InterfaceAnnounceHandler:
self.required_value = required_value self.required_value = required_value
self.callback = callback self.callback = callback
self.stamper = LXStamper self.stamper = LXStamper
self.invalid_cache = deque(maxlen=2048)
@staticmethod @staticmethod
def sanitize_name(name): def sanitize_name(name):
@@ -250,6 +252,11 @@ class InterfaceAnnounceHandler:
app_data = app_data[1:] app_data = app_data[1:]
signed = flags & self.FLAG_SIGNED signed = flags & self.FLAG_SIGNED
encrypted = flags & self.FLAG_ENCRYPTED encrypted = flags & self.FLAG_ENCRYPTED
fullhash = RNS.Identity.full_hash(app_data)
if fullhash in self.invalid_cache:
RNS.log(f"Ignored previously discovered interface with insufficient stamp value", RNS.LOG_PATHING) if RNS.sl(RNS.LOG_PATHING) else None
return
if encrypted: if encrypted:
if not RNS.Transport.has_network_identity(): return if not RNS.Transport.has_network_identity(): return
@@ -265,6 +272,7 @@ class InterfaceAnnounceHandler:
if not valid: if not valid:
RNS.log(f"Ignored discovered interface with insufficient stamp value {value}", RNS.LOG_DEBUG) if RNS.sl(RNS.LOG_DEBUG) else None RNS.log(f"Ignored discovered interface with insufficient stamp value {value}", RNS.LOG_DEBUG) if RNS.sl(RNS.LOG_DEBUG) else None
self.invalid_cache.append(fullhash)
return return
if value < self.required_value: RNS.log(f"Ignored discovered interface with stamp value {value}", RNS.LOG_DEBUG) if value < self.required_value: RNS.log(f"Ignored discovered interface with stamp value {value}", RNS.LOG_DEBUG)