tReturn null id on JSON-RPC errors. - obelisk - Electrum server using libbitcoin as its backend HTML git clone https://git.parazyd.org/obelisk DIR Log DIR Files DIR Refs DIR README DIR LICENSE --- DIR commit 0b295cb72e0029c6e97e36a614c12cbf5b2c2989 DIR parent a6430df0a41bedbeaf0593dabcd655d248ea219b HTML Author: parazyd <parazyd@dyne.org> Date: Fri, 16 Apr 2021 02:28:20 +0200 Return null id on JSON-RPC errors. Also return invalidrequest where applicable. Diffstat: M obelisk/protocol.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) --- DIR diff --git a/obelisk/protocol.py b/obelisk/protocol.py t@@ -164,9 +164,9 @@ class ElectrumProtocol(asyncio.Protocol): # pylint: disable=R0904,R0902 writer.write(json.dumps(response).encode("utf-8") + b"\n") await writer.drain() - async def _send_error(self, writer, error, nid): + async def _send_error(self, writer, error): """Send JSON-RPC error to given writer""" - response = {"jsonrpc": "2.0", "error": error, "id": nid} + response = {"jsonrpc": "2.0", "error": error, "id": None} self.log.debug("<= %s", response) writer.write(json.dumps(response).encode("utf-8") + b"\n") await writer.drain() t@@ -174,17 +174,19 @@ class ElectrumProtocol(asyncio.Protocol): # pylint: disable=R0904,R0902 async def _send_reply(self, writer, resp, query): """Wrap function for sending replies""" if "error" in resp: - return await self._send_error(writer, resp["error"], query["id"]) + return await self._send_error(writer, resp["error"]) return await self._send_response(writer, resp["result"], query["id"]) async def handle_query(self, writer, query): # pylint: disable=R0915,R0912,R0911 """Electrum protocol method handler mapper""" if "method" not in query: self.log.debug("No 'method' in query: %s", query) - return + return await self._send_reply(writer, JsonRPCError.invalidrequest(), + None) if "id" not in query: self.log.debug("No 'id' in query: %s", query) - return + return await self._send_reply(writer, JsonRPCError.invalidrequest(), + None) method = query["method"] func = self.methodmap.get(method)