Skip to content

Commit 8e43076

Browse files
AananthVcopybara-github
authored andcommitted
call_filters: Reset server initial metadata to nullptr on push failure
When server initial metadata fails to be pushed synchronously, the cached metadata handle (push_server_initial_metadata_) was left populated instead of being reset to nullptr. This can cause lingering references to metadata. This updates PushServerInitialMetadata in CallFilters to reset push_server_initial_metadata_ to nullptr when the call state push operation returns failure. PiperOrigin-RevId: 938519445
1 parent 9dd36e8 commit 8e43076

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

src/core/call/call_filters.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1976,7 +1976,11 @@ class CallFilters {
19761976
// Returns a promise that resolves to a StatusFlag indicating success
19771977
StatusFlag PushServerInitialMetadata(ServerMetadataHandle md) {
19781978
push_server_initial_metadata_ = std::move(md);
1979-
return call_state_.PushServerInitialMetadata();
1979+
auto flag = call_state_.PushServerInitialMetadata();
1980+
if (!IsStatusOk(flag)) {
1981+
push_server_initial_metadata_ = nullptr;
1982+
}
1983+
return flag;
19801984
}
19811985
// Client: Fetch server initial metadata
19821986
// Returns a promise that resolves to ValueOrFailure<ServerMetadataHandle>

0 commit comments

Comments
 (0)