Mark path unresponsive when link establishment fails due to potential interface-local destination roaming

This commit is contained in:
Mark Qvist 2024-05-19 12:35:38 +02:00
parent ba2feaa211
commit 0bb1108771
1 changed files with 6 additions and 1 deletions

View File

@ -482,12 +482,17 @@ class Transport:
# If the link destination was previously only 1 hop # If the link destination was previously only 1 hop
# away, this likely means that it was local to one # away, this likely means that it was local to one
# of our interfaces, and that it roamed somewhere else. # of our interfaces, and that it roamed somewhere else.
# In that case, try to discover a new path. # In that case, try to discover a new path, and mark
# the old one as unresponsive.
elif not path_request_throttle and Transport.hops_to(link_entry[6]) == 1: elif not path_request_throttle and Transport.hops_to(link_entry[6]) == 1:
RNS.log("Trying to rediscover path for "+RNS.prettyhexrep(link_entry[6])+" since an attempted link was never established, and destination was previously local to an interface on this instance", RNS.LOG_DEBUG) RNS.log("Trying to rediscover path for "+RNS.prettyhexrep(link_entry[6])+" since an attempted link was never established, and destination was previously local to an interface on this instance", RNS.LOG_DEBUG)
path_request_conditions = True path_request_conditions = True
blocked_if = link_entry[4] blocked_if = link_entry[4]
if RNS.Reticulum.transport_enabled():
if hasattr(link_entry[4], "mode") and link_entry[4].mode != RNS.Interfaces.Interface.Interface.MODE_BOUNDARY:
Transport.mark_path_unresponsive(link_entry[6])
# If the link initiator is only 1 hop away, # If the link initiator is only 1 hop away,
# this likely means that network topology has # this likely means that network topology has
# changed. In that case, we try to discover a new path, # changed. In that case, we try to discover a new path,