From 3113ef48ab8ae6e8c879cfb15ef0ccfe9a7cc824 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 29 Mar 2016 09:03:14 -0700
Subject: [PATCH] Register plugins correctly

---
 src/core/ext/lb_policy/pick_first/pick_first.c   | 2 +-
 src/core/ext/lb_policy/round_robin/round_robin.c | 2 +-
 src/core/lib/client_config/lb_policy_registry.c  | 7 +------
 src/core/lib/client_config/lb_policy_registry.h  | 2 +-
 src/core/lib/surface/init.c                      | 5 +++++
 5 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/core/ext/lb_policy/pick_first/pick_first.c b/src/core/ext/lb_policy/pick_first/pick_first.c
index 609c2d62d4..8dc7ed01e2 100644
--- a/src/core/ext/lb_policy/pick_first/pick_first.c
+++ b/src/core/ext/lb_policy/pick_first/pick_first.c
@@ -423,7 +423,7 @@ static grpc_lb_policy_factory *pick_first_lb_factory_create() {
 /* Plugin registration */
 
 void grpc_lb_policy_pick_first_init() {
-  grpc_lb_policy_registry_init(pick_first_lb_factory_create());
+  grpc_register_lb_policy(pick_first_lb_factory_create());
 }
 
 void grpc_lb_policy_pick_first_shutdown() {}
diff --git a/src/core/ext/lb_policy/round_robin/round_robin.c b/src/core/ext/lb_policy/round_robin/round_robin.c
index 318980892c..b1996922bf 100644
--- a/src/core/ext/lb_policy/round_robin/round_robin.c
+++ b/src/core/ext/lb_policy/round_robin/round_robin.c
@@ -546,7 +546,7 @@ static grpc_lb_policy_factory *round_robin_lb_factory_create() {
 /* Plugin registration */
 
 void grpc_lb_policy_round_robin_init() {
-  grpc_lb_policy_registry_init(round_robin_lb_factory_create());
+  grpc_register_lb_policy(round_robin_lb_factory_create());
   grpc_register_tracer("round_robin", &grpc_lb_round_robin_trace);
 }
 
diff --git a/src/core/lib/client_config/lb_policy_registry.c b/src/core/lib/client_config/lb_policy_registry.c
index 13acfe78cd..82f70ed8c0 100644
--- a/src/core/lib/client_config/lb_policy_registry.c
+++ b/src/core/lib/client_config/lb_policy_registry.c
@@ -40,12 +40,7 @@
 static grpc_lb_policy_factory *g_all_of_the_lb_policies[MAX_POLICIES];
 static int g_number_of_lb_policies = 0;
 
-static grpc_lb_policy_factory *g_default_lb_policy_factory;
-
-void grpc_lb_policy_registry_init(grpc_lb_policy_factory *default_factory) {
-  g_number_of_lb_policies = 0;
-  g_default_lb_policy_factory = default_factory;
-}
+void grpc_lb_policy_registry_init(void) { g_number_of_lb_policies = 0; }
 
 void grpc_lb_policy_registry_shutdown(void) {
   int i;
diff --git a/src/core/lib/client_config/lb_policy_registry.h b/src/core/lib/client_config/lb_policy_registry.h
index c251fd9f08..da3a5d5e79 100644
--- a/src/core/lib/client_config/lb_policy_registry.h
+++ b/src/core/lib/client_config/lb_policy_registry.h
@@ -38,7 +38,7 @@
 
 /** Initialize the registry and set \a default_factory as the factory to be
  * returned when no name is provided in a lookup */
-void grpc_lb_policy_registry_init(grpc_lb_policy_factory *default_factory);
+void grpc_lb_policy_registry_init(void);
 void grpc_lb_policy_registry_shutdown(void);
 
 /** Register a LB policy factory. */
diff --git a/src/core/lib/surface/init.c b/src/core/lib/surface/init.c
index 69e0e692be..d59323b2bc 100644
--- a/src/core/lib/surface/init.c
+++ b/src/core/lib/surface/init.c
@@ -73,6 +73,9 @@
 #define GRPC_DEFAULT_NAME_PREFIX "dns:///"
 #endif
 
+/* (generated) built in registry of plugins */
+extern void grpc_register_built_in_plugins(void);
+
 #define MAX_PLUGINS 128
 
 static gpr_once g_basic_init = GPR_ONCE_INIT;
@@ -81,6 +84,7 @@ static int g_initializations;
 
 static void do_basic_init(void) {
   gpr_mu_init(&g_init_mu);
+  grpc_register_built_in_plugins();
   /* TODO(ctiller): ideally remove this strict linkage */
   grpc_register_plugin(census_grpc_plugin_init, census_grpc_plugin_destroy);
   g_initializations = 0;
@@ -163,6 +167,7 @@ void grpc_init(void) {
     gpr_time_init();
     grpc_mdctx_global_init();
     grpc_channel_init_init();
+    grpc_lb_policy_registry_init();
     grpc_resolver_registry_init(GRPC_DEFAULT_NAME_PREFIX);
     grpc_register_resolver_type(grpc_dns_resolver_factory_create());
     grpc_register_resolver_type(grpc_ipv4_resolver_factory_create());
-- 
GitLab