Skip to content

Commit 7d386fb

Browse files
author
Jianke LIN
committed
fix(server): thread EOF drain timeout through split loops
1 parent 6b14ed4 commit 7d386fb

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

src/mcp/server/runner.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,7 @@ async def serve_dual_era_loop(
642642
lifespan_state=lifespan_state,
643643
raise_exceptions=raise_exceptions,
644644
close_write_stream_on_read_close=close_write_stream_on_read_close,
645+
read_eof_drain_timeout_seconds=read_eof_drain_timeout_seconds,
645646
)
646647
else:
647648
await _serve_legacy_stream(
@@ -653,6 +654,7 @@ async def serve_dual_era_loop(
653654
init_options=init_options,
654655
raise_exceptions=raise_exceptions,
655656
close_write_stream_on_read_close=close_write_stream_on_read_close,
657+
read_eof_drain_timeout_seconds=read_eof_drain_timeout_seconds,
656658
)
657659
finally:
658660
await write_stream.aclose()
@@ -736,6 +738,7 @@ async def _serve_legacy_stream(
736738
init_options: InitializationOptions | None,
737739
raise_exceptions: bool,
738740
close_write_stream_on_read_close: bool,
741+
read_eof_drain_timeout_seconds: float | None,
739742
) -> None:
740743
"""Serve a 2025 handshake connection; enveloped requests are refused."""
741744
dispatcher: JSONRPCDispatcher[TransportContext] = JSONRPCDispatcher(
@@ -775,13 +778,15 @@ async def _serve_modern_stream(
775778
lifespan_state: LifespanT,
776779
raise_exceptions: bool,
777780
close_write_stream_on_read_close: bool,
781+
read_eof_drain_timeout_seconds: float | None,
778782
) -> None:
779783
"""Serve a 2026-07-28 connection: every request carries its own envelope."""
780784
dispatcher: JSONRPCDispatcher[TransportContext] = JSONRPCDispatcher(
781785
read_stream,
782786
write_stream,
783787
raise_handler_exceptions=raise_exceptions,
784788
close_write_stream_on_read_close=close_write_stream_on_read_close,
789+
read_eof_drain_timeout_seconds=read_eof_drain_timeout_seconds,
785790
)
786791
outbound = NotifyOnlyOutbound(dispatcher)
787792

0 commit comments

Comments
 (0)