Make a session-wide set of junk vectors to not request repeatedly

This commit is contained in:
Lee Miller 2023-03-27 07:58:38 +03:00
parent 46ea5e0744
commit 44aaccb7a4
Signed by: lee.miller
GPG Key ID: 4F97A5EA88F4AB63
2 changed files with 4 additions and 0 deletions

View File

@ -384,6 +384,7 @@ class Connection(threading.Thread):
logging.debug('%s:%s -> %s', self.host_print, self.port, inv)
to_get = inv.vectors.copy()
to_get.difference_update(shared.objects.keys())
to_get.difference_update(shared.junk_vectors)
self.vectors_to_get.update(to_get)
# Do not send objects they already have.
self.vectors_to_send.difference_update(inv.vectors)
@ -395,6 +396,8 @@ class Connection(threading.Thread):
self.vectors_to_get.discard(obj.vector)
if obj.is_valid() and obj.vector not in shared.objects:
with shared.objects_lock:
if obj.is_junk():
return shared.junk_vectors.add(obj.vector)
shared.objects[obj.vector] = obj
if (
obj.object_type == shared.i2p_dest_obj_type

View File

@ -65,4 +65,5 @@ outgoing_connections = 8
connection_limit = 250
objects = {}
junk_vectors = set()
objects_lock = threading.Lock()