mirror of
https://github.com/markqvist/LXMF.git
synced 2025-11-20 23:43:21 -05:00
Also receive PN path response announces, but only update peering data on live announces
This commit is contained in:
parent
3f91e44a6d
commit
0f2d3b06c2
1 changed files with 43 additions and 42 deletions
|
|
@ -35,53 +35,54 @@ class LXMFDeliveryAnnounceHandler:
|
||||||
class LXMFPropagationAnnounceHandler:
|
class LXMFPropagationAnnounceHandler:
|
||||||
def __init__(self, lxmrouter):
|
def __init__(self, lxmrouter):
|
||||||
self.aspect_filter = APP_NAME+".propagation"
|
self.aspect_filter = APP_NAME+".propagation"
|
||||||
self.receive_path_responses = False
|
self.receive_path_responses = True
|
||||||
self.lxmrouter = lxmrouter
|
self.lxmrouter = lxmrouter
|
||||||
|
|
||||||
def received_announce(self, destination_hash, announced_identity, app_data):
|
def received_announce(self, destination_hash, announced_identity, app_data, announce_packet_hash, is_path_response):
|
||||||
try:
|
if not is_path_response:
|
||||||
if type(app_data) == bytes:
|
try:
|
||||||
if self.lxmrouter.propagation_node:
|
if type(app_data) == bytes:
|
||||||
data = msgpack.unpackb(app_data)
|
if self.lxmrouter.propagation_node:
|
||||||
if pn_announce_data_is_valid(data):
|
data = msgpack.unpackb(app_data)
|
||||||
node_timebase = data[1]
|
if pn_announce_data_is_valid(data):
|
||||||
propagation_transfer_limit = None
|
node_timebase = data[1]
|
||||||
propagation_sync_limit = None
|
propagation_transfer_limit = None
|
||||||
wanted_inbound_peers = None
|
propagation_sync_limit = None
|
||||||
if len(data) >= 5:
|
wanted_inbound_peers = None
|
||||||
try: propagation_sync_limit = int(data[4])
|
if len(data) >= 5:
|
||||||
except Exception as e: propagation_sync_limit = None
|
try: propagation_sync_limit = int(data[4])
|
||||||
|
except Exception as e: propagation_sync_limit = None
|
||||||
|
|
||||||
if len(data) >= 4:
|
if len(data) >= 4:
|
||||||
# TODO: Rethink, probably not necessary anymore
|
# TODO: Rethink, probably not necessary anymore
|
||||||
# try: wanted_inbound_peers = int(data[3])
|
# try: wanted_inbound_peers = int(data[3])
|
||||||
# except: wanted_inbound_peers = None
|
# except: wanted_inbound_peers = None
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if len(data) >= 3:
|
if len(data) >= 3:
|
||||||
try: propagation_transfer_limit = float(data[2])
|
try: propagation_transfer_limit = float(data[2])
|
||||||
except: propagation_transfer_limit = None
|
except: propagation_transfer_limit = None
|
||||||
|
|
||||||
if destination_hash in self.lxmrouter.static_peers:
|
if destination_hash in self.lxmrouter.static_peers:
|
||||||
self.lxmrouter.peer(destination_hash=destination_hash,
|
self.lxmrouter.peer(destination_hash=destination_hash,
|
||||||
timestamp=node_timebase,
|
timestamp=node_timebase,
|
||||||
propagation_transfer_limit=propagation_transfer_limit,
|
propagation_transfer_limit=propagation_transfer_limit,
|
||||||
propagation_sync_limit=propagation_sync_limit,
|
propagation_sync_limit=propagation_sync_limit,
|
||||||
wanted_inbound_peers=wanted_inbound_peers)
|
wanted_inbound_peers=wanted_inbound_peers)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if self.lxmrouter.autopeer:
|
if self.lxmrouter.autopeer:
|
||||||
if data[0] == True:
|
if data[0] == True:
|
||||||
if RNS.Transport.hops_to(destination_hash) <= self.lxmrouter.autopeer_maxdepth:
|
if RNS.Transport.hops_to(destination_hash) <= self.lxmrouter.autopeer_maxdepth:
|
||||||
self.lxmrouter.peer(destination_hash=destination_hash,
|
self.lxmrouter.peer(destination_hash=destination_hash,
|
||||||
timestamp=node_timebase,
|
timestamp=node_timebase,
|
||||||
propagation_transfer_limit=propagation_transfer_limit,
|
propagation_transfer_limit=propagation_transfer_limit,
|
||||||
propagation_sync_limit=propagation_sync_limit,
|
propagation_sync_limit=propagation_sync_limit,
|
||||||
wanted_inbound_peers=wanted_inbound_peers)
|
wanted_inbound_peers=wanted_inbound_peers)
|
||||||
|
|
||||||
elif data[0] == False:
|
elif data[0] == False:
|
||||||
self.lxmrouter.unpeer(destination_hash, node_timebase)
|
self.lxmrouter.unpeer(destination_hash, node_timebase)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
RNS.log("Error while evaluating propagation node announce, ignoring announce.", RNS.LOG_DEBUG)
|
RNS.log("Error while evaluating propagation node announce, ignoring announce.", RNS.LOG_DEBUG)
|
||||||
RNS.log("The contained exception was: "+str(e), RNS.LOG_DEBUG)
|
RNS.log("The contained exception was: "+str(e), RNS.LOG_DEBUG)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue