Browse Source

raise PaymentFailure in case of timeout (follow-up previous commit)

master
ThomasV 7 years ago
parent
commit
50479086b5
  1. 1
      electrum/gui/qt/main_window.py
  2. 7
      electrum/lnworker.py

1
electrum/gui/qt/main_window.py

@ -1687,7 +1687,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
elif isinstance(e, InvoiceError): elif isinstance(e, InvoiceError):
self.show_error(_('InvoiceError: {}').format(e)) self.show_error(_('InvoiceError: {}').format(e))
else: else:
self.show_error(_('Error: {}').format(e))
raise e raise e
def task(): def task():
success = self.wallet.lnworker.pay(invoice, attempts=LN_NUM_PAYMENT_ATTEMPTS, amount_sat=amount, timeout=30) success = self.wallet.lnworker.pay(invoice, attempts=LN_NUM_PAYMENT_ATTEMPTS, amount_sat=amount, timeout=30)

7
electrum/lnworker.py

@ -14,6 +14,7 @@ import json
from datetime import datetime, timezone from datetime import datetime, timezone
from functools import partial from functools import partial
from collections import defaultdict from collections import defaultdict
import concurrent
import dns.resolver import dns.resolver
import dns.exception import dns.exception
@ -660,7 +661,11 @@ class LNWallet(LNWorker):
fut = asyncio.run_coroutine_threadsafe( fut = asyncio.run_coroutine_threadsafe(
self._pay(invoice, attempts, amount_sat), self._pay(invoice, attempts, amount_sat),
self.network.asyncio_loop) self.network.asyncio_loop)
return fut.result(timeout=timeout) try:
return fut.result(timeout=timeout)
except concurrent.futures.TimeoutError:
raise PaymentFailure(_("Payment timed out"))
def get_channel_by_short_id(self, short_channel_id): def get_channel_by_short_id(self, short_channel_id):
with self.lock: with self.lock:

Loading…
Cancel
Save