diff options
author | Craig Tiller <ctiller@google.com> | 2015-08-06 18:02:22 -0700 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2015-08-06 18:02:22 -0700 |
commit | 6659d8b89c0a4c93b8fbba7289cfaea09c326a50 (patch) | |
tree | 6e859cf1a3d6cbeb373309d59e9e52497873604d /src/core | |
parent | 83f8416f4ccaf1fa50d45f80124c72342244b7bd (diff) |
Fix memory leaks
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/channel/client_channel.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/core/channel/client_channel.c b/src/core/channel/client_channel.c index 2ee260b799..a293c93ec6 100644 --- a/src/core/channel/client_channel.c +++ b/src/core/channel/client_channel.c @@ -401,6 +401,7 @@ static void perform_transport_stream_op(grpc_call_element *elem, calld->state = CALL_WAITING_FOR_CONFIG; add_to_lb_policy_wait_queue_locked_state_config(elem); if (!chand->started_resolving && chand->resolver != NULL) { + GRPC_CHANNEL_INTERNAL_REF(chand->master, "resolver"); chand->started_resolving = 1; grpc_resolver_next(chand->resolver, &chand->incoming_configuration, @@ -701,11 +702,11 @@ void grpc_client_channel_set_resolver(grpc_channel_stack *channel_stack, gpr_mu_lock(&chand->mu_config); GPR_ASSERT(!chand->resolver); chand->resolver = resolver; - GRPC_CHANNEL_INTERNAL_REF(chand->master, "resolver"); GRPC_RESOLVER_REF(resolver, "channel"); if (chand->waiting_for_config_closures != NULL || chand->exit_idle_when_lb_policy_arrives) { chand->started_resolving = 1; + GRPC_CHANNEL_INTERNAL_REF(chand->master, "resolver"); grpc_resolver_next(resolver, &chand->incoming_configuration, &chand->on_config_changed); } @@ -724,6 +725,7 @@ grpc_connectivity_state grpc_client_channel_check_connectivity_state( } else { chand->exit_idle_when_lb_policy_arrives = 1; if (!chand->started_resolving && chand->resolver != NULL) { + GRPC_CHANNEL_INTERNAL_REF(chand->master, "resolver"); chand->started_resolving = 1; grpc_resolver_next(chand->resolver, &chand->incoming_configuration, &chand->on_config_changed); |