@@ -266,8 +266,15 @@ async def _handle_post_request(self, ctx: RequestContext) -> None:
266
266
logger .debug ("Received 202 Accepted" )
267
267
return
268
268
269
- # ensures that all HTTP error codes are handled
270
- if response .status_code >= 400 and response .status_code <= 499 :
269
+ if response .status_code == 400 :
270
+ if isinstance (message .root , JSONRPCRequest ):
271
+ await self ._send_bad_request_error (
272
+ ctx .read_stream_writer ,
273
+ message .root .id ,
274
+ )
275
+ return
276
+
277
+ if response .status_code == 404 :
271
278
if isinstance (message .root , JSONRPCRequest ):
272
279
await self ._send_session_terminated_error (
273
280
ctx .read_stream_writer ,
@@ -360,6 +367,20 @@ async def _send_session_terminated_error(
360
367
session_message = SessionMessage (JSONRPCMessage (jsonrpc_error ))
361
368
await read_stream_writer .send (session_message )
362
369
370
+ async def _send_bad_request_error (
371
+ self ,
372
+ read_stream_writer : StreamWriter ,
373
+ request_id : RequestId ,
374
+ ) -> None :
375
+ """Send a bad request error response."""
376
+ jsonrpc_error = JSONRPCError (
377
+ jsonrpc = "2.0" ,
378
+ id = request_id ,
379
+ error = ErrorData (code = 32600 , message = "Bad request" ),
380
+ )
381
+ session_message = SessionMessage (JSONRPCMessage (jsonrpc_error ))
382
+ await read_stream_writer .send (session_message )
383
+
363
384
async def post_writer (
364
385
self ,
365
386
client : httpx .AsyncClient ,
0 commit comments