diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py index cd6cbac6..d59a6285 100644 --- a/gui/qt/main_window.py +++ b/gui/qt/main_window.py @@ -1914,7 +1914,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): console.updateNamespace({'wallet' : self.wallet, 'network' : self.network, 'plugins' : self.gui_object.plugins, - 'lightning' : self.gui_object.lightning, + 'l' : self.gui_object.lightning, 'window': self}) console.updateNamespace({'util' : util, 'bitcoin':bitcoin}) diff --git a/lib/lightning.py b/lib/lightning.py index 463b6953..65b93b6c 100644 --- a/lib/lightning.py +++ b/lib/lightning.py @@ -598,7 +598,7 @@ class LightningRPC: self.subscribers = [] # overridden async def run(self, netAndWalLock): - while True: + while asyncio.get_event_loop().is_running(): try: qitem = self.queue.get(block=False) except queue.Empty: @@ -681,7 +681,7 @@ class LightningWorker: wasAlreadyUpToDate = False - while True: + while asyncio.get_event_loop().is_running(): WALLET = self.wallet() NETWORK = self.network() CONFIG = self.config() @@ -704,7 +704,7 @@ class LightningWorker: writer.write(b"MAGIC") writer.write(privateKeyHash[:6]) await asyncio.wait_for(writer.drain(), 5) - while True: + while asyncio.get_event_loop().is_running(): obj = await readJson(reader) if not obj: continue if "id" not in obj: @@ -721,13 +721,12 @@ class LightningWorker: async def readJson(reader): data = b"" - while True: + while asyncio.get_event_loop().is_running(): newlines = sum(1 if x == b"\n"[0] else 0 for x in data) if newlines > 1: print("Too many newlines in Electrum/lightning.py!", data) try: return json.loads(data) except ValueError: - if data != b"": print("parse failed, data has", data) try: data += await asyncio.wait_for(reader.read(1), 1) except TimeoutError: diff --git a/lib/network.py b/lib/network.py index 36760ac6..08881d6a 100644 --- a/lib/network.py +++ b/lib/network.py @@ -1052,9 +1052,11 @@ class Network(util.DaemonThread): networkAndWalletLock.release() networkAndWalletLock.acquire() loop.stop() - while loop.is_running(): - pass - loop.close() + if loop.is_running(): time.sleep(0.1) + try: + loop.close() + except: + pass self.stop_network() self.on_stop()