From 50479086b5b6c0bd3ebe9e597bcd37fbb6d97372 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Thu, 30 May 2019 21:46:30 +0200 Subject: [PATCH] raise PaymentFailure in case of timeout (follow-up previous commit) --- electrum/gui/qt/main_window.py | 1 - electrum/lnworker.py | 7 ++++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py index 41585acee..907db59f8 100644 --- a/electrum/gui/qt/main_window.py +++ b/electrum/gui/qt/main_window.py @@ -1687,7 +1687,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): elif isinstance(e, InvoiceError): self.show_error(_('InvoiceError: {}').format(e)) else: - self.show_error(_('Error: {}').format(e)) raise e def task(): success = self.wallet.lnworker.pay(invoice, attempts=LN_NUM_PAYMENT_ATTEMPTS, amount_sat=amount, timeout=30) diff --git a/electrum/lnworker.py b/electrum/lnworker.py index 66c85df49..414a6f4b8 100644 --- a/electrum/lnworker.py +++ b/electrum/lnworker.py @@ -14,6 +14,7 @@ import json from datetime import datetime, timezone from functools import partial from collections import defaultdict +import concurrent import dns.resolver import dns.exception @@ -660,7 +661,11 @@ class LNWallet(LNWorker): fut = asyncio.run_coroutine_threadsafe( self._pay(invoice, attempts, amount_sat), 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): with self.lock: