URI: 
       tlnbase: handle error during channel establishment - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 7bd3cbf5672b9c431cae071b94e51b6c023c4d21
   DIR parent 78119f9733c1ec7620b6c0677d71310bb9abb5d6
  HTML Author: Janus <ysangkok@gmail.com>
       Date:   Thu, 12 Apr 2018 11:12:21 +0200
       
       lnbase: handle error during channel establishment
       
       Diffstat:
         M lib/lnbase.py                       |      14 +++++++++++---
       
       1 file changed, 11 insertions(+), 3 deletions(-)
       ---
   DIR diff --git a/lib/lnbase.py b/lib/lnbase.py
       t@@ -27,7 +27,8 @@ from .storage import WalletStorage
        tcp_socket_timeout = 10
        server_response_timeout = 60
        
       -###############################
       +class LightningError(Exception):
       +    pass
        
        message_types = {}
        
       t@@ -307,6 +308,9 @@ class Peer(PrintError):
                    return
                f(payload)
        
       +    def on_error(self, payload):
       +        self.temporary_channel_id_to_incoming_accept_channel[payload["channel_id"]].set_exception(LightningError(payload["data"]))
       +
            def on_ping(self, payload):
                l = int.from_bytes(payload['num_pong_bytes'], byteorder="big")
                self.send_message(gen_msg('pong', byteslen=l))
       t@@ -352,8 +356,12 @@ class Peer(PrintError):
                msg = gen_msg("open_channel", temporary_channel_id=temp_channel_id, chain_hash=bytes.fromhex(rev_hex(constants.net.GENESIS)), funding_satoshis=20000, max_accepted_htlcs=5, funding_pubkey=next(pubkeys), revocation_basepoint=next(pubkeys), htlc_basepoint=next(pubkeys), payment_basepoint=next(pubkeys), delayed_payment_basepoint=next(pubkeys), first_per_commitment_point=next(pubkeys))
                self.temporary_channel_id_to_incoming_accept_channel[temp_channel_id] = asyncio.Future()
                self.send_message(msg)
       -        accept_channel = await self.temporary_channel_id_to_incoming_accept_channel[temp_channel_id]
       -        del self.temporary_channel_id_to_incoming_accept_channel[temp_channel_id]
       +        try:
       +            accept_channel = await self.temporary_channel_id_to_incoming_accept_channel[temp_channel_id]
       +        except LightningError:
       +            return
       +        finally:
       +            del self.temporary_channel_id_to_incoming_accept_channel[temp_channel_id]
        
                # check that it is in my pending requests
                # I need to attach a wallet to each request