attach content-type to trailer if the trailer is the only response.
diff --git a/transport/http2_server.go b/transport/http2_server.go
index 52d0ee5..28b1e09 100644
--- a/transport/http2_server.go
+++ b/transport/http2_server.go
@@ -456,17 +456,24 @@
 // TODO(zhaoq): Now it indicates the end of entire stream. Revisit if early
 // OK is adopted.
 func (t *http2Server) WriteStatus(s *Stream, statusCode codes.Code, statusDesc string) error {
-	s.mu.RLock()
+	var headersSent bool
+	s.mu.Lock()
 	if s.state == streamDone {
-		s.mu.RUnlock()
+		s.mu.Unlock()
 		return nil
 	}
-	s.mu.RUnlock()
+	if s.headerOk {
+		headersSent = true
+	}
+	s.mu.Unlock()
 	if _, err := wait(s.ctx, t.shutdownChan, t.writableChan); err != nil {
 		return err
 	}
 	t.hBuf.Reset()
-	t.hEnc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"})
+	if !headersSent {
+		t.hEnc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"})
+		t.hEnc.WriteField(hpack.HeaderField{Name: "content-type", Value: "application/grpc"})
+	}
 	t.hEnc.WriteField(
 		hpack.HeaderField{
 			Name:  "grpc-status",