diff --git a/src/core/lib/security/credentials/external/external_account_credentials.cc b/src/core/lib/security/credentials/external/external_account_credentials.cc index 619826e0ef5..00215d43024 100644 --- a/src/core/lib/security/credentials/external/external_account_credentials.cc +++ b/src/core/lib/security/credentials/external/external_account_credentials.cc @@ -135,13 +135,11 @@ void ExternalAccountCredentials::HttpFetchBody::OnHttpResponse( // 4. Finish token fetch - Return back the response that contains an access // token in FinishTokenFetch(). ExternalAccountCredentials::ExternalFetchRequest::ExternalFetchRequest( - WeakRefCountedPtr creds, Timestamp deadline, + ExternalAccountCredentials* creds, Timestamp deadline, absl::AnyInvocable>)> on_done) - : creds_(std::move(creds)), - deadline_(deadline), - on_done_(std::move(on_done)) { + : creds_(creds), deadline_(deadline), on_done_(std::move(on_done)) { fetch_body_ = creds_->RetrieveSubjectToken( deadline, [self = RefAsSubclass()]( @@ -631,9 +629,7 @@ ExternalAccountCredentials::FetchToken( absl::AnyInvocable>)> on_done) { return MakeOrphanable( -// FIXME: does not need to hold a ref, since on_done is holding one - WeakRefAsSubclass(), deadline, - std::move(on_done)); + this, deadline, std::move(on_done)); } } // namespace grpc_core diff --git a/src/core/lib/security/credentials/external/external_account_credentials.h b/src/core/lib/security/credentials/external/external_account_credentials.h index 11dfb122b04..cc8a345d5be 100644 --- a/src/core/lib/security/credentials/external/external_account_credentials.h +++ b/src/core/lib/security/credentials/external/external_account_credentials.h @@ -144,8 +144,7 @@ class ExternalAccountCredentials : public TokenFetcherCredentials { class ExternalFetchRequest : public FetchRequest { public: ExternalFetchRequest( - WeakRefCountedPtr creds, - Timestamp deadline, + ExternalAccountCredentials* creds, Timestamp deadline, absl::AnyInvocable>)> on_done); @@ -171,7 +170,7 @@ class ExternalAccountCredentials : public TokenFetcherCredentials { bool MaybeFailLocked(absl::Status status) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_); - WeakRefCountedPtr creds_; + ExternalAccountCredentials* creds_; Timestamp deadline_; absl::AnyInvocable< void(absl::StatusOr>)>