From bab74d58957d8358d96ac1ec706bc34260acda70 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Tue, 8 Apr 2025 10:20:16 -0700 Subject: [PATCH] Fix StdioServerTransport.DisposeAsync hang (#235) - It's not just Unix, it's all platforms that can hang - Windows doesn't hang on Ctrl-C because that triggers the end of the Stream, but that doesn't help in IHostApplicationLifetime.StopAsync() scenarios https://github.com/dotnet/runtime/blob/4e9627e311806330be72b7f7d3660be699878ebd/src/libraries/System.Console/src/System/ConsolePal.Unix.ConsoleStream.cs#L13 https://github.com/dotnet/runtime/blob/4e9627e311806330be72b7f7d3660be699878ebd/src/libraries/System.Console/src/System/ConsolePal.Windows.cs#L1149 --- .../TestServerWithHosting.csproj | 2 +- .../Transport/StdioServerTransport.cs | 35 +++++++++- .../ModelContextProtocol.Tests.csproj | 7 ++ .../StdioServerIntegrationTests.cs | 66 +++++++++++++++++++ .../Utils/KestrelInMemoryConnection.cs | 12 ++-- 5 files changed, 114 insertions(+), 8 deletions(-) create mode 100644 tests/ModelContextProtocol.Tests/StdioServerIntegrationTests.cs diff --git a/samples/TestServerWithHosting/TestServerWithHosting.csproj b/samples/TestServerWithHosting/TestServerWithHosting.csproj index 0f3918d..d12277e 100644 --- a/samples/TestServerWithHosting/TestServerWithHosting.csproj +++ b/samples/TestServerWithHosting/TestServerWithHosting.csproj @@ -2,7 +2,7 @@ Exe - net9.0 + net9.0;net8.0 enable enable