From e5f21fb7b59a9206f903b4daa1054afc2f05a3b2 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Tue, 20 Sep 2022 16:00:20 +0000 Subject: [PATCH] lnurl: better handle unimplemented lnurl subtypes fixes https://github.com/spesmilo/electrum/issues/7971 --- electrum/gui/kivy/uix/screens.py | 9 ++++++--- electrum/lnurl.py | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/electrum/gui/kivy/uix/screens.py b/electrum/gui/kivy/uix/screens.py index 5070f3815..301860306 100644 --- a/electrum/gui/kivy/uix/screens.py +++ b/electrum/gui/kivy/uix/screens.py @@ -237,9 +237,12 @@ class SendScreen(CScreen, Logger): def set_lnurl6(self, lnurl: str): url = decode_lnurl(lnurl) domain = urlparse(url).netloc - # FIXME network request blocking GUI thread: - lnurl_data = Network.run_from_another_thread(request_lnurl(url)) - if not lnurl_data: + try: + # FIXME network request blocking GUI thread: + lnurl_data = Network.run_from_another_thread(request_lnurl(url)) + except LNURLError as e: + self.app.show_error(f"LNURL request encountered error: {e}") + self.do_clear() return self.lnurl_data = lnurl_data self.address = "invoice from lnurl" diff --git a/electrum/lnurl.py b/electrum/lnurl.py index 28e9ab93b..e41a73b58 100644 --- a/electrum/lnurl.py +++ b/electrum/lnurl.py @@ -66,11 +66,11 @@ async def _request_lnurl(url: str) -> dict: return response -async def request_lnurl(url: str) -> Optional[LNURL6Data]: +async def request_lnurl(url: str) -> LNURL6Data: lnurl_dict = await _request_lnurl(url) tag = lnurl_dict.get('tag') if tag != 'payRequest': # only LNURL6 is handled atm - return None + raise LNURLError(f"Unknown subtype of lnurl. tag={tag}") metadata = lnurl_dict.get('metadata') metadata_plaintext = "" for m in metadata: