diff --git a/src/core/server/server.cc b/src/core/server/server.cc index c957fac6ae2..2226b891ae8 100644 --- a/src/core/server/server.cc +++ b/src/core/server/server.cc @@ -869,8 +869,10 @@ auto Server::MatchAndPublishCall(CallHandler call_handler) { absl::StatusOr> Server::MakeCallDestination(const ChannelArgs& args) { InterceptionChainBuilder builder(args); - builder.AddOnClientInitialMetadata( - [this](ClientMetadata& md) { SetRegisteredMethodOnMetadata(md); }); + // TODO(ctiller): find a way to avoid adding a server ref per call + builder.AddOnClientInitialMetadata([self = Ref()](ClientMetadata& md) { + self->SetRegisteredMethodOnMetadata(md); + }); CoreConfiguration::Get().channel_init().AddToInterceptionChainBuilder( GRPC_SERVER_CHANNEL, builder); return builder.Build(