From 9c4c7f01ac09214b38104ca44461c0c928107477 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Tue, 4 Nov 2025 12:08:16 +0100 Subject: [PATCH] daemon: pass cmdname to register_method This allows plugins to use already existing names without Electrum complaining about collisions --- electrum/daemon.py | 14 +++++++------- electrum/plugins/watchtower/server.py | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/electrum/daemon.py b/electrum/daemon.py index 9114babac..3afa92a04 100644 --- a/electrum/daemon.py +++ b/electrum/daemon.py @@ -214,9 +214,9 @@ class AuthenticatedServer(Logger): self.auth_lock = asyncio.Lock() self._methods = {} # type: Dict[str, Callable] - def register_method(self, f): - assert f.__name__ not in self._methods, f"name collision for {f.__name__}" - self._methods[f.__name__] = f + def register_method(self, name: str, f): + assert name not in self._methods, f"name collision for {name}" + self._methods[name] = f async def authenticate(self, headers): if self.rpc_password == '': @@ -299,12 +299,12 @@ class CommandsServer(AuthenticatedServer): self.port = self.config.RPC_PORT self.app = web.Application() self.app.router.add_post("/", self.handle) - self.register_method(self.ping) - self.register_method(self.gui) + self.register_method('ping', self.ping) + self.register_method('gui', self.gui) self.cmd_runner = Commands(config=self.config, network=self.daemon.network, daemon=self.daemon) for cmdname in known_commands: - self.register_method(getattr(self.cmd_runner, cmdname)) - self.register_method(self.run_cmdline) + self.register_method(cmdname, getattr(self.cmd_runner, cmdname)) + self.register_method('run_cmdline', self.run_cmdline) def _socket_config_str(self) -> str: if self.socktype == 'unix': diff --git a/electrum/plugins/watchtower/server.py b/electrum/plugins/watchtower/server.py index 172a0bff1..e18475321 100644 --- a/electrum/plugins/watchtower/server.py +++ b/electrum/plugins/watchtower/server.py @@ -28,8 +28,8 @@ class WatchTowerServer(AuthenticatedServer): self.lnwatcher = watchtower self.app = web.Application() self.app.router.add_post("/", self.handle) - self.register_method(self.get_ctn) - self.register_method(self.add_sweep_tx) + self.register_method('get_ctn', self.get_ctn) + self.register_method('add_sweep_tx', self.add_sweep_tx) async def run(self): self.runner = web.AppRunner(self.app)