URI: 
       tlnworker.pay(): lightning-integration support - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 646881f437ee651e464a4e391b186e3be30394f4
   DIR parent a071aafcc7b5be45f801fa03776e9ba63c3b1ce8
  HTML Author: Janus <ysangkok@gmail.com>
       Date:   Mon,  1 Oct 2018 18:06:47 +0200
       
       lnworker.pay(): lightning-integration support
       
       Diffstat:
         M electrum/commands.py                |       2 +-
         M electrum/gui/qt/main_window.py      |       2 +-
         M electrum/lnbase.py                  |       4 ++++
         M electrum/lnworker.py                |       2 +-
       
       4 files changed, 7 insertions(+), 3 deletions(-)
       ---
   DIR diff --git a/electrum/commands.py b/electrum/commands.py
       t@@ -775,7 +775,7 @@ class Commands:
        
            @command('wn')
            def lnpay(self, invoice):
       -        f = self.wallet.lnworker.pay(invoice)
       +        addr, peer, f = self.wallet.lnworker.pay(invoice)
                return f.result()
        
            @command('wn')
   DIR diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py
       t@@ -1683,7 +1683,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
                    failure_list = []
                    for i in range(LN_NUM_PAYMENT_ATTEMPTS):
                        try:
       -                    future = self.wallet.lnworker.pay(invoice, amount_sat=amount)
       +                    addr, peer, future = self.wallet.lnworker.pay(invoice, amount_sat=amount)
                            future.result()
                            break
                        except PaymentFailure as e:
   DIR diff --git a/electrum/lnbase.py b/electrum/lnbase.py
       t@@ -289,6 +289,7 @@ class Peer(PrintError):
                self.commitment_signed = defaultdict(asyncio.Queue)
                self.announcement_signatures = defaultdict(asyncio.Queue)
                self.closing_signed = defaultdict(asyncio.Queue)
       +        self.payment_preimages = defaultdict(asyncio.Queue)
                self.localfeatures = (0x08 if request_initial_sync else 0)
                self.invoices = lnworker.invoices
                self.attempted_route = {}
       t@@ -959,6 +960,9 @@ class Peer(PrintError):
                await self.receive_revoke(chan)
                self.lnworker.save_channel(chan)
        
       +        # used in lightning-integration
       +        self.payment_preimages[sha256(preimage)].put_nowait(preimage)
       +
            def on_update_fail_malformed_htlc(self, payload):
                self.on_error(payload)
        
   DIR diff --git a/electrum/lnworker.py b/electrum/lnworker.py
       t@@ -227,7 +227,7 @@ class LNWorker(PrintError):
                else:
                    raise Exception("ChannelDB returned path with short_channel_id {} that is not in channel list".format(bh2u(short_channel_id)))
                coro = peer.pay(path, chan, amount_msat, payment_hash, invoice_pubkey, addr.min_final_cltv_expiry)
       -        return asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop)
       +        return addr, peer, asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop)
        
            def add_invoice(self, amount_sat, message):
                payment_preimage = os.urandom(32)