Simple request unsecure passes with new client_config code
diff --git a/src/core/client_config/resolvers/dns_resolver.c b/src/core/client_config/resolvers/dns_resolver.c
index ba82675..8693bcf 100644
--- a/src/core/client_config/resolvers/dns_resolver.c
+++ b/src/core/client_config/resolvers/dns_resolver.c
@@ -145,6 +145,7 @@
   grpc_client_config *config = NULL;
   grpc_subchannel **subchannels;
   grpc_subchannel_args args;
+  grpc_lb_policy *lb_policy;
   size_t i;
   if (addresses) {
     config = grpc_client_config_create();
@@ -156,8 +157,9 @@
       subchannels[i] = grpc_subchannel_factory_create_subchannel(
           r->subchannel_factory, &args);
     }
-    grpc_client_config_set_lb_policy(
-        config, r->lb_policy_factory(subchannels, addresses->naddrs));
+    lb_policy = r->lb_policy_factory(subchannels, addresses->naddrs);
+    grpc_client_config_set_lb_policy(config, lb_policy);
+    GRPC_LB_POLICY_UNREF(lb_policy, "construction");
   }
   gpr_mu_lock(&r->mu);
   if (r->resolved_config) {
@@ -167,6 +169,8 @@
   r->resolved_version++;
   dns_maybe_finish_next_locked(r);
   gpr_mu_unlock(&r->mu);
+
+  dns_unref(&r->base);
 }
 
 static void dns_start_resolving_locked(dns_resolver *r) {
@@ -188,6 +192,9 @@
 
 static void dns_destroy(dns_resolver *r) {
   gpr_mu_destroy(&r->mu);
+  if (r->resolved_config) {
+    grpc_client_config_unref(r->resolved_config);
+  }
   grpc_subchannel_factory_unref(r->subchannel_factory);
   gpr_free(r->name);
   gpr_free(r->default_port);