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)