diff --git a/src/Servers/Kestrel/Kestrel.slnf b/src/Servers/Kestrel/Kestrel.slnf index 5841f4e4451f..a97380321147 100644 --- a/src/Servers/Kestrel/Kestrel.slnf +++ b/src/Servers/Kestrel/Kestrel.slnf @@ -26,6 +26,7 @@ "src\\Middleware\\Diagnostics\\src\\Microsoft.AspNetCore.Diagnostics.csproj", "src\\Middleware\\HostFiltering\\src\\Microsoft.AspNetCore.HostFiltering.csproj", "src\\Middleware\\HttpOverrides\\src\\Microsoft.AspNetCore.HttpOverrides.csproj", + "src\\Middleware\\StaticFiles\\src\\Microsoft.AspNetCore.StaticFiles.csproj", "src\\ObjectPool\\src\\Microsoft.Extensions.ObjectPool.csproj", "src\\Security\\Authentication\\Core\\src\\Microsoft.AspNetCore.Authentication.csproj", "src\\Security\\Authorization\\Core\\src\\Microsoft.AspNetCore.Authorization.csproj", diff --git a/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs b/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs index 9a95793a59de..5f0a7d31e1ab 100644 --- a/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs +++ b/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs @@ -465,7 +465,7 @@ private async ValueTask DoSendAsync() } finally { - ShutdownWrite(_shutdownWriteReason ?? _shutdownReason ?? shutdownReason); + ShutdownWrite(shutdownReason); await waitForWritesClosedTask; @@ -525,10 +525,14 @@ private void ShutdownWrite(Exception? shutdownReason) { lock (_shutdownLock) { - _shutdownReason = shutdownReason ?? SendGracefullyCompletedException; + _shutdownReason = _shutdownWriteReason ?? _shutdownReason ?? shutdownReason ?? SendGracefullyCompletedException; QuicLog.StreamShutdownWrite(_log, this, _shutdownReason.Message); - _stream.CompleteWrites(); + // Only complete writes for a graceful shutdown. + if (_shutdownReason == SendGracefullyCompletedException) + { + _stream.CompleteWrites(); + } } } catch (Exception ex)