mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-03 02:22:24 +00:00
Harden MCP routing peek bound and stateful purge race
Co-authored-by: Mateo Wang <mateo-berri@users.noreply.github.com>
This commit is contained in:
parent
6f96095cf8
commit
4b3521e433
36 changed files with 52 additions and 2 deletions
|
|
@ -320,6 +320,13 @@ if MCP_AVAILABLE:
|
|||
expired_session_ids.append(session_id)
|
||||
|
||||
for session_id in expired_session_ids:
|
||||
# Re-check the active-request count immediately before tearing
|
||||
# the session down. ``await transport.terminate()`` yields to
|
||||
# the event loop, so a request that started after the first
|
||||
# collection pass could otherwise observe its transport being
|
||||
# ripped out from under it mid-flight.
|
||||
if _stateful_session_active_request_counts.get(session_id, 0) > 0:
|
||||
continue
|
||||
_remove_stateful_session_tracking(session_id)
|
||||
transport = server_instances.pop(session_id, None)
|
||||
if transport is not None:
|
||||
|
|
@ -2837,8 +2844,16 @@ if MCP_AVAILABLE:
|
|||
|
||||
body = message.get("body", b"") or b""
|
||||
if body:
|
||||
body_chunks.append(body)
|
||||
peeked_bytes += len(body)
|
||||
# Only retain up to the remaining peek budget for sniffing.
|
||||
# The full ``message`` is already in memory (delivered by
|
||||
# the ASGI server) and must round-trip to the downstream
|
||||
# handler via ``consumed_messages``, but ``body_chunks`` is
|
||||
# purely for the JSON-RPC method check — there is no reason
|
||||
# to copy a large body frame into a second buffer.
|
||||
remaining = _MCP_ROUTING_PEEK_MAX_BYTES - peeked_bytes
|
||||
if remaining > 0:
|
||||
body_chunks.append(body[:remaining])
|
||||
peeked_bytes += min(len(body), remaining)
|
||||
|
||||
if not message.get("more_body", False):
|
||||
break
|
||||
|
|
|
|||
1
litellm/proxy/_experimental/out/404/index.html
Normal file
1
litellm/proxy/_experimental/out/404/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/_not-found/index.html
Normal file
1
litellm/proxy/_experimental/out/_not-found/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/api-reference/index.html
Normal file
1
litellm/proxy/_experimental/out/api-reference/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/chat/index.html
Normal file
1
litellm/proxy/_experimental/out/chat/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/guardrails/index.html
Normal file
1
litellm/proxy/_experimental/out/guardrails/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/login/index.html
Normal file
1
litellm/proxy/_experimental/out/login/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/logs/index.html
Normal file
1
litellm/proxy/_experimental/out/logs/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/model-hub/index.html
Normal file
1
litellm/proxy/_experimental/out/model-hub/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/model_hub/index.html
Normal file
1
litellm/proxy/_experimental/out/model_hub/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/onboarding/index.html
Normal file
1
litellm/proxy/_experimental/out/onboarding/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/organizations/index.html
Normal file
1
litellm/proxy/_experimental/out/organizations/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/playground/index.html
Normal file
1
litellm/proxy/_experimental/out/playground/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/policies/index.html
Normal file
1
litellm/proxy/_experimental/out/policies/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/skills/index.html
Normal file
1
litellm/proxy/_experimental/out/skills/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/teams/index.html
Normal file
1
litellm/proxy/_experimental/out/teams/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/test-key/index.html
Normal file
1
litellm/proxy/_experimental/out/test-key/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/usage/index.html
Normal file
1
litellm/proxy/_experimental/out/usage/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/users/index.html
Normal file
1
litellm/proxy/_experimental/out/users/index.html
Normal file
File diff suppressed because one or more lines are too long
1
litellm/proxy/_experimental/out/virtual-keys/index.html
Normal file
1
litellm/proxy/_experimental/out/virtual-keys/index.html
Normal file
File diff suppressed because one or more lines are too long
Loading…
Add table
Reference in a new issue