From 7b6274eaffd64acc9f219447b09ae2391271cea3 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Sat, 29 Oct 2022 03:14:12 +0000 Subject: [PATCH] daemon: better error msg if rpchost/rpcport is badly configured old traceback: ``` $ ./run_electrum --testnet -o setconfig rpchost qweasdfcsdf $ ./run_electrum --testnet -o setconfig rpcport 7777 $ ./run_electrum --testnet daemon E | daemon.Daemon | taskgroup died. Traceback (most recent call last): File "/home/user/wspace/electrum/electrum/daemon.py", line 419, in _run async with self.taskgroup as group: File "/home/user/wspace/electrum/packages/aiorpcx/curio.py", line 297, in __aexit__ await self.join() File "/home/user/wspace/electrum/electrum/util.py", line 1335, in join task.result() File "/home/user/wspace/electrum/electrum/daemon.py", line 281, in run await site.start() # File "/home/user/wspace/electrum/packages/aiohttp/web_runner.py", line 121, in start self._server = await loop.create_server( File "/usr/lib/python3.10/asyncio/base_events.py", line 1471, in create_server infos = await tasks.gather(*fs) File "/usr/lib/python3.10/asyncio/base_events.py", line 1408, in _create_server_getaddrinfo infos = await self._ensure_resolved((host, port), family=family, File "/usr/lib/python3.10/asyncio/base_events.py", line 1404, in _ensure_resolved return await loop.getaddrinfo(host, port, family=family, type=type, File "/usr/lib/python3.10/asyncio/base_events.py", line 860, in getaddrinfo return await self.run_in_executor( File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/usr/lib/python3.10/socket.py", line 955, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno -3] Temporary failure in name resolution ``` --- electrum/daemon.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/electrum/daemon.py b/electrum/daemon.py index f38d2ba11..c5aa7e6d5 100644 --- a/electrum/daemon.py +++ b/electrum/daemon.py @@ -269,6 +269,14 @@ class CommandsServer(AuthenticatedServer): self.register_method(getattr(self.cmd_runner, cmdname)) self.register_method(self.run_cmdline) + def _socket_config_str(self) -> str: + if self.socktype == 'unix': + return f"" + elif self.socktype == 'tcp': + return f"" + else: + raise Exception(f"unknown socktype '{self.socktype!r}'") + async def run(self): self.runner = web.AppRunner(self.app) await self.runner.setup() @@ -278,7 +286,10 @@ class CommandsServer(AuthenticatedServer): site = web.TCPSite(self.runner, self.host, self.port) else: raise Exception(f"unknown socktype '{self.socktype!r}'") - await site.start() # + try: + await site.start() + except Exception as e: + raise Exception(f"failed to start CommandsServer at {self._socket_config_str()}. got exc: {e!r}") from None socket = site._server.sockets[0] if self.socktype == 'unix': addr = self.sockpath