diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index f5bac0779c85bc2e7eb848b3406f1030dc258b7f..f53e940fde0cf37126eb7f055833ccfe27d6f63b 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -991,6 +991,9 @@ static void post_batch_completion(grpc_exec_ctx *exec_ctx,
         exec_ctx,
         &call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */]);
   }
+  if (bctl->send_message) {
+    call->sending_message = false;
+  }
   if (bctl->send_final_op) {
     grpc_metadata_batch_destroy(
         exec_ctx,