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
```
This commit is contained in:
@@ -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"<socket type={self.socktype}, path={self.sockpath}>"
|
||||
elif self.socktype == 'tcp':
|
||||
return f"<socket type={self.socktype}, host={self.host}, port={self.port}>"
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user