mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-23 17:47:31 +00:00
clean-up Peer init
This commit is contained in:
parent
25c2657680
commit
9de6028fb5
3 changed files with 16 additions and 13 deletions
|
@ -34,6 +34,7 @@ from .lnutil import (Outpoint, LocalConfig, ChannelConfig,
|
|||
get_ln_flag_pair_of_bit, privkey_to_pubkey)
|
||||
from .lnutil import LightningPeerConnectionClosed, HandshakeFailed
|
||||
from .lnrouter import NotFoundChanAnnouncementForUpdate, RouteEdge
|
||||
from .lntransport import LNTransport
|
||||
|
||||
|
||||
def channel_id_from_funding_tx(funding_txid, funding_index):
|
||||
|
@ -190,9 +191,9 @@ def gen_msg(msg_type: str, **kwargs) -> bytes:
|
|||
|
||||
class Peer(PrintError):
|
||||
|
||||
def __init__(self, lnworker, peer_addr, request_initial_sync=False):
|
||||
def __init__(self, lnworker, peer_addr, request_initial_sync=False, transport=None):
|
||||
self.initialized = asyncio.Future()
|
||||
self.transport = None
|
||||
self.transport = transport
|
||||
self.peer_addr = peer_addr
|
||||
self.lnworker = lnworker
|
||||
self.privkey = lnworker.node_keypair.privkey
|
||||
|
@ -222,6 +223,11 @@ class Peer(PrintError):
|
|||
self.transport.send_bytes(gen_msg(message_name, **kwargs))
|
||||
|
||||
async def initialize(self):
|
||||
if not self.transport:
|
||||
reader, writer = await asyncio.open_connection(self.peer_addr.host, self.peer_addr.port)
|
||||
transport = LNTransport(self.privkey, self.peer_addr.pubkey, reader, writer)
|
||||
await transport.handshake()
|
||||
self.transport = transport
|
||||
self.send_message("init", gflen=0, lflen=1, localfeatures=self.localfeatures)
|
||||
self.initialized.set_result(True)
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ from .crypto import sha256
|
|||
from .lnutil import get_ecdh, privkey_to_pubkey
|
||||
from .lnutil import LightningPeerConnectionClosed, HandshakeFailed
|
||||
from . import ecc
|
||||
from .util import bh2u
|
||||
|
||||
class HandshakeState(object):
|
||||
prologue = b"lightning"
|
||||
|
@ -203,7 +204,7 @@ class LNTransport(LNTransportBase):
|
|||
self.writer.write(msg)
|
||||
rspns = await self.reader.read(2**10)
|
||||
if len(rspns) != 50:
|
||||
raise HandshakeFailed("Lightning handshake act 1 response has bad length, are you sure this is the right pubkey? " + str(bh2u(self.pubkey)))
|
||||
raise HandshakeFailed(f"Lightning handshake act 1 response has bad length, are you sure this is the right pubkey? {bh2u(self.remote_pubkey)}")
|
||||
hver, alice_epub, tag = rspns[0], rspns[1:34], rspns[34:]
|
||||
if bytes([hver]) != hs.handshake_version:
|
||||
raise HandshakeFailed("unexpected handshake version: {}".format(hver))
|
||||
|
|
|
@ -16,7 +16,7 @@ from . import bitcoin
|
|||
from .keystore import BIP32_KeyStore
|
||||
from .bitcoin import sha256, COIN
|
||||
from .util import bh2u, bfh, PrintError, InvoiceError, resolve_dns_srv, is_ip_address, log_exceptions
|
||||
from .lntransport import LNTransport, LNResponderTransport
|
||||
from .lntransport import LNResponderTransport
|
||||
from .lnbase import Peer
|
||||
from .lnaddr import lnencode, LnAddr, lndecode
|
||||
from .ecc import der_sig_from_sig_string
|
||||
|
@ -116,13 +116,7 @@ class LNWorker(PrintError):
|
|||
self._last_tried_peer[peer_addr] = time.time()
|
||||
self.print_error("adding peer", peer_addr)
|
||||
peer = Peer(self, peer_addr, request_initial_sync=self.config.get("request_initial_sync", True))
|
||||
async def _init_peer():
|
||||
reader, writer = await asyncio.open_connection(peer_addr.host, peer_addr.port)
|
||||
transport = LNTransport(self.node_keypair.privkey, node_id, reader, writer)
|
||||
await transport.handshake()
|
||||
peer.transport = transport
|
||||
await self.network.main_taskgroup.spawn(peer.main_loop())
|
||||
asyncio.ensure_future(_init_peer())
|
||||
await self.network.main_taskgroup.spawn(peer.main_loop())
|
||||
self.peers[node_id] = peer
|
||||
self.network.trigger_callback('ln_status')
|
||||
return peer
|
||||
|
@ -525,8 +519,10 @@ class LNWorker(PrintError):
|
|||
async def cb(reader, writer):
|
||||
t = LNResponderTransport(self.node_keypair.privkey, reader, writer)
|
||||
node_id = await t.handshake()
|
||||
peer = Peer(self, LNPeerAddr("bogus", 1337, node_id), request_initial_sync=self.config.get("request_initial_sync", True))
|
||||
peer.transport = t
|
||||
# FIXME extract host and port from transport
|
||||
peer = Peer(self, LNPeerAddr("bogus", 1337, node_id),
|
||||
request_initial_sync=self.config.get("request_initial_sync", True),
|
||||
transport=t)
|
||||
self.peers[node_id] = peer
|
||||
await self.network.main_taskgroup.spawn(peer.main_loop())
|
||||
self.network.trigger_callback('ln_status')
|
||||
|
|
Loading…
Add table
Reference in a new issue