2022-06-05 20:11:53 +00:00
|
|
|
import traceback
|
2022-02-27 19:34:16 +00:00
|
|
|
from gossip.commands import GossipCommands, command_to_byte
|
2022-03-21 06:03:53 +00:00
|
|
|
from .peerset import gossip_peer_set
|
|
|
|
|
2022-02-26 07:07:18 +00:00
|
|
|
import logger
|
|
|
|
|
|
|
|
|
2022-03-21 06:03:53 +00:00
|
|
|
def connect_peer(peer):
|
|
|
|
if peer in gossip_peer_set:
|
2022-02-27 19:34:16 +00:00
|
|
|
return
|
2022-02-26 07:07:18 +00:00
|
|
|
try:
|
2022-06-05 20:11:53 +00:00
|
|
|
s = peer.get_socket(120)
|
2022-02-26 07:07:18 +00:00
|
|
|
except Exception:
|
|
|
|
logger.warn(f"Could not connect to {peer.transport_address}")
|
2022-06-05 20:11:53 +00:00
|
|
|
logger.warn(traceback.format_exc())
|
2022-02-26 07:07:18 +00:00
|
|
|
else:
|
2022-06-05 20:11:53 +00:00
|
|
|
with s:
|
|
|
|
s.sendall(command_to_byte(GossipCommands.PING))
|
|
|
|
|
|
|
|
if s.recv(4).decode('utf-8') == 'PONG':
|
|
|
|
gossip_peer_set.add(peer)
|
|
|
|
logger.info(f"connected to {peer.transport_address}", terminal=True)
|