Fixed missing path state resetting on stale path rediscovery

This commit is contained in:
Mark Qvist 2023-11-02 16:15:42 +01:00
parent 4b26a86a73
commit 5e39136dff

View File

@ -1349,6 +1349,7 @@ class Transport:
# TODO: Check whether this approach works # TODO: Check whether this approach works
# under all circumstances # under all circumstances
if not random_blob in random_blobs: if not random_blob in random_blobs:
Transport.mark_path_unknown_state(packet.destination_hash)
should_add = True should_add = True
else: else:
should_add = False should_add = False
@ -1376,6 +1377,7 @@ class Transport:
# TODO: Check that this ^ approach actually # TODO: Check that this ^ approach actually
# works under all circumstances # works under all circumstances
RNS.log("Replacing destination table entry for "+str(RNS.prettyhexrep(packet.destination_hash))+" with new announce due to expired path", RNS.LOG_DEBUG) RNS.log("Replacing destination table entry for "+str(RNS.prettyhexrep(packet.destination_hash))+" with new announce due to expired path", RNS.LOG_DEBUG)
Transport.mark_path_unknown_state(packet.destination_hash)
should_add = True should_add = True
else: else:
should_add = False should_add = False
@ -1386,6 +1388,7 @@ class Transport:
if (announce_emitted > path_announce_emitted): if (announce_emitted > path_announce_emitted):
if not random_blob in random_blobs: if not random_blob in random_blobs:
RNS.log("Replacing destination table entry for "+str(RNS.prettyhexrep(packet.destination_hash))+" with new announce, since it was more recently emitted", RNS.LOG_DEBUG) RNS.log("Replacing destination table entry for "+str(RNS.prettyhexrep(packet.destination_hash))+" with new announce, since it was more recently emitted", RNS.LOG_DEBUG)
Transport.mark_path_unknown_state(packet.destination_hash)
should_add = True should_add = True
else: else:
should_add = False should_add = False
@ -2097,6 +2100,22 @@ class Transport:
else: else:
return False return False
@staticmethod
def mark_path_responsive(destination_hash):
if destination_hash in Transport.destination_table:
Transport.path_states[destination_hash] = Transport.STATE_RESPONSIVE
return True
else:
return False
@staticmethod
def mark_path_unknown_state(destination_hash):
if destination_hash in Transport.destination_table:
Transport.path_states[destination_hash] = Transport.STATE_UNKNOWN
return True
else:
return False
def path_is_unresponsive(destination_hash): def path_is_unresponsive(destination_hash):
if destination_hash in Transport.path_states: if destination_hash in Transport.path_states:
if Transport.path_states[destination_hash] == Transport.STATE_UNRESPONSIVE: if Transport.path_states[destination_hash] == Transport.STATE_UNRESPONSIVE: