Compare commits

..

No commits in common. "4f3da58a60f177cbb5363581a443dd2090ba6802" and "5337b0aba48377a8d7882f7f32afc42e6fbc0c48" have entirely different histories.

3 changed files with 8 additions and 27 deletions

View File

@ -1,4 +1,3 @@
import threading
from time import sleep
from typing import TYPE_CHECKING, Set
from os import urandom
@ -11,7 +10,6 @@ if TYPE_CHECKING:
from onionrthreads import add_onionr_thread
import onionrplugins
import logger
from .connectpeer import connect_peer
from .client import gossip_client
@ -46,18 +44,8 @@ def start_gossip_threads(
add_onionr_thread(
gossip_server, 1, peer_set, block_queue, seed, initial_sleep=0.2)
threading.Thread(
target=gossip_client,
args=[peer_set, block_queue, seed], daemon=True).start()
add_onionr_thread(
gossip_client, 1, peer_set, block_queue, seed, initial_sleep=0)
onionrplugins.events.event('gossip_start', data=peer_set, threaded=True)
for _ in range(2):
onionrplugins.events.event(
'bootstrap', data={'peer_set': peer_set, 'callback': connect_peer},
threaded=False)
sleep(60)
if len(peer_set):
return
logger.error("Could not connect to any peers :(", terminal=True)
onionrplugins.events.event(
'bootstrap', data={'peer_set': peer_set, 'callback': connect_peer})

View File

@ -1,16 +1,11 @@
from gossip.commands import GossipCommands, command_to_byte
import logger
def connect_peer(peer_set, peer):
if peer in peer_set:
return
try:
s = peer.get_socket()
peer.get_socket()
except Exception:
logger.warn(f"Could not connect to {peer.transport_address}")
else:
s.sendall(command_to_byte(GossipCommands.CLOSE))
s.close()
peer_set.add(peer)
logger.info(f"connected to {peer.transport_address}")

View File

@ -39,7 +39,7 @@ def gossip_server(
try:
cmd = await asyncio.wait_for(reader.read(1), 60)
except asyncio.exceptions.CancelledError:
break
writer.close()
cmd = int.from_bytes(cmd, 'big')
if cmd == b'' or cmd == 0:
@ -48,7 +48,7 @@ def gossip_server(
case GossipCommands.PING:
writer.write(b'PONG')
case GossipCommands.CLOSE:
pass
writer.close()
case GossipCommands.ANNOUNCE:
async def _read_announce():
address = await reader.read(56)
@ -60,10 +60,8 @@ def gossip_server(
threaded=True)
writer.write(int(1).to_bytes(1, 'big'))
await asyncio.wait_for(_read_announce(), 10)
break
await writer.drain()
writer.close()
await writer.drain()
async def main():