From 9e688f796423259c5e16ad383f1f3312d1a39dae Mon Sep 17 00:00:00 2001 From: adator <85586985+adator85@users.noreply.github.com> Date: Sun, 23 Nov 2025 00:53:03 +0100 Subject: [PATCH] error 204 crash the RPC server. changing the 204 error to 404 when data not found --- core/classes/interfaces/irpc_endpoint.py | 2 ++ core/classes/modules/rpc/rpc.py | 5 +++-- core/classes/modules/rpc/rpc_channel.py | 1 - core/classes/modules/rpc/rpc_user.py | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/core/classes/interfaces/irpc_endpoint.py b/core/classes/interfaces/irpc_endpoint.py index 0f5d0b4..b1612ad 100644 --- a/core/classes/interfaces/irpc_endpoint.py +++ b/core/classes/interfaces/irpc_endpoint.py @@ -12,12 +12,14 @@ class IRPC: self.http_status_code = http_status_code self.response_model = { "jsonrpc": "2.0", + "method": 'unknown', "id": 123 } def reset(self): self.response_model = { "jsonrpc": "2.0", + "method": 'unknown', "id": 123 } diff --git a/core/classes/modules/rpc/rpc.py b/core/classes/modules/rpc/rpc.py index 1b6646d..39b7050 100644 --- a/core/classes/modules/rpc/rpc.py +++ b/core/classes/modules/rpc/rpc.py @@ -17,7 +17,7 @@ if TYPE_CHECKING: class JSonRpcServer: - def __init__(self, context: 'Loader', *, hostname: str = 'localhost', port: int = 5000): + def __init__(self, context: 'Loader', *, hostname: str = '0.0.0.0', port: int = 5000): self._ctx = context self.live: bool = False self.host = hostname @@ -77,10 +77,10 @@ class JSonRpcServer: response_data = { "jsonrpc": "2.0", + "method": method, "id": request_data.get('id', 123) } - response_data['method'] = method rip = request.client.host rport = request.client.port http_code = http_status_code.HTTP_200_OK @@ -89,6 +89,7 @@ class JSonRpcServer: r: JSONResponse = self.methods[method](**params) resp = json.loads(r.body) resp['id'] = request_data.get('id', 123) + resp['method'] = method return JSONResponse(resp, r.status_code) response_data['error'] = rpcerr.create_error_response(rpcerr.JSONRPCErrorCode.METHOD_NOT_FOUND) diff --git a/core/classes/modules/rpc/rpc_channel.py b/core/classes/modules/rpc/rpc_channel.py index b1388eb..74841f1 100644 --- a/core/classes/modules/rpc/rpc_channel.py +++ b/core/classes/modules/rpc/rpc_channel.py @@ -1,5 +1,4 @@ from typing import TYPE_CHECKING - from starlette.responses import JSONResponse from core.classes.interfaces.irpc_endpoint import IRPC from core.classes.modules.rpc.rpc_errors import JSONRPCErrorCode diff --git a/core/classes/modules/rpc/rpc_user.py b/core/classes/modules/rpc/rpc_user.py index 667005a..7bb3c3a 100644 --- a/core/classes/modules/rpc/rpc_user.py +++ b/core/classes/modules/rpc/rpc_user.py @@ -42,4 +42,4 @@ class RPCUser(IRPC): return JSONResponse(self.response_model) self.response_model['result'] = 'User not found!' - return JSONResponse(self.response_model, self.http_status_code.HTTP_204_NO_CONTENT) \ No newline at end of file + return JSONResponse(self.response_model, self.http_status_code.HTTP_404_NOT_FOUND) \ No newline at end of file