URI: 
       tclean-up Peer init - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 9de6028fb56db9fc3bc39631f99c21ec9b24e7ed
   DIR parent 25c265768025e5d01aaab26a84a767726bbb6607
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Wed, 17 Oct 2018 01:50:36 +0200
       
       clean-up Peer init
       
       Diffstat:
         M electrum/lnbase.py                  |      10 ++++++++--
         M electrum/lntransport.py             |       3 ++-
         M electrum/lnworker.py                |      16 ++++++----------
       
       3 files changed, 16 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/electrum/lnbase.py b/electrum/lnbase.py
       t@@ -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):
       t@@ -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
       t@@ -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)
        
   DIR diff --git a/electrum/lntransport.py b/electrum/lntransport.py
       t@@ -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"
       t@@ -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))
   DIR diff --git a/electrum/lnworker.py b/electrum/lnworker.py
       t@@ -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
       t@@ -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
       t@@ -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')