diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
index 94f49bd8f2a34742fe78a7ce241432af79c93058..44f2988e21e76a04005ab15a86014c893de28918 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
@@ -152,6 +152,7 @@ namespace Grpc.Core.Internal
                     call.StartSendStatusFromServer(HandleSendStatusFromServerFinished, status, metadataArray, !initialMetadataSent);
                 }
                 halfcloseRequested = true;
+                initialMetadataSent = true;
                 sendStatusFromServerTcs = new TaskCompletionSource<object>();
                 return sendStatusFromServerTcs.Task;
             }