pr37742_gzip.patch 1.3 KB

123456789101112131415161718192021222324252627282930
  1. --- a/src/core/ext/filters/client_channel/retry_filter.cc (index)
  2. +++ b/src/core/ext/filters/client_channel/retry_filter.cc (working tree)
  3. @@ -462,6 +462,9 @@ class RetryFilter::CallData {
  4. grpc_transport_stream_op_batch_payload batch_payload_;
  5. // For send_initial_metadata.
  6. grpc_metadata_batch send_initial_metadata_{calld_->arena_};
  7. +
  8. + SliceBuffer send_message_;
  9. +
  10. // For send_trailing_metadata.
  11. grpc_metadata_batch send_trailing_metadata_{calld_->arena_};
  12. // For intercepting recv_initial_metadata.
  13. @@ -1911,6 +1914,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
  14. }
  15. if (batch_data->batch_.send_message) {
  16. ++call_attempt->completed_send_message_count_;
  17. + call_attempt->send_message_.Clear();
  18. }
  19. if (batch_data->batch_.send_trailing_metadata) {
  20. call_attempt->completed_send_trailing_metadata_ = true;
  21. @@ -1999,7 +2003,8 @@ void RetryFilter::CallData::CallAttempt::BatchData::
  22. calld->send_messages_[call_attempt_->started_send_message_count_];
  23. ++call_attempt_->started_send_message_count_;
  24. batch_.send_message = true;
  25. - batch_.payload->send_message.send_message = cache.slices;
  26. + call_attempt_->send_message_ = cache.slices->Copy();
  27. + batch_.payload->send_message.send_message = &call_attempt_->send_message_;
  28. batch_.payload->send_message.flags = cache.flags;
  29. }