From a6124120ae5ece38d39ebb0178c5877e5f940e80 Mon Sep 17 00:00:00 2001 From: yang-g Date: Thu, 5 Nov 2015 22:36:20 -0800 Subject: [PATCH] first part, secure channel only --- BUILD | 9 ++++ Makefile | 4 ++ binding.gyp | 2 + build.yaml | 3 ++ gRPC.podspec | 4 ++ src/core/client_config/connector.h | 2 + .../default_initial_connect_string.c | 40 ++++++++++++++ .../client_config/initial_connect_string.c | 53 +++++++++++++++++++ .../client_config/initial_connect_string.h | 51 ++++++++++++++++++ src/core/client_config/subchannel.c | 7 +++ src/core/surface/secure_channel_create.c | 28 +++++++++- tools/doxygen/Doxyfile.core.internal | 3 ++ tools/run_tests/sources_and_headers.json | 8 +++ vsprojects/vcxproj/grpc/grpc.vcxproj | 5 ++ vsprojects/vcxproj/grpc/grpc.vcxproj.filters | 9 ++++ .../grpc_unsecure/grpc_unsecure.vcxproj | 5 ++ .../grpc_unsecure.vcxproj.filters | 9 ++++ 17 files changed, 240 insertions(+), 2 deletions(-) create mode 100644 src/core/client_config/default_initial_connect_string.c create mode 100644 src/core/client_config/initial_connect_string.c create mode 100644 src/core/client_config/initial_connect_string.h diff --git a/BUILD b/BUILD index edb450969bb..ff05a9fdc81 100644 --- a/BUILD +++ b/BUILD @@ -162,6 +162,7 @@ cc_library( "src/core/channel/noop_filter.h", "src/core/client_config/client_config.h", "src/core/client_config/connector.h", + "src/core/client_config/initial_connect_string.h", "src/core/client_config/lb_policies/pick_first.h", "src/core/client_config/lb_policies/round_robin.h", "src/core/client_config/lb_policy.h", @@ -298,6 +299,8 @@ cc_library( "src/core/channel/noop_filter.c", "src/core/client_config/client_config.c", "src/core/client_config/connector.c", + "src/core/client_config/default_initial_connect_string.c", + "src/core/client_config/initial_connect_string.c", "src/core/client_config/lb_policies/pick_first.c", "src/core/client_config/lb_policies/round_robin.c", "src/core/client_config/lb_policy.c", @@ -450,6 +453,7 @@ cc_library( "src/core/channel/noop_filter.h", "src/core/client_config/client_config.h", "src/core/client_config/connector.h", + "src/core/client_config/initial_connect_string.h", "src/core/client_config/lb_policies/pick_first.h", "src/core/client_config/lb_policies/round_robin.h", "src/core/client_config/lb_policy.h", @@ -566,6 +570,8 @@ cc_library( "src/core/channel/noop_filter.c", "src/core/client_config/client_config.c", "src/core/client_config/connector.c", + "src/core/client_config/default_initial_connect_string.c", + "src/core/client_config/initial_connect_string.c", "src/core/client_config/lb_policies/pick_first.c", "src/core/client_config/lb_policies/round_robin.c", "src/core/client_config/lb_policy.c", @@ -1094,6 +1100,8 @@ objc_library( "src/core/channel/noop_filter.c", "src/core/client_config/client_config.c", "src/core/client_config/connector.c", + "src/core/client_config/default_initial_connect_string.c", + "src/core/client_config/initial_connect_string.c", "src/core/client_config/lb_policies/pick_first.c", "src/core/client_config/lb_policies/round_robin.c", "src/core/client_config/lb_policy.c", @@ -1243,6 +1251,7 @@ objc_library( "src/core/channel/noop_filter.h", "src/core/client_config/client_config.h", "src/core/client_config/connector.h", + "src/core/client_config/initial_connect_string.h", "src/core/client_config/lb_policies/pick_first.h", "src/core/client_config/lb_policies/round_robin.h", "src/core/client_config/lb_policy.h", diff --git a/Makefile b/Makefile index 9d94ee85992..3ca6d797d59 100644 --- a/Makefile +++ b/Makefile @@ -4302,6 +4302,8 @@ LIBGRPC_SRC = \ src/core/channel/noop_filter.c \ src/core/client_config/client_config.c \ src/core/client_config/connector.c \ + src/core/client_config/default_initial_connect_string.c \ + src/core/client_config/initial_connect_string.c \ src/core/client_config/lb_policies/pick_first.c \ src/core/client_config/lb_policies/round_robin.c \ src/core/client_config/lb_policy.c \ @@ -4584,6 +4586,8 @@ LIBGRPC_UNSECURE_SRC = \ src/core/channel/noop_filter.c \ src/core/client_config/client_config.c \ src/core/client_config/connector.c \ + src/core/client_config/default_initial_connect_string.c \ + src/core/client_config/initial_connect_string.c \ src/core/client_config/lb_policies/pick_first.c \ src/core/client_config/lb_policies/round_robin.c \ src/core/client_config/lb_policy.c \ diff --git a/binding.gyp b/binding.gyp index 52e0ea6c394..7d97f53640f 100644 --- a/binding.gyp +++ b/binding.gyp @@ -185,6 +185,8 @@ 'src/core/channel/noop_filter.c', 'src/core/client_config/client_config.c', 'src/core/client_config/connector.c', + 'src/core/client_config/default_initial_connect_string.c', + 'src/core/client_config/initial_connect_string.c', 'src/core/client_config/lb_policies/pick_first.c', 'src/core/client_config/lb_policies/round_robin.c', 'src/core/client_config/lb_policy.c', diff --git a/build.yaml b/build.yaml index 873606f9806..9632fa5407b 100644 --- a/build.yaml +++ b/build.yaml @@ -118,6 +118,7 @@ filegroups: - src/core/channel/noop_filter.h - src/core/client_config/client_config.h - src/core/client_config/connector.h + - src/core/client_config/initial_connect_string.h - src/core/client_config/lb_policies/pick_first.h - src/core/client_config/lb_policies/round_robin.h - src/core/client_config/lb_policy.h @@ -231,6 +232,8 @@ filegroups: - src/core/channel/noop_filter.c - src/core/client_config/client_config.c - src/core/client_config/connector.c + - src/core/client_config/default_initial_connect_string.c + - src/core/client_config/initial_connect_string.c - src/core/client_config/lb_policies/pick_first.c - src/core/client_config/lb_policies/round_robin.c - src/core/client_config/lb_policy.c diff --git a/gRPC.podspec b/gRPC.podspec index 2100fc86e7c..f60c03356c5 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -166,6 +166,7 @@ Pod::Spec.new do |s| 'src/core/channel/noop_filter.h', 'src/core/client_config/client_config.h', 'src/core/client_config/connector.h', + 'src/core/client_config/initial_connect_string.h', 'src/core/client_config/lb_policies/pick_first.h', 'src/core/client_config/lb_policies/round_robin.h', 'src/core/client_config/lb_policy.h', @@ -309,6 +310,8 @@ Pod::Spec.new do |s| 'src/core/channel/noop_filter.c', 'src/core/client_config/client_config.c', 'src/core/client_config/connector.c', + 'src/core/client_config/default_initial_connect_string.c', + 'src/core/client_config/initial_connect_string.c', 'src/core/client_config/lb_policies/pick_first.c', 'src/core/client_config/lb_policies/round_robin.c', 'src/core/client_config/lb_policy.c', @@ -460,6 +463,7 @@ Pod::Spec.new do |s| 'src/core/channel/noop_filter.h', 'src/core/client_config/client_config.h', 'src/core/client_config/connector.h', + 'src/core/client_config/initial_connect_string.h', 'src/core/client_config/lb_policies/pick_first.h', 'src/core/client_config/lb_policies/round_robin.h', 'src/core/client_config/lb_policy.h', diff --git a/src/core/client_config/connector.h b/src/core/client_config/connector.h index e9b8be4b530..a649f143aef 100644 --- a/src/core/client_config/connector.h +++ b/src/core/client_config/connector.h @@ -51,6 +51,8 @@ typedef struct { /** address to connect to */ const struct sockaddr *addr; size_t addr_len; + /** initial connect string to send */ + gpr_slice initial_connect_string; /** deadline for connection */ gpr_timespec deadline; /** channel arguments (to be passed to transport) */ diff --git a/src/core/client_config/default_initial_connect_string.c b/src/core/client_config/default_initial_connect_string.c new file mode 100644 index 00000000000..fa49d0d6fb0 --- /dev/null +++ b/src/core/client_config/default_initial_connect_string.c @@ -0,0 +1,40 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +void grpc_set_default_initial_connect_string(struct sockaddr **addr, + size_t *addr_len, + gpr_slice *initial_str) {} diff --git a/src/core/client_config/initial_connect_string.c b/src/core/client_config/initial_connect_string.c new file mode 100644 index 00000000000..19afa1675a7 --- /dev/null +++ b/src/core/client_config/initial_connect_string.c @@ -0,0 +1,53 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "src/core/client_config/initial_connect_string.h" + +#include + +extern void grpc_set_default_initial_connect_string(struct sockaddr **addr, + size_t *addr_len, + gpr_slice *initial_str); + +static grpc_set_initial_connect_string_func g_set_initial_connect_string_func = + grpc_set_default_initial_connect_string; + +void grpc_test_set_initial_connect_string_function( + grpc_set_initial_connect_string_func func) { + g_set_initial_connect_string_func = func; +} + +void grpc_set_initial_connect_string(struct sockaddr **addr, size_t *addr_len, + gpr_slice *initial_str) { + g_set_initial_connect_string_func(addr, addr_len, initial_str); +} diff --git a/src/core/client_config/initial_connect_string.h b/src/core/client_config/initial_connect_string.h new file mode 100644 index 00000000000..64da9cc971f --- /dev/null +++ b/src/core/client_config/initial_connect_string.h @@ -0,0 +1,51 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef GRPC_INTERNAL_CORE_CLIENT_CONFIG_INITIAL_CONNECT_STRING_H +#define GRPC_INTERNAL_CORE_CLIENT_CONFIG_INITIAL_CONNECT_STRING_H + +#include + +#include + +typedef void (*grpc_set_initial_connect_string_func)(struct sockaddr **addr, + size_t *addr_len, + gpr_slice *initial_str); +void grpc_test_set_initial_connect_string_function( + grpc_set_initial_connect_string_func func); + +/** Set a string to be sent once connected. Optionally reset addr. */ +void grpc_set_initial_connect_string(struct sockaddr **addr, size_t *addr_len, + gpr_slice *connect_string); + +#endif /* GRPC_INTERNAL_CORE_CLIENT_CONFIG_INITIAL_CONNECT_STRING_H */ diff --git a/src/core/client_config/subchannel.c b/src/core/client_config/subchannel.c index 0401dd3868b..f13bc0736e4 100644 --- a/src/core/client_config/subchannel.c +++ b/src/core/client_config/subchannel.c @@ -40,6 +40,7 @@ #include "src/core/channel/channel_args.h" #include "src/core/channel/client_channel.h" #include "src/core/channel/connected_channel.h" +#include "src/core/client_config/initial_connect_string.h" #include "src/core/iomgr/timer.h" #include "src/core/transport/connectivity_state.h" #include "src/core/surface/channel.h" @@ -85,6 +86,8 @@ struct grpc_subchannel { /** address to connect to */ struct sockaddr *addr; size_t addr_len; + /** initial string to send to peer */ + gpr_slice initial_connect_string; /** metadata context */ grpc_mdctx *mdctx; /** master channel - the grpc_channel instance that ultimately owns @@ -261,6 +264,7 @@ static void subchannel_destroy(grpc_exec_ctx *exec_ctx, grpc_subchannel *c) { gpr_free((void *)c->filters); grpc_channel_args_destroy(c->args); gpr_free(c->addr); + gpr_slice_unref(c->initial_connect_string); grpc_mdctx_unref(c->mdctx); grpc_connectivity_state_destroy(exec_ctx, &c->state_tracker); grpc_connector_unref(exec_ctx, c->connector); @@ -299,6 +303,8 @@ grpc_subchannel *grpc_subchannel_create(grpc_connector *connector, c->addr = gpr_malloc(args->addr_len); memcpy(c->addr, args->addr, args->addr_len); c->addr_len = args->addr_len; + grpc_set_initial_connect_string(&c->addr, &c->addr_len, + &c->initial_connect_string); c->args = grpc_channel_args_copy(args->args); c->mdctx = args->mdctx; c->master = args->master; @@ -343,6 +349,7 @@ static void continue_connect(grpc_exec_ctx *exec_ctx, grpc_subchannel *c) { args.addr_len = c->addr_len; args.deadline = compute_connect_deadline(c); args.channel_args = c->args; + args.initial_connect_string = c->initial_connect_string; grpc_connector_connect(exec_ctx, c->connector, &args, &c->connecting_result, &c->connected); diff --git a/src/core/surface/secure_channel_create.c b/src/core/surface/secure_channel_create.c index 1282ee99ed7..ae643291a65 100644 --- a/src/core/surface/secure_channel_create.c +++ b/src/core/surface/secure_channel_create.c @@ -37,6 +37,8 @@ #include #include +#include +#include #include "src/core/census/grpc_filter.h" #include "src/core/channel/channel_args.h" @@ -61,6 +63,8 @@ typedef struct { grpc_closure *notify; grpc_connect_in_args args; grpc_connect_out_args *result; + grpc_closure initial_string_sent; + gpr_slice_buffer initial_string_buffer; gpr_mu mu; grpc_endpoint *connecting_endpoint; @@ -80,6 +84,7 @@ static void connector_unref(grpc_exec_ctx *exec_ctx, grpc_connector *con) { connector *c = (connector *)con; if (gpr_unref(&c->refs)) { grpc_mdctx_unref(c->mdctx); + /* c->initial_string_buffer does not need to be destroyed */ gpr_free(c); } } @@ -118,6 +123,14 @@ static void on_secure_handshake_done(grpc_exec_ctx *exec_ctx, void *arg, notify->cb(exec_ctx, notify->cb_arg, 1); } +static void on_initial_connect_string_sent(grpc_exec_ctx *exec_ctx, void *arg, + int success) { + connector *c = arg; + grpc_security_connector_do_handshake(exec_ctx, &c->security_connector->base, + c->connecting_endpoint, + on_secure_handshake_done, c); +} + static void connected(grpc_exec_ctx *exec_ctx, void *arg, int success) { connector *c = arg; grpc_closure *notify; @@ -127,8 +140,19 @@ static void connected(grpc_exec_ctx *exec_ctx, void *arg, int success) { GPR_ASSERT(c->connecting_endpoint == NULL); c->connecting_endpoint = tcp; gpr_mu_unlock(&c->mu); - grpc_security_connector_do_handshake(exec_ctx, &c->security_connector->base, - tcp, on_secure_handshake_done, c); + if (!GPR_SLICE_IS_EMPTY(c->args.initial_connect_string)) { + grpc_closure_init(&c->initial_string_sent, on_initial_connect_string_sent, + c); + gpr_slice_buffer_init(&c->initial_string_buffer); + gpr_slice_buffer_add(&c->initial_string_buffer, + c->args.initial_connect_string); + grpc_endpoint_write(exec_ctx, tcp, &c->initial_string_buffer, + &c->initial_string_sent); + } else { + grpc_security_connector_do_handshake(exec_ctx, + &c->security_connector->base, tcp, + on_secure_handshake_done, c); + } } else { memset(c->result, 0, sizeof(*c->result)); notify = c->notify; diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index 0ab0656265f..fbaad978674 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -793,6 +793,7 @@ src/core/channel/http_server_filter.h \ src/core/channel/noop_filter.h \ src/core/client_config/client_config.h \ src/core/client_config/connector.h \ +src/core/client_config/initial_connect_string.h \ src/core/client_config/lb_policies/pick_first.h \ src/core/client_config/lb_policies/round_robin.h \ src/core/client_config/lb_policy.h \ @@ -929,6 +930,8 @@ src/core/channel/http_server_filter.c \ src/core/channel/noop_filter.c \ src/core/client_config/client_config.c \ src/core/client_config/connector.c \ +src/core/client_config/default_initial_connect_string.c \ +src/core/client_config/initial_connect_string.c \ src/core/client_config/lb_policies/pick_first.c \ src/core/client_config/lb_policies/round_robin.c \ src/core/client_config/lb_policy.c \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 7f4b339a53d..cffc158f056 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -13300,6 +13300,7 @@ "src/core/channel/noop_filter.h", "src/core/client_config/client_config.h", "src/core/client_config/connector.h", + "src/core/client_config/initial_connect_string.h", "src/core/client_config/lb_policies/pick_first.h", "src/core/client_config/lb_policies/round_robin.h", "src/core/client_config/lb_policy.h", @@ -13456,6 +13457,9 @@ "src/core/client_config/client_config.h", "src/core/client_config/connector.c", "src/core/client_config/connector.h", + "src/core/client_config/default_initial_connect_string.c", + "src/core/client_config/initial_connect_string.c", + "src/core/client_config/initial_connect_string.h", "src/core/client_config/lb_policies/pick_first.c", "src/core/client_config/lb_policies/pick_first.h", "src/core/client_config/lb_policies/round_robin.c", @@ -13809,6 +13813,7 @@ "src/core/channel/noop_filter.h", "src/core/client_config/client_config.h", "src/core/client_config/connector.h", + "src/core/client_config/initial_connect_string.h", "src/core/client_config/lb_policies/pick_first.h", "src/core/client_config/lb_policies/round_robin.h", "src/core/client_config/lb_policy.h", @@ -13951,6 +13956,9 @@ "src/core/client_config/client_config.h", "src/core/client_config/connector.c", "src/core/client_config/connector.h", + "src/core/client_config/default_initial_connect_string.c", + "src/core/client_config/initial_connect_string.c", + "src/core/client_config/initial_connect_string.h", "src/core/client_config/lb_policies/pick_first.c", "src/core/client_config/lb_policies/pick_first.h", "src/core/client_config/lb_policies/round_robin.c", diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj index dc85131dc3f..37645c31fd0 100644 --- a/vsprojects/vcxproj/grpc/grpc.vcxproj +++ b/vsprojects/vcxproj/grpc/grpc.vcxproj @@ -279,6 +279,7 @@ + @@ -451,6 +452,10 @@ + + + + diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters index 66dd86e2395..82b773e85e4 100644 --- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters +++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters @@ -103,6 +103,12 @@ src\core\client_config + + src\core\client_config + + + src\core\client_config + src\core\client_config\lb_policies @@ -548,6 +554,9 @@ src\core\client_config + + src\core\client_config + src\core\client_config\lb_policies diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj index d3e2fddcb39..ac73b43c926 100644 --- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj +++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj @@ -258,6 +258,7 @@ + @@ -390,6 +391,10 @@ + + + + diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters index e19c6dd3271..7336d0d0cfd 100644 --- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters +++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters @@ -43,6 +43,12 @@ src\core\client_config + + src\core\client_config + + + src\core\client_config + src\core\client_config\lb_policies @@ -446,6 +452,9 @@ src\core\client_config + + src\core\client_config + src\core\client_config\lb_policies