Browse Source

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
```
patch-4
SomberNight 2 years ago
parent
commit
7b6274eaff
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 13
      electrum/daemon.py

13
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"<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

Loading…
Cancel
Save