Avoid sending an invalid content terminator when ChunkedOhttpGatewayFilter::encodeData is called with empty data and !end_stream

PiperOrigin-RevId: 866650522
diff --git a/quiche/binary_http/binary_http_message.cc b/quiche/binary_http/binary_http_message.cc
index b5a7922..b4a6a88 100644
--- a/quiche/binary_http/binary_http_message.cc
+++ b/quiche/binary_http/binary_http_message.cc
@@ -211,6 +211,9 @@
     absl::Span<const absl::string_view> body_chunks, bool body_chunks_done) {
   uint64_t total_length = 0;
   for (const auto& body_chunk : body_chunks) {
+    if (body_chunk.empty()) {
+      continue;
+    }
     uint8_t body_chunk_var_int_length =
         QuicheDataWriter::GetVarInt62Len(body_chunk.size());
     if (body_chunk_var_int_length == 0) {
@@ -223,11 +226,19 @@
     total_length +=
         quiche::QuicheDataWriter::GetVarInt62Len(kContentTerminator);
   }
+  if (total_length == 0) {
+    return absl::InvalidArgumentError(
+        "EncodeBodyChunks cannot be called without data unless "
+        "body_chunks_done is true.");
+  }
 
   std::string data(total_length, '\0');
   QuicheDataWriter writer(total_length, data.data());
 
   for (const auto& body_chunk : body_chunks) {
+    if (body_chunk.empty()) {
+      continue;
+    }
     if (!writer.WriteStringPieceVarInt62(body_chunk)) {
       return absl::InternalError("Failed to write body chunk.");
     }