]> git.feebdaed.xyz Git - 0xmirror/grpc.git/commitdiff
[PH2][E2E][CallV3]
authorAkshit Patel <akshitpatel@google.com>
Mon, 15 Dec 2025 09:50:54 +0000 (01:50 -0800)
committerCopybara-Service <copybara-worker@google.com>
Mon, 15 Dec 2025 09:53:19 +0000 (01:53 -0800)
1. Set `send_initial_metadata_op` flags in the `initial_metadata` being sent.
2. Fix the `is_client` parameter passed from `ClientCall` to `Call`.

PiperOrigin-RevId: 844662056

src/core/call/client_call.cc

index b3f521a29dd5d6401ec7e2000368686ecfbd1c52..0dc6c9fdece21816dcec20d27eea4120270b2351 100644 (file)
@@ -105,7 +105,7 @@ ClientCall::ClientCall(grpc_call*, uint32_t, grpc_completion_queue* cq,
                        grpc_compression_options compression_options,
                        RefCountedPtr<Arena> arena,
                        RefCountedPtr<UnstartedCallDestination> destination)
-    : Call(false, deadline, std::move(arena)),
+    : Call(/*is_client=*/true, deadline, std::move(arena)),
       DualRefCounted("ClientCall"),
       cq_(cq),
       call_destination_(std::move(destination)),
@@ -257,11 +257,20 @@ Party::WakeupHold ClientCall::StartCall(
     const grpc_op& send_initial_metadata_op) {
   GRPC_LATENT_SEE_SCOPE("ClientCall::StartCall");
   auto cur_state = call_state_.load(std::memory_order_acquire);
+  // TODO(akshitpatel): [PH2][P3]: Might need to invoke
+  // PrepareApplicationMetadata here.
   CToMetadata(send_initial_metadata_op.data.send_initial_metadata.metadata,
               send_initial_metadata_op.data.send_initial_metadata.count,
               send_initial_metadata_.get());
   PrepareOutgoingInitialMetadata(send_initial_metadata_op,
                                  *send_initial_metadata_);
+  send_initial_metadata_->Set(
+      WaitForReady(),
+      WaitForReady::ValueType{
+          (send_initial_metadata_op.flags &
+           GRPC_INITIAL_METADATA_WAIT_FOR_READY) != 0,
+          (send_initial_metadata_op.flags &
+           GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET) != 0});
   auto call = MakeCallPair(std::move(send_initial_metadata_), arena()->Ref());
   started_call_initiator_ = std::move(call.initiator);
   Party::WakeupHold wakeup_hold{started_call_initiator_.party()};