@@ -311,27 +311,36 @@ async def _receive_loop(self) -> None:
311
311
if isinstance (message , Exception ):
312
312
await self ._handle_incoming (message )
313
313
elif isinstance (message .root , JSONRPCRequest ):
314
- validated_request = self ._receive_request_type .model_validate (
315
- message .root .model_dump (
316
- by_alias = True , mode = "json" , exclude_none = True
314
+ try :
315
+ validated_request = self ._receive_request_type .model_validate (
316
+ message .root .model_dump (
317
+ by_alias = True , mode = "json" , exclude_none = True
318
+ )
317
319
)
318
- )
319
320
320
- responder = RequestResponder (
321
- request_id = message .root .id ,
322
- request_meta = validated_request .root .params .meta
323
- if validated_request .root .params
324
- else None ,
325
- request = validated_request ,
326
- session = self ,
327
- on_complete = lambda r : self ._in_flight .pop (r .request_id , None ),
328
- )
321
+ responder = RequestResponder (
322
+ request_id = message .root .id ,
323
+ request_meta = validated_request .root .params .meta
324
+ if validated_request .root .params
325
+ else None ,
326
+ request = validated_request ,
327
+ session = self ,
328
+ on_complete = lambda r : self ._in_flight .pop (
329
+ r .request_id , None
330
+ ),
331
+ )
329
332
330
- self ._in_flight [responder .request_id ] = responder
331
- await self ._received_request (responder )
333
+ self ._in_flight [responder .request_id ] = responder
334
+ await self ._received_request (responder )
332
335
333
- if not responder ._completed : # type: ignore[reportPrivateUsage]
334
- await self ._handle_incoming (responder )
336
+ if not responder ._completed : # type: ignore[reportPrivateUsage]
337
+ await self ._handle_incoming (responder )
338
+ except Exception as e :
339
+ # Log validation errors and continue
340
+ logging .warning (
341
+ f"Failed to validate request: { e } . "
342
+ f"Message was: { message .root } "
343
+ )
335
344
336
345
elif isinstance (message .root , JSONRPCNotification ):
337
346
try :
0 commit comments