tlnpay: return payment log, increase timeout - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 7b44e270877a7604cae81f824f742e824d7ce5d8 DIR parent d7b853f2716acb2808278e552987bf598821a4e4 HTML Author: ThomasV <thomasv@electrum.org> Date: Tue, 5 May 2020 18:32:43 +0200 lnpay: return payment log, increase timeout Diffstat: M electrum/commands.py | 6 ++++-- M electrum/lnworker.py | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) --- DIR diff --git a/electrum/commands.py b/electrum/commands.py t@@ -1005,16 +1005,17 @@ class Commands: return parse_lightning_invoice(invoice) @command('wn') - async def lnpay(self, invoice, attempts=1, timeout=10, wallet: Abstract_Wallet = None): + async def lnpay(self, invoice, attempts=1, timeout=30, wallet: Abstract_Wallet = None): lnworker = wallet.lnworker lnaddr = lnworker._check_invoice(invoice, None) payment_hash = lnaddr.paymenthash wallet.save_invoice(parse_lightning_invoice(invoice)) - success = await lnworker._pay(invoice, attempts=attempts) + success, log = await lnworker._pay(invoice, attempts=attempts) return { 'payment_hash': payment_hash.hex(), 'success': success, 'preimage': lnworker.get_preimage(payment_hash).hex() if success else None, + 'log': [x.formatted_tuple() for x in log] } @command('w') t@@ -1202,6 +1203,7 @@ arg_types = { 'encrypt_file': eval_bool, 'rbf': eval_bool, 'timeout': float, + 'attempts': int, } config_variables = { DIR diff --git a/electrum/lnworker.py b/electrum/lnworker.py t@@ -807,7 +807,7 @@ class LNWallet(LNWorker): """ coro = self._pay(invoice, amount_sat, attempts) fut = asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop) - success = fut.result() + success, log = fut.result() def get_channel_by_short_id(self, short_channel_id: ShortChannelID) -> Channel: for chan in self.channels.values(): t@@ -827,7 +827,7 @@ class LNWallet(LNWorker): info = PaymentInfo(lnaddr.paymenthash, amount, SENT, PR_UNPAID) self.save_payment_info(info) self.wallet.set_label(key, lnaddr.get_description()) - log = self.logs[key] + self.logs[key] = log = [] success = False reason = '' for i in range(attempts): t@@ -856,7 +856,7 @@ class LNWallet(LNWorker): util.trigger_callback('payment_succeeded', key) else: util.trigger_callback('payment_failed', key, reason) - return success + return success, log async def _pay_to_route(self, route: LNPaymentRoute, lnaddr: LnAddr) -> PaymentAttemptLog: short_channel_id = route[0].short_channel_id