Skip to content

Commit 51e033f

Browse files
minor change
1 parent 00fcaae commit 51e033f

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

deccom/protocols/keepalive.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class _KA:
99
attempts: int = 3
1010

1111
class KeepAlive(AbstractProtocol):
12-
def __init__(self, interval = 20, timeout = 10, submodule=None, callback: Callable[[tuple[str, int], bytes], None] = lambda addr,msg: ...):
12+
def __init__(self, interval = 20, timeout = 5, submodule=None, callback: Callable[[tuple[str, int], bytes], None] = lambda addr,msg: ...):
1313
assert timeout < interval
1414
self.keep_alives: dict[bytes,_KA] = dict()
1515
self.disconnected_callback = lambda *args: ...
@@ -47,10 +47,11 @@ def remove_peer(self, addr: tuple[str, int], node_id: bytes):
4747
if self.keep_alives.get(node_id) == None:
4848
return
4949
self.keep_alives[node_id].attempts -= 1
50-
50+
if self.keep_alives[node_id].attempts == 1:
51+
return asyncio.get_event_loop().create_task(self.send_ping(addr,lambda addr, id_node = node_id, self = self: self.resp(addr,id_node), lambda addr, id_node=node_id, self=self: self.remove_peer(addr, id_node),self.timeout))
5152
if self.keep_alives[node_id].attempts <= 0:
52-
if self.a_to_n.get(self.keep_alives[node_id].addr) != None:
53-
del self.a_to_n[self.keep_alives[node_id].addr]
53+
if self.a_to_n.get(addr) != None:
54+
del self.a_to_n[addr]
5455
del self.keep_alives[node_id]
5556
self.disconnected_callback(addr,node_id)
5657
def resp(self,addr,id_node):
@@ -72,7 +73,9 @@ def datagram_received(self, addr: tuple[str, int], data: bytes):
7273
def check_each(self):
7374
loop = asyncio.get_event_loop()
7475
for k,v in self.keep_alives.items():
75-
76+
if v.attempts <= 1:
77+
continue
78+
v.attempts = 2
7679
loop.create_task(self.send_ping(v.addr,lambda addr, id_node = k, self = self: self.resp(addr,id_node), lambda addr, id_node=k, self=self: self.remove_peer(addr, id_node),self.timeout))
7780

7881
self.refresh_loop = loop.call_later(self.interval, self.check_each)

0 commit comments

Comments
 (0)