From f5809cced8c1161645f964c8b011c9e54e6ae075 Mon Sep 17 00:00:00 2001 From: Hannan Ali Date: Tue, 28 Nov 2017 06:16:44 -0700 Subject: [PATCH 01/26] Correct the link to the Streams Spec Repo Streams Specification is being worked on in it's own repository under WHATWG --- doc/PROTOCOL-WEB.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/PROTOCOL-WEB.md b/doc/PROTOCOL-WEB.md index 226871d7aed..0de10837828 100644 --- a/doc/PROTOCOL-WEB.md +++ b/doc/PROTOCOL-WEB.md @@ -29,7 +29,7 @@ More specifically, we expect the protocol to * evolve over time, mainly to optimize for browser clients or support web-specific features such as CORS, XSRF * become optional (in 1-2 years) when browsers are able to speak the native -gRPC protocol via the new [whatwg fetch/streams API](https://github.com/whatwg/fetch) +gRPC protocol via the new [whatwg streams API](https://github.com/whatwg/streams) # Protocol differences vs [gRPC over HTTP2](https://grpc.io/docs/guides/wire.html) From 7eb270086e2db235837e51374d8831f7ba140d19 Mon Sep 17 00:00:00 2001 From: Matthew Nuckolls Date: Sun, 25 Feb 2018 08:24:16 -0800 Subject: [PATCH 02/26] Add subcommand to windows install instructions As written, windows ninja-based build and install instructions successfully build gRPC, but do not install anything. Additionally, the last line of the instructions does nothing, because it duplicates the effect of the next-to-last-line. Adding "install" to the last line fixes both issues. --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 810f2b5f36b..dde937e2473 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -142,7 +142,7 @@ installed to be able to compile the C/C++ sources. > call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x64 > cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release > cmake --build . -> ninja +> ninja install ``` ### msys2 (with mingw) From ec27b28121dec4c8a6cad0eab60efec706114718 Mon Sep 17 00:00:00 2001 From: Ian Sturdy Date: Wed, 7 Mar 2018 11:27:59 -0800 Subject: [PATCH 03/26] Fix C++ codegen with bazel in subrepositories --- bazel/generate_cc.bzl | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/bazel/generate_cc.bzl b/bazel/generate_cc.bzl index f88ee2f56f1..11affaa4c7c 100644 --- a/bazel/generate_cc.bzl +++ b/bazel/generate_cc.bzl @@ -10,7 +10,16 @@ def generate_cc_impl(ctx): includes = [f for src in ctx.attr.srcs for f in src.proto.transitive_imports] outs = [] # label_len is length of the path from WORKSPACE root to the location of this build file - label_len = len(ctx.label.package) + 1 + label_len = 0 + # proto_root is the directory relative to which generated include paths should be + proto_root = "" + if ctx.label.package: + # The +1 is for the trailing slash. + label_len += len(ctx.label.package) + 1 + if ctx.label.workspace_root: + label_len += len(ctx.label.workspace_root) + 1 + proto_root = "/" + ctx.label.workspace_root + if ctx.executable.plugin: outs += [proto.path[label_len:-len(".proto")] + ".grpc.pb.h" for proto in protos] outs += [proto.path[label_len:-len(".proto")] + ".grpc.pb.cc" for proto in protos] @@ -20,7 +29,7 @@ def generate_cc_impl(ctx): outs += [proto.path[label_len:-len(".proto")] + ".pb.h" for proto in protos] outs += [proto.path[label_len:-len(".proto")] + ".pb.cc" for proto in protos] out_files = [ctx.new_file(out) for out in outs] - dir_out = str(ctx.genfiles_dir.path) + dir_out = str(ctx.genfiles_dir.path + proto_root) arguments = [] if ctx.executable.plugin: @@ -33,7 +42,11 @@ def generate_cc_impl(ctx): else: arguments += ["--cpp_out=" + ",".join(ctx.attr.flags) + ":" + dir_out] additional_input = [] - arguments += ["-I{0}={0}".format(include.path) for include in includes] + # Import protos relative to the workspace root so that protoc prints the right + # include paths. + arguments += ["--proto_path=" + (ctx.label.workspace_root or ".")] + # A second include so that protoc puts the generated code in the right directory. + arguments += ["--proto_path={0}{1}".format(dir_out, proto_root)] arguments += [proto.path for proto in protos] # create a list of well known proto files if the argument is non-None From 3a8c0d6a192cc969d9f9e5d72a968251d93459a7 Mon Sep 17 00:00:00 2001 From: Ian Sturdy Date: Wed, 7 Mar 2018 12:11:21 -0800 Subject: [PATCH 04/26] Add external bindings for targets needed for the cc_grpc_library rule. --- bazel/grpc_deps.bzl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl index a441c3ff3d0..6b3a55379e9 100644 --- a/bazel/grpc_deps.bzl +++ b/bazel/grpc_deps.bzl @@ -57,6 +57,16 @@ def grpc_deps(): actual = "@com_github_gflags_gflags//:gflags", ) + native.bind( + name = "grpc_cpp_plugin", + actual = "@com_github_grpc_grpc//:grpc_cpp_plugin" + ) + + native.bind( + name = "grpc++_codegen_proto", + actual = "@com_github_grpc_grpc//:grpc++_codegen_proto" + ) + if "boringssl" not in native.existing_rules(): native.http_archive( name = "boringssl", From e6dfa9cd74fe7fa187072b362719d2a1ba386e3e Mon Sep 17 00:00:00 2001 From: Ian Sturdy Date: Mon, 19 Mar 2018 16:12:45 -0700 Subject: [PATCH 05/26] Fix cross-repository proto includes. --- bazel/generate_cc.bzl | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/bazel/generate_cc.bzl b/bazel/generate_cc.bzl index 11affaa4c7c..96610d873ef 100644 --- a/bazel/generate_cc.bzl +++ b/bazel/generate_cc.bzl @@ -42,10 +42,19 @@ def generate_cc_impl(ctx): else: arguments += ["--cpp_out=" + ",".join(ctx.attr.flags) + ":" + dir_out] additional_input = [] - # Import protos relative to the workspace root so that protoc prints the right - # include paths. - arguments += ["--proto_path=" + (ctx.label.workspace_root or ".")] - # A second include so that protoc puts the generated code in the right directory. + + # Import protos relative to their workspace root so that protoc prints the + # right include paths. + for include in includes: + directory = include.path + if directory.startswith("external"): + external_sep = directory.find("/") + repository_sep = directory.find("/", external_sep + 1) + arguments += ["--proto_path=" + directory[:repository_sep]] + else: + arguments += ["--proto_path=."] + # Include the output directory so that protoc puts the generated code in the + # right directory. arguments += ["--proto_path={0}{1}".format(dir_out, proto_root)] arguments += [proto.path for proto in protos] From 8b7007ad7b99494d449b8345a2bf25461ea8ce3e Mon Sep 17 00:00:00 2001 From: Daniel Neighman Date: Mon, 4 Dec 2017 17:51:44 -0800 Subject: [PATCH 06/26] Updates the ruby generator RubyAsType to correctly account for underscores in packages Prior to this change, when the ruby generator tried to reference an entity that was not part of the same package (or a direct parent package) and the package contains underscores, the result would simply uppercase the first character. It should however uppercase each letter that proceeds an underscore and remove underscores. i.e. ``` package my_package.service; import "my_package/data.proto"; service MyService { rpc Test (data.Request) returns data.Response {} } ``` Was ```ruby # ... rpc :Test, My_package::Data::REquest, My_package::Data::Response # ... ``` Should be: ```ruby # ... rpc :Test, MyPackage::Data::REquest, My_package::Data::Response # ... ``` --- src/compiler/ruby_generator.cc | 2 +- src/compiler/ruby_generator_string-inl.h | 20 +++++-- .../package_with_underscore/checker_spec.rb | 54 +++++++++++++++++++ .../pb/package_with_underscore/data.proto | 23 ++++++++ .../pb/package_with_underscore/service.proto | 23 ++++++++ tools/run_tests/helper_scripts/run_ruby.sh | 3 ++ 6 files changed, 119 insertions(+), 6 deletions(-) create mode 100644 src/ruby/spec/pb/package_with_underscore/checker_spec.rb create mode 100644 src/ruby/spec/pb/package_with_underscore/data.proto create mode 100644 src/ruby/spec/pb/package_with_underscore/service.proto diff --git a/src/compiler/ruby_generator.cc b/src/compiler/ruby_generator.cc index e81dea603ba..c7af9c38fad 100644 --- a/src/compiler/ruby_generator.cc +++ b/src/compiler/ruby_generator.cc @@ -73,7 +73,7 @@ void PrintService(const ServiceDescriptor* service, const grpc::string& package, // Begin the service module std::map module_vars = ListToDict({ "module.name", - CapitalizeFirst(service->name()), + Modularize(service->name()), }); out->Print(module_vars, "module $module.name$\n"); out->Indent(); diff --git a/src/compiler/ruby_generator_string-inl.h b/src/compiler/ruby_generator_string-inl.h index fb429784bb7..ecfe796e7a2 100644 --- a/src/compiler/ruby_generator_string-inl.h +++ b/src/compiler/ruby_generator_string-inl.h @@ -81,13 +81,23 @@ inline bool ReplacePrefix(grpc::string* s, const grpc::string& from, return true; } -// CapitalizeFirst capitalizes the first char in a string. -inline grpc::string CapitalizeFirst(grpc::string s) { +// Modularize converts a string into a ruby module compatible name +inline grpc::string Modularize(grpc::string s) { if (s.empty()) { return s; } - s[0] = ::toupper(s[0]); - return s; + grpc::string new_string = ""; + bool was_last_underscore = false; + new_string.append(1, ::toupper(s[0])); + for (grpc::string::size_type i = 1; i < s.size(); ++i) { + if (was_last_underscore && s[i] != '_') { + new_string.append(1, ::toupper(s[i])); + } else if (s[i] != '_') { + new_string.append(1, s[i]); + } + was_last_underscore = s[i] == '_'; + } + return new_string; } // RubyTypeOf updates a proto type to the required ruby equivalent. @@ -106,7 +116,7 @@ inline grpc::string RubyTypeOf(const grpc::string& a_type, res += "::"; // switch '.' to the ruby module delim } if (i < prefixes_and_type.size() - 1) { - res += CapitalizeFirst(prefixes_and_type[i]); // capitalize pkgs + res += Modularize(prefixes_and_type[i]); // capitalize pkgs } else { res += prefixes_and_type[i]; } diff --git a/src/ruby/spec/pb/package_with_underscore/checker_spec.rb b/src/ruby/spec/pb/package_with_underscore/checker_spec.rb new file mode 100644 index 00000000000..6155b3b9343 --- /dev/null +++ b/src/ruby/spec/pb/package_with_underscore/checker_spec.rb @@ -0,0 +1,54 @@ +# Copyright 2016 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +require 'open3' +require 'tmpdir' + +def debug_mode? + !ENV['CONFIG'].nil? && ENV['CONFIG'] == 'dbg' +end + +describe 'Package with underscore protobuf code generation' do + it 'should have the same content as created by code generation' do + root_dir = File.join(File.dirname(__FILE__), '..', '..', '..', '..', '..') + pb_dir = File.join(root_dir, 'src', 'ruby', 'spec', 'pb') + + bins_sub_dir = debug_mode? ? 'dbg' : 'opt' + bins_dir = File.join(root_dir, 'bins', bins_sub_dir) + + plugin = File.join(bins_dir, 'grpc_ruby_plugin') + protoc = File.join(bins_dir, 'protobuf', 'protoc') + + got = nil + + Dir.mktmpdir do |tmp_dir| + gen_out = File.join(tmp_dir, 'package_with_underscore', 'service_services_pb.rb') + + pid = spawn( + protoc, + '-I.', + 'package_with_underscore/service.proto', + "--grpc_out=#{tmp_dir}", + "--plugin=protoc-gen-grpc=#{plugin}", + chdir: pb_dir) + Process.waitpid2(pid) + File.open(gen_out) { |f| got = f.read } + end + + correct_modularized_rpc = 'rpc :TestOne, ' \ + 'Grpc::Testing::PackageWithUnderscore::Data::Request, ' \ + 'Grpc::Testing::PackageWithUnderscore::Data::Response' + expect(got).to include(correct_modularized_rpc) + end +end diff --git a/src/ruby/spec/pb/package_with_underscore/data.proto b/src/ruby/spec/pb/package_with_underscore/data.proto new file mode 100644 index 00000000000..2706f1d7be4 --- /dev/null +++ b/src/ruby/spec/pb/package_with_underscore/data.proto @@ -0,0 +1,23 @@ +// Copyright 2018 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package grpc.testing.package_with_underscore.data; + +message Request { +} + +message Response { +} diff --git a/src/ruby/spec/pb/package_with_underscore/service.proto b/src/ruby/spec/pb/package_with_underscore/service.proto new file mode 100644 index 00000000000..814c7898cda --- /dev/null +++ b/src/ruby/spec/pb/package_with_underscore/service.proto @@ -0,0 +1,23 @@ +// Copyright 2018 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package grpc.testing.package_with_underscore.service; + +import "package_with_underscore/data.proto"; + +service MyService { + rpc TestOne(data.Request) returns (data.Response) {} +} diff --git a/tools/run_tests/helper_scripts/run_ruby.sh b/tools/run_tests/helper_scripts/run_ruby.sh index 4bd7d743c1a..aefdc6fc61d 100755 --- a/tools/run_tests/helper_scripts/run_ruby.sh +++ b/tools/run_tests/helper_scripts/run_ruby.sh @@ -18,4 +18,7 @@ set -ex # change to grpc repo root cd $(dirname $0)/../../.. +# build grpc_ruby_plugin +make grpc_ruby_plugin -j8 + rake From cdc0e28fe56fafc5134cbf137a5894644ff9a22d Mon Sep 17 00:00:00 2001 From: Srini Polavarapu Date: Mon, 26 Mar 2018 18:16:15 -0700 Subject: [PATCH 07/26] Bump protobuf version check from 3.0.0 to 3.5.0 --- Makefile | 354 ++++++++++++++++++------------------ templates/Makefile.template | 10 +- 2 files changed, 182 insertions(+), 182 deletions(-) diff --git a/Makefile b/Makefile index f29e71b45ff..43a942c825d 100644 --- a/Makefile +++ b/Makefile @@ -503,7 +503,7 @@ ifeq ($(HAS_PKG_CONFIG),true) OPENSSL_ALPN_CHECK_CMD = $(PKG_CONFIG) --atleast-version=1.0.2 openssl OPENSSL_NPN_CHECK_CMD = $(PKG_CONFIG) --atleast-version=1.0.1 openssl ZLIB_CHECK_CMD = $(PKG_CONFIG) --exists zlib -PROTOBUF_CHECK_CMD = $(PKG_CONFIG) --atleast-version=3.0.0 protobuf +PROTOBUF_CHECK_CMD = $(PKG_CONFIG) --atleast-version=3.5.0 protobuf CARES_CHECK_CMD = $(PKG_CONFIG) --atleast-version=1.11.0 libcares else # HAS_PKG_CONFIG @@ -919,7 +919,7 @@ protobuf_dep_message: @echo @echo "DEPENDENCY ERROR" @echo - @echo "The target you are trying to run requires protobuf 3.0.0+" + @echo "The target you are trying to run requires protobuf 3.5.0+" @echo "Your system doesn't have it, and neither does the third_party directory." @echo @echo "Please consult INSTALL to get more information." @@ -933,7 +933,7 @@ protoc_dep_message: @echo @echo "DEPENDENCY ERROR" @echo - @echo "The target you are trying to run requires protobuf-compiler 3.0.0+" + @echo "The target you are trying to run requires protobuf-compiler 3.5.0+" @echo "Your system doesn't have it, and neither does the third_party directory." @echo @echo "Please consult INSTALL to get more information." @@ -14620,7 +14620,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alarm_test: protobuf_dep_error @@ -14663,7 +14663,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_counter_test: protobuf_dep_error @@ -14706,7 +14706,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_crypt_test: protobuf_dep_error @@ -14749,7 +14749,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_crypter_test: protobuf_dep_error @@ -14792,7 +14792,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_frame_handler_test: protobuf_dep_error @@ -14836,7 +14836,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_frame_protector_test: protobuf_dep_error @@ -14881,7 +14881,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_grpc_record_protocol_test: protobuf_dep_error @@ -14924,7 +14924,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_handshaker_client_test: protobuf_dep_error @@ -14967,7 +14967,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_handshaker_service_api_test: protobuf_dep_error @@ -15010,7 +15010,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_iovec_record_protocol_test: protobuf_dep_error @@ -15053,7 +15053,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_security_connector_test: protobuf_dep_error @@ -15096,7 +15096,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_tsi_handshaker_test: protobuf_dep_error @@ -15139,7 +15139,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_tsi_utils_test: protobuf_dep_error @@ -15182,7 +15182,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/alts_zero_copy_grpc_protector_test: protobuf_dep_error @@ -15225,7 +15225,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/async_end2end_test: protobuf_dep_error @@ -15268,7 +15268,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/auth_property_iterator_test: protobuf_dep_error @@ -15311,7 +15311,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/backoff_test: protobuf_dep_error @@ -15354,7 +15354,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bdp_estimator_test: protobuf_dep_error @@ -15397,7 +15397,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_arena: protobuf_dep_error @@ -15441,7 +15441,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_call_create: protobuf_dep_error @@ -15485,7 +15485,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_chttp2_hpack: protobuf_dep_error @@ -15529,7 +15529,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_chttp2_transport: protobuf_dep_error @@ -15573,7 +15573,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_closure: protobuf_dep_error @@ -15617,7 +15617,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_cq: protobuf_dep_error @@ -15661,7 +15661,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_cq_multiple_threads: protobuf_dep_error @@ -15705,7 +15705,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_error: protobuf_dep_error @@ -15749,7 +15749,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_fullstack_streaming_ping_pong: protobuf_dep_error @@ -15793,7 +15793,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_fullstack_streaming_pump: protobuf_dep_error @@ -15837,7 +15837,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_fullstack_trickle: protobuf_dep_error @@ -15881,7 +15881,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_fullstack_unary_ping_pong: protobuf_dep_error @@ -15925,7 +15925,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_metadata: protobuf_dep_error @@ -15969,7 +15969,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/bm_pollset: protobuf_dep_error @@ -16013,7 +16013,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/byte_stream_test: protobuf_dep_error @@ -16056,7 +16056,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/channel_arguments_test: protobuf_dep_error @@ -16099,7 +16099,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/channel_filter_test: protobuf_dep_error @@ -16143,7 +16143,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/channel_trace_test: protobuf_dep_error @@ -16189,7 +16189,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/check_gcp_environment_linux_test: protobuf_dep_error @@ -16232,7 +16232,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/check_gcp_environment_windows_test: protobuf_dep_error @@ -16275,7 +16275,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/chttp2_settings_timeout_test: protobuf_dep_error @@ -16318,7 +16318,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/cli_call_test: protobuf_dep_error @@ -16362,7 +16362,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/client_channel_stress_test: protobuf_dep_error @@ -16408,7 +16408,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/client_crash_test: protobuf_dep_error @@ -16451,7 +16451,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/client_crash_test_server: protobuf_dep_error @@ -16494,7 +16494,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/client_lb_end2end_test: protobuf_dep_error @@ -16542,7 +16542,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/codegen_test_full: protobuf_dep_error @@ -16602,7 +16602,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/codegen_test_minimal: protobuf_dep_error @@ -16659,7 +16659,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/credentials_test: protobuf_dep_error @@ -16702,7 +16702,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/cxx_byte_buffer_test: protobuf_dep_error @@ -16745,7 +16745,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/cxx_slice_test: protobuf_dep_error @@ -16788,7 +16788,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/cxx_string_ref_test: protobuf_dep_error @@ -16831,7 +16831,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/cxx_time_test: protobuf_dep_error @@ -16874,7 +16874,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/end2end_test: protobuf_dep_error @@ -16918,7 +16918,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/error_details_test: protobuf_dep_error @@ -16964,7 +16964,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/exception_test: protobuf_dep_error @@ -17007,7 +17007,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/filter_end2end_test: protobuf_dep_error @@ -17050,7 +17050,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/generic_end2end_test: protobuf_dep_error @@ -17094,7 +17094,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/golden_file_test: protobuf_dep_error @@ -17140,7 +17140,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpc_alts_credentials_options_test: protobuf_dep_error @@ -17183,7 +17183,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpc_cli: protobuf_dep_error @@ -17218,7 +17218,7 @@ GRPC_CPP_PLUGIN_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basen ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpc_cpp_plugin: protobuf_dep_error @@ -17249,7 +17249,7 @@ GRPC_CSHARP_PLUGIN_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(ba ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpc_csharp_plugin: protobuf_dep_error @@ -17280,7 +17280,7 @@ GRPC_NODE_PLUGIN_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(base ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpc_node_plugin: protobuf_dep_error @@ -17311,7 +17311,7 @@ GRPC_OBJECTIVE_C_PLUGIN_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin: protobuf_dep_error @@ -17342,7 +17342,7 @@ GRPC_PHP_PLUGIN_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basen ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpc_php_plugin: protobuf_dep_error @@ -17373,7 +17373,7 @@ GRPC_PYTHON_PLUGIN_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(ba ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpc_python_plugin: protobuf_dep_error @@ -17404,7 +17404,7 @@ GRPC_RUBY_PLUGIN_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(base ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpc_ruby_plugin: protobuf_dep_error @@ -17445,7 +17445,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpc_tool_test: protobuf_dep_error @@ -17494,7 +17494,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpclb_api_test: protobuf_dep_error @@ -17541,7 +17541,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/grpclb_end2end_test: protobuf_dep_error @@ -17587,7 +17587,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/h2_ssl_cert_test: protobuf_dep_error @@ -17630,7 +17630,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/h2_ssl_session_reuse_test: protobuf_dep_error @@ -17673,7 +17673,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/health_service_end2end_test: protobuf_dep_error @@ -17712,7 +17712,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/http2_client: protobuf_dep_error @@ -17747,7 +17747,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/hybrid_end2end_test: protobuf_dep_error @@ -17790,7 +17790,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/inlined_vector_test: protobuf_dep_error @@ -17833,7 +17833,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/inproc_sync_unary_ping_pong_test: protobuf_dep_error @@ -17872,7 +17872,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/interop_client: protobuf_dep_error @@ -17903,7 +17903,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/interop_server: protobuf_dep_error @@ -17938,7 +17938,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/interop_test: protobuf_dep_error @@ -17981,7 +17981,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/json_run_localhost: protobuf_dep_error @@ -18024,7 +18024,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/memory_test: protobuf_dep_error @@ -18068,7 +18068,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/metrics_client: protobuf_dep_error @@ -18114,7 +18114,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/mock_test: protobuf_dep_error @@ -18157,7 +18157,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/nonblocking_test: protobuf_dep_error @@ -18200,7 +18200,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/noop-benchmark: protobuf_dep_error @@ -18244,7 +18244,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/orphanable_test: protobuf_dep_error @@ -18287,7 +18287,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/proto_server_reflection_test: protobuf_dep_error @@ -18330,7 +18330,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/proto_utils_test: protobuf_dep_error @@ -18373,7 +18373,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/qps_interarrival_test: protobuf_dep_error @@ -18416,7 +18416,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/qps_json_driver: protobuf_dep_error @@ -18459,7 +18459,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/qps_openloop_test: protobuf_dep_error @@ -18502,7 +18502,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/qps_worker: protobuf_dep_error @@ -18548,7 +18548,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/reconnect_interop_client: protobuf_dep_error @@ -18601,7 +18601,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/reconnect_interop_server: protobuf_dep_error @@ -18651,7 +18651,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/ref_counted_ptr_test: protobuf_dep_error @@ -18694,7 +18694,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/ref_counted_test: protobuf_dep_error @@ -18737,7 +18737,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/secure_auth_context_test: protobuf_dep_error @@ -18780,7 +18780,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/secure_sync_unary_ping_pong_test: protobuf_dep_error @@ -18823,7 +18823,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/server_builder_plugin_test: protobuf_dep_error @@ -18868,7 +18868,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/server_builder_test: protobuf_dep_error @@ -18916,7 +18916,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/server_context_test_spouse_test: protobuf_dep_error @@ -18959,7 +18959,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/server_crash_test: protobuf_dep_error @@ -19002,7 +19002,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/server_crash_test_client: protobuf_dep_error @@ -19045,7 +19045,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/server_early_return_test: protobuf_dep_error @@ -19090,7 +19090,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/server_request_call_test: protobuf_dep_error @@ -19138,7 +19138,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/shutdown_test: protobuf_dep_error @@ -19181,7 +19181,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/slice_hash_table_test: protobuf_dep_error @@ -19224,7 +19224,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/slice_weak_hash_table_test: protobuf_dep_error @@ -19267,7 +19267,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/stats_test: protobuf_dep_error @@ -19310,7 +19310,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/status_metadata_test: protobuf_dep_error @@ -19353,7 +19353,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/status_util_test: protobuf_dep_error @@ -19396,7 +19396,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/streaming_throughput_test: protobuf_dep_error @@ -19446,7 +19446,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/stress_test: protobuf_dep_error @@ -19507,7 +19507,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/thread_manager_test: protobuf_dep_error @@ -19550,7 +19550,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/thread_stress_test: protobuf_dep_error @@ -19593,7 +19593,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/transport_pid_controller_test: protobuf_dep_error @@ -19636,7 +19636,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/transport_security_common_api_test: protobuf_dep_error @@ -19679,7 +19679,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/writes_per_rpc_test: protobuf_dep_error @@ -19852,7 +19852,7 @@ $(BORINGSSL_CRYPTO_TEST_DATA_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_crypto_test_data: protobuf_dep_error @@ -19892,7 +19892,7 @@ $(BORINGSSL_ASN1_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_asn1_test: protobuf_dep_error @@ -19932,7 +19932,7 @@ $(BORINGSSL_BASE64_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_base64_test: protobuf_dep_error @@ -19972,7 +19972,7 @@ $(BORINGSSL_BIO_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_bio_test: protobuf_dep_error @@ -20012,7 +20012,7 @@ $(BORINGSSL_BUF_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_buf_test: protobuf_dep_error @@ -20052,7 +20052,7 @@ $(BORINGSSL_BYTESTRING_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_bytestring_test: protobuf_dep_error @@ -20092,7 +20092,7 @@ $(BORINGSSL_CHACHA_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_chacha_test: protobuf_dep_error @@ -20132,7 +20132,7 @@ $(BORINGSSL_AEAD_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_aead_test: protobuf_dep_error @@ -20172,7 +20172,7 @@ $(BORINGSSL_CIPHER_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_cipher_test: protobuf_dep_error @@ -20212,7 +20212,7 @@ $(BORINGSSL_CMAC_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_cmac_test: protobuf_dep_error @@ -20252,7 +20252,7 @@ $(BORINGSSL_COMPILER_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_compiler_test: protobuf_dep_error @@ -20292,7 +20292,7 @@ $(BORINGSSL_CONSTANT_TIME_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_constant_time_test: protobuf_dep_error @@ -20332,7 +20332,7 @@ $(BORINGSSL_ED25519_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_ed25519_test: protobuf_dep_error @@ -20372,7 +20372,7 @@ $(BORINGSSL_SPAKE25519_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_spake25519_test: protobuf_dep_error @@ -20412,7 +20412,7 @@ $(BORINGSSL_X25519_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_x25519_test: protobuf_dep_error @@ -20452,7 +20452,7 @@ $(BORINGSSL_DH_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_dh_test: protobuf_dep_error @@ -20492,7 +20492,7 @@ $(BORINGSSL_DIGEST_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_digest_test: protobuf_dep_error @@ -20532,7 +20532,7 @@ $(BORINGSSL_DSA_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_dsa_test: protobuf_dep_error @@ -20572,7 +20572,7 @@ $(BORINGSSL_ECDH_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_ecdh_test: protobuf_dep_error @@ -20612,7 +20612,7 @@ $(BORINGSSL_ERR_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_err_test: protobuf_dep_error @@ -20652,7 +20652,7 @@ $(BORINGSSL_EVP_EXTRA_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_evp_extra_test: protobuf_dep_error @@ -20692,7 +20692,7 @@ $(BORINGSSL_EVP_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_evp_test: protobuf_dep_error @@ -20732,7 +20732,7 @@ $(BORINGSSL_PBKDF_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_pbkdf_test: protobuf_dep_error @@ -20772,7 +20772,7 @@ $(BORINGSSL_SCRYPT_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_scrypt_test: protobuf_dep_error @@ -20812,7 +20812,7 @@ $(BORINGSSL_AES_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_aes_test: protobuf_dep_error @@ -20852,7 +20852,7 @@ $(BORINGSSL_BN_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_bn_test: protobuf_dep_error @@ -20892,7 +20892,7 @@ $(BORINGSSL_EC_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_ec_test: protobuf_dep_error @@ -20932,7 +20932,7 @@ $(BORINGSSL_P256-X86_64_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_p256-x86_64_test: protobuf_dep_error @@ -20972,7 +20972,7 @@ $(BORINGSSL_ECDSA_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_ecdsa_test: protobuf_dep_error @@ -21012,7 +21012,7 @@ $(BORINGSSL_GCM_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_gcm_test: protobuf_dep_error @@ -21052,7 +21052,7 @@ $(BORINGSSL_CTRDRBG_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_ctrdrbg_test: protobuf_dep_error @@ -21092,7 +21092,7 @@ $(BORINGSSL_HKDF_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_hkdf_test: protobuf_dep_error @@ -21132,7 +21132,7 @@ $(BORINGSSL_HMAC_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_hmac_test: protobuf_dep_error @@ -21172,7 +21172,7 @@ $(BORINGSSL_LHASH_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_lhash_test: protobuf_dep_error @@ -21212,7 +21212,7 @@ $(BORINGSSL_OBJ_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_obj_test: protobuf_dep_error @@ -21252,7 +21252,7 @@ $(BORINGSSL_PKCS7_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_pkcs7_test: protobuf_dep_error @@ -21292,7 +21292,7 @@ $(BORINGSSL_PKCS12_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_pkcs12_test: protobuf_dep_error @@ -21332,7 +21332,7 @@ $(BORINGSSL_PKCS8_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_pkcs8_test: protobuf_dep_error @@ -21372,7 +21372,7 @@ $(BORINGSSL_POLY1305_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_poly1305_test: protobuf_dep_error @@ -21412,7 +21412,7 @@ $(BORINGSSL_POOL_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_pool_test: protobuf_dep_error @@ -21452,7 +21452,7 @@ $(BORINGSSL_REFCOUNT_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_refcount_test: protobuf_dep_error @@ -21492,7 +21492,7 @@ $(BORINGSSL_RSA_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_rsa_test: protobuf_dep_error @@ -21532,7 +21532,7 @@ $(BORINGSSL_FILE_TEST_GTEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_file_test_gtest: protobuf_dep_error @@ -21572,7 +21572,7 @@ $(BORINGSSL_GTEST_MAIN_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_gtest_main: protobuf_dep_error @@ -21612,7 +21612,7 @@ $(BORINGSSL_THREAD_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_thread_test: protobuf_dep_error @@ -21652,7 +21652,7 @@ $(BORINGSSL_X509_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_x509_test: protobuf_dep_error @@ -21692,7 +21692,7 @@ $(BORINGSSL_TAB_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_tab_test: protobuf_dep_error @@ -21732,7 +21732,7 @@ $(BORINGSSL_V3NAME_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_v3name_test: protobuf_dep_error @@ -21772,7 +21772,7 @@ $(BORINGSSL_SPAN_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_span_test: protobuf_dep_error @@ -21812,7 +21812,7 @@ $(BORINGSSL_SSL_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/boringssl_ssl_test: protobuf_dep_error @@ -23046,7 +23046,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/resolver_component_test_unsecure: protobuf_dep_error @@ -23089,7 +23089,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/resolver_component_test: protobuf_dep_error @@ -23132,7 +23132,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/resolver_component_tests_runner_invoker_unsecure: protobuf_dep_error @@ -23175,7 +23175,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/resolver_component_tests_runner_invoker: protobuf_dep_error @@ -23218,7 +23218,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/address_sorting_test_unsecure: protobuf_dep_error @@ -23261,7 +23261,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/address_sorting_test: protobuf_dep_error diff --git a/templates/Makefile.template b/templates/Makefile.template index c0ce2e5cb46..354f2a2f403 100644 --- a/templates/Makefile.template +++ b/templates/Makefile.template @@ -416,7 +416,7 @@ OPENSSL_ALPN_CHECK_CMD = $(PKG_CONFIG) --atleast-version=1.0.2 openssl OPENSSL_NPN_CHECK_CMD = $(PKG_CONFIG) --atleast-version=1.0.1 openssl ZLIB_CHECK_CMD = $(PKG_CONFIG) --exists zlib - PROTOBUF_CHECK_CMD = $(PKG_CONFIG) --atleast-version=3.0.0 protobuf + PROTOBUF_CHECK_CMD = $(PKG_CONFIG) --atleast-version=3.5.0 protobuf CARES_CHECK_CMD = $(PKG_CONFIG) --atleast-version=1.11.0 libcares else # HAS_PKG_CONFIG @@ -844,7 +844,7 @@ @echo @echo "DEPENDENCY ERROR" @echo - @echo "The target you are trying to run requires protobuf 3.0.0+" + @echo "The target you are trying to run requires protobuf 3.5.0+" @echo "Your system doesn't have it, and neither does the third_party directory." @echo @echo "Please consult INSTALL to get more information." @@ -858,7 +858,7 @@ @echo @echo "DEPENDENCY ERROR" @echo - @echo "The target you are trying to run requires protobuf-compiler 3.0.0+" + @echo "The target you are trying to run requires protobuf-compiler 3.5.0+" @echo "Your system doesn't have it, and neither does the third_party directory." @echo @echo "Please consult INSTALL to get more information." @@ -1636,7 +1636,7 @@ % endif % if lib.language == 'c++': ## If the lib was C++, we have to close the Makefile's if that tested - ## the presence of protobuf 3.0.0+ + ## the presence of protobuf 3.5.0+ endif % endif @@ -1702,7 +1702,7 @@ ifeq ($(NO_PROTOBUF),true) - # You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. + # You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/${tgt.name}: protobuf_dep_error From 4fe2cd255544b8cbeff7b340760791d8d1fad93e Mon Sep 17 00:00:00 2001 From: jiangtaoli2016 Date: Wed, 28 Mar 2018 20:16:17 -0700 Subject: [PATCH 08/26] Init default root certs store once --- .../security/security_connector/security_connector.cc | 10 ---------- .../security/security_connector/security_connector.h | 9 --------- src/core/lib/surface/init.cc | 1 - src/core/lib/surface/init.h | 1 - src/core/lib/surface/init_secure.cc | 7 +------ src/core/lib/surface/init_unsecure.cc | 2 -- 6 files changed, 1 insertion(+), 29 deletions(-) diff --git a/src/core/lib/security/security_connector/security_connector.cc b/src/core/lib/security/security_connector/security_connector.cc index d7d5a8c4dee..3551061aa45 100644 --- a/src/core/lib/security/security_connector/security_connector.cc +++ b/src/core/lib/security/security_connector/security_connector.cc @@ -1151,16 +1151,6 @@ const char* DefaultSslRootStore::GetPemRootCerts() { GRPC_SLICE_START_PTR(default_pem_root_certs_); } -void DefaultSslRootStore::Initialize() { - default_root_store_ = nullptr; - default_pem_root_certs_ = grpc_empty_slice(); -} - -void DefaultSslRootStore::Destroy() { - tsi_ssl_root_certs_store_destroy(default_root_store_); - grpc_slice_unref_internal(default_pem_root_certs_); -} - grpc_slice DefaultSslRootStore::ComputePemRootCerts() { grpc_slice result = grpc_empty_slice(); // First try to load the roots from the environment. diff --git a/src/core/lib/security/security_connector/security_connector.h b/src/core/lib/security/security_connector/security_connector.h index 5d3d1e0f44f..c4cc19db817 100644 --- a/src/core/lib/security/security_connector/security_connector.h +++ b/src/core/lib/security/security_connector/security_connector.h @@ -256,15 +256,6 @@ class DefaultSslRootStore { // Gets the default PEM root certificate. static const char* GetPemRootCerts(); - // Initializes the SSL root store's underlying data structure. It does not - // load default SSL root certificates. Should only be called by - // grpc_security_init(). - static void Initialize(); - - // Destroys the default SSL root store. Should only be called by - // grpc_security_shutdown(). - static void Destroy(); - protected: // Returns default PEM root certificates in nullptr terminated grpc_slice. // This function is protected instead of private, so that it can be tested. diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index 52e0ee1c443..bd436d68575 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -172,7 +172,6 @@ void grpc_shutdown(void) { } } } - grpc_security_shutdown(); grpc_iomgr_shutdown(); gpr_timers_global_destroy(); grpc_tracer_shutdown(); diff --git a/src/core/lib/surface/init.h b/src/core/lib/surface/init.h index d8282b475bf..9353208332f 100644 --- a/src/core/lib/surface/init.h +++ b/src/core/lib/surface/init.h @@ -22,7 +22,6 @@ void grpc_register_security_filters(void); void grpc_security_pre_init(void); void grpc_security_init(void); -void grpc_security_shutdown(void); int grpc_is_initialized(void); #endif /* GRPC_CORE_LIB_SURFACE_INIT_H */ diff --git a/src/core/lib/surface/init_secure.cc b/src/core/lib/surface/init_secure.cc index caa67c2512c..28c6f7b121f 100644 --- a/src/core/lib/surface/init_secure.cc +++ b/src/core/lib/surface/init_secure.cc @@ -78,9 +78,4 @@ void grpc_register_security_filters(void) { maybe_prepend_server_auth_filter, nullptr); } -void grpc_security_init() { - grpc_security_register_handshaker_factories(); - grpc_core::DefaultSslRootStore::Initialize(); -} - -void grpc_security_shutdown() { grpc_core::DefaultSslRootStore::Destroy(); } +void grpc_security_init() { grpc_security_register_handshaker_factories(); } diff --git a/src/core/lib/surface/init_unsecure.cc b/src/core/lib/surface/init_unsecure.cc index 1c8d07b38b7..2b3bc643820 100644 --- a/src/core/lib/surface/init_unsecure.cc +++ b/src/core/lib/surface/init_unsecure.cc @@ -25,5 +25,3 @@ void grpc_security_pre_init(void) {} void grpc_register_security_filters(void) {} void grpc_security_init(void) {} - -void grpc_security_shutdown(void) {} From 4a510960c68aafcb0ea448593cbf2a53de76fbc5 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Thu, 29 Mar 2018 14:07:20 +0200 Subject: [PATCH 09/26] add distribtest for grpc being added with cmake add_subdirectory --- examples/cpp/helloworld/CMakeLists.txt | 63 ++++++++++++++----- .../run_distrib_test_cmake_as_submodule.sh | 25 ++++++++ .../artifacts/distribtest_targets.py | 1 + 3 files changed, 74 insertions(+), 15 deletions(-) create mode 100755 test/distrib/cpp/run_distrib_test_cmake_as_submodule.sh diff --git a/examples/cpp/helloworld/CMakeLists.txt b/examples/cpp/helloworld/CMakeLists.txt index 4f7d3fdddbf..d0f705f6d99 100644 --- a/examples/cpp/helloworld/CMakeLists.txt +++ b/examples/cpp/helloworld/CMakeLists.txt @@ -27,22 +27,55 @@ else() add_definitions(-D_WIN32_WINNT=0x600) endif() -# Find Protobuf installation -# Looks for protobuf-config.cmake file installed by Protobuf's cmake installation. -set(protobuf_MODULE_COMPATIBLE TRUE) -find_package(Protobuf CONFIG REQUIRED) -message(STATUS "Using protobuf ${protobuf_VERSION}") +if(GRPC_AS_SUBMODULE) + # One way to build a projects that uses gRPC is to just include the + # entire gRPC project tree via "add_subdirectory". + # This approach is very simple to use, but the are some potential + # disadvantages: + # * it includes gRPC's CMakeLists.txt directly into your build script + # without and that can make gRPC's internal setting interfere with your + # own build. + # * depending on what's installed on your system, the contents of submodules + # in gRPC's third_party/* might need to be available (and there might be + # additional prerequisites required to build them). Consider using + # the gRPC_*_PROVIDER options to fine-tune the expected behavior. + # + # A more robust approach to add dependency on gRPC is using + # cmake's ExternalProject_Add (see cmake_externalproject/CMakeLists.txt). + + # Include the gRPC's cmake build (normally grpc source code would live + # in a git submodule called "third_party/grpc", but this example lives in + # the same repository as gRPC sources, so we just look a few directories up) + add_subdirectory(../../.. ${CMAKE_CURRENT_BINARY_DIR}/grpc EXCLUDE_FROM_ALL) + message(STATUS "Using gRPC via add_subdirectory.") + + # After using add_subdirectory, we can now use the grpc targets directly from + # this build. + set(_PROTOBUF_LIBPROTOBUF libprotobuf) + set(_PROTOBUF_PROTOC $) + set(_GRPC_GRPCPP_UNSECURE grpc++_unsecure) + set(_GRPC_CPP_PLUGIN_EXECUTABLE $) +else() + # This branch assumes that gRPC and all its dependencies are already installed + # on this system, so they can be located by find_package(). + + # Find Protobuf installation + # Looks for protobuf-config.cmake file installed by Protobuf's cmake installation. + set(protobuf_MODULE_COMPATIBLE TRUE) + find_package(Protobuf CONFIG REQUIRED) + message(STATUS "Using protobuf ${protobuf_VERSION}") -set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf) -set(_PROTOBUF_PROTOC $) + set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf) + set(_PROTOBUF_PROTOC $) -# Find gRPC installation -# Looks for gRPCConfig.cmake file installed by gRPC's cmake installation. -find_package(gRPC CONFIG REQUIRED) -message(STATUS "Using gRPC ${gRPC_VERSION}") + # Find gRPC installation + # Looks for gRPCConfig.cmake file installed by gRPC's cmake installation. + find_package(gRPC CONFIG REQUIRED) + message(STATUS "Using gRPC ${gRPC_VERSION}") -# gRPC C++ plugin -set(_GRPC_CPP_PLUGIN_EXECUTABLE $) + set(_GRPC_GRPCPP_UNSECURE gRPC::grpc++_unsecure) + set(_GRPC_CPP_PLUGIN_EXECUTABLE $) +endif() # Proto file get_filename_component(hw_proto "../../protos/helloworld.proto" ABSOLUTE) @@ -74,6 +107,6 @@ foreach(_target ${hw_proto_srcs} ${hw_grpc_srcs}) target_link_libraries(${_target} - ${_PROTOBUF_LIBPROTOBUF} - gRPC::grpc++_unsecure) + ${_GRPC_GRPCPP_UNSECURE} + ${_PROTOBUF_LIBPROTOBUF}) endforeach() diff --git a/test/distrib/cpp/run_distrib_test_cmake_as_submodule.sh b/test/distrib/cpp/run_distrib_test_cmake_as_submodule.sh new file mode 100755 index 00000000000..defc63e0900 --- /dev/null +++ b/test/distrib/cpp/run_distrib_test_cmake_as_submodule.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Copyright 2017 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +cd "$(dirname "$0")/../../.." + +# Build helloworld example using cmake, including grpc with "add_subdirectory" +cd examples/cpp/helloworld +mkdir -p cmake/build +cd cmake/build +cmake -DGRPC_AS_SUBMODULE=ON ../.. +make diff --git a/tools/run_tests/artifacts/distribtest_targets.py b/tools/run_tests/artifacts/distribtest_targets.py index 386949975bb..1b467edbc5a 100644 --- a/tools/run_tests/artifacts/distribtest_targets.py +++ b/tools/run_tests/artifacts/distribtest_targets.py @@ -288,6 +288,7 @@ def targets(): CppDistribTest('linux', 'x64', 'jessie', 'routeguide'), CppDistribTest('linux', 'x64', 'jessie', 'cmake'), CppDistribTest('linux', 'x64', 'jessie', 'cmake_as_externalproject'), + CppDistribTest('linux', 'x64', 'jessie', 'cmake_as_submodule'), CppDistribTest('windows', 'x86', testcase='cmake'), CppDistribTest('windows', 'x86', testcase='cmake_as_externalproject'), CSharpDistribTest('linux', 'x64', 'wheezy'), From d3ace6cf29778e26c97d0de138dcdd30afac07e5 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Thu, 29 Mar 2018 10:13:14 -0700 Subject: [PATCH 10/26] Fix authority fuzzing failures --- .../filters/http/client_authority_filter.cc | 11 ++- src/core/lib/surface/channel.cc | 2 +- ...rfuzz-testcase-api_fuzzer-5406804084260864 | Bin 0 -> 44 bytes ...rfuzz-testcase-api_fuzzer-5471994809155584 | Bin 0 -> 287 bytes ...rfuzz-testcase-api_fuzzer-6609852341157888 | Bin 0 -> 1125 bytes tools/run_tests/generated/tests.json | 69 ++++++++++++++++++ 6 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-api_fuzzer-5406804084260864 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-api_fuzzer-5471994809155584 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-api_fuzzer-6609852341157888 diff --git a/src/core/ext/filters/http/client_authority_filter.cc b/src/core/ext/filters/http/client_authority_filter.cc index f2b3e0fe7be..6d68ffcd211 100644 --- a/src/core/ext/filters/http/client_authority_filter.cc +++ b/src/core/ext/filters/http/client_authority_filter.cc @@ -97,8 +97,15 @@ grpc_error* init_channel_elem(grpc_channel_element* elem, "channels must explicity specify a value for this argument."); abort(); } - chand->default_authority = grpc_slice_from_copied_string( - grpc_channel_arg_get_string(default_authority_arg)); + const char* default_authority_str = + grpc_channel_arg_get_string(default_authority_arg); + if (default_authority_str == nullptr) { + gpr_log(GPR_ERROR, + "GRPC_ARG_DEFAULT_AUTHORITY channel arg. must be a string."); + abort(); + } + chand->default_authority = + grpc_slice_from_copied_string(default_authority_str); GPR_ASSERT(!args->is_last); return GRPC_ERROR_NONE; } diff --git a/src/core/lib/surface/channel.cc b/src/core/lib/surface/channel.cc index 807e28eef1b..d740ebd4114 100644 --- a/src/core/lib/surface/channel.cc +++ b/src/core/lib/surface/channel.cc @@ -167,7 +167,7 @@ static grpc_core::UniquePtr get_default_authority( has_default_authority = true; } else if (0 == strcmp(input_args->args[i].key, GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)) { - ssl_override = input_args->args[i].value.string; + ssl_override = grpc_channel_arg_get_string(&input_args->args[i]); } } if (!has_default_authority && ssl_override != nullptr) { diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-api_fuzzer-5406804084260864 b/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-api_fuzzer-5406804084260864 new file mode 100644 index 0000000000000000000000000000000000000000..121aac7ec874272905ceafcd9a27961ac69691a1 GIT binary patch literal 44 zcmZQ7PW@lpz`)OxUR02*S6rMEUy@jqo>~&0mzbLxpI??*RFs*L%D|wPn^*w=Zw3$} literal 0 HcmV?d00001 diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-api_fuzzer-5471994809155584 b/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-api_fuzzer-5471994809155584 new file mode 100644 index 0000000000000000000000000000000000000000..e5d3d38e96cd25161c6bc4b819167135a1ac848a GIT binary patch literal 287 zcmZQzWM*JsU@A^6DoZV5U}8!yDoEB#Nli;E%_)h`EU9E*W(3MJFfg(~Xa+_`MlMDW zd1@;oqYyFxih%(G10Ew2OG`5Hi@*k>+Jz*+2(gL-tBouST>lw?E@gPstpITuvV&l5 S02xtK0J903fygRxyBGituQ1#I literal 0 HcmV?d00001 diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-api_fuzzer-6609852341157888 b/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-api_fuzzer-6609852341157888 new file mode 100644 index 0000000000000000000000000000000000000000..b7debabf1907b9f5f9877fc666faebcaba768140 GIT binary patch literal 1125 zcmah}&2G~`5T1<+xGkcQC<1YU7YHgZ0MEcB;$&^@%@2*^u-;T{FR>6uB+lI7p|}zW zsUQ^*q#y`*n3=WX7%DM`)p~a3n{U3^bt^M=Y%Hi&-%g@VmW@KEZQrNa$Hv-W zY`_lPX&9vn%xMUKc(DM0KqQz6nQW+;;;ygMaJp7dN{^UN@R);Hh^3r~-GtQMf2mrAZX*!#&FE641&+xM(7{(td1u zdOC8Up1MKGax=t6y|X})sKy@EXw>!O_G%y1z3OMfOqw{=)GBVhrU7BU^0o`@VzC}u z@tK*|&Bp{lYIvcD!IEx8&7k;-pS&6yz88FR*b0E$^Y|fp5bR2nopUsOd6_t}s=q3w zz#YVMAyRBB-?(H-pub2=>0xIu(b3T}rw>Oa%!X&C^Tb4HY@Xv!FDs}k*XibZnd;U8 zcy#^`aV9Ze3(D2OGrR#9R}5uXcQz>30UVT_ Date: Thu, 29 Mar 2018 10:36:30 -0700 Subject: [PATCH 11/26] Return errors in lieu of aborting --- src/core/ext/filters/http/client_authority_filter.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/core/ext/filters/http/client_authority_filter.cc b/src/core/ext/filters/http/client_authority_filter.cc index 6d68ffcd211..855007500a0 100644 --- a/src/core/ext/filters/http/client_authority_filter.cc +++ b/src/core/ext/filters/http/client_authority_filter.cc @@ -91,18 +91,15 @@ grpc_error* init_channel_elem(grpc_channel_element* elem, const grpc_arg* default_authority_arg = grpc_channel_args_find(args->channel_args, GRPC_ARG_DEFAULT_AUTHORITY); if (default_authority_arg == nullptr) { - gpr_log( - GPR_ERROR, + return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "GRPC_ARG_DEFAULT_AUTHORITY channel arg. not found. Note that direct " "channels must explicity specify a value for this argument."); - abort(); } const char* default_authority_str = grpc_channel_arg_get_string(default_authority_arg); if (default_authority_str == nullptr) { - gpr_log(GPR_ERROR, - "GRPC_ARG_DEFAULT_AUTHORITY channel arg. must be a string."); - abort(); + return GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "GRPC_ARG_DEFAULT_AUTHORITY channel arg. must be a string"); } chand->default_authority = grpc_slice_from_copied_string(default_authority_str); From 6ebafda8fcfdca94df6b0c3bde4b979e668183d2 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Thu, 29 Mar 2018 10:47:17 -0700 Subject: [PATCH 12/26] Add grpc-java 1.11.0 to interop matrix --- tools/interop_matrix/client_matrix.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/interop_matrix/client_matrix.py b/tools/interop_matrix/client_matrix.py index 83a593ffde8..eb7eb12af87 100644 --- a/tools/interop_matrix/client_matrix.py +++ b/tools/interop_matrix/client_matrix.py @@ -157,6 +157,9 @@ LANG_RELEASE_MATRIX = { { 'v1.10.1': None }, + { + 'v1.11.0': None + }, ], 'python': [ { From 6334fcbe6b4569ebceb2256867f7b805399a9b88 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Thu, 29 Mar 2018 14:16:50 -0700 Subject: [PATCH 13/26] fix generate project sanity --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5041b982250..79385a38ea8 100644 --- a/Makefile +++ b/Makefile @@ -18719,7 +18719,7 @@ else ifeq ($(NO_PROTOBUF),true) -# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.5.0+. $(BINDIR)/$(CONFIG)/retry_throttle_test: protobuf_dep_error From bb10d2a58d8364546119d8d0c194187aece5563f Mon Sep 17 00:00:00 2001 From: Muxi Yan Date: Thu, 29 Mar 2018 14:34:22 -0700 Subject: [PATCH 14/26] Release self retain only after all clean-up done --- src/objective-c/GRPCClient/GRPCCall.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/objective-c/GRPCClient/GRPCCall.m b/src/objective-c/GRPCClient/GRPCCall.m index ea658bca2b6..cf70064298e 100644 --- a/src/objective-c/GRPCClient/GRPCCall.m +++ b/src/objective-c/GRPCClient/GRPCCall.m @@ -196,9 +196,6 @@ static NSString * const kBearerPrefix = @"Bearer "; _state = GRXWriterStateFinished; } - // If the call isn't retained anywhere else, it can be deallocated now. - _retainSelf = nil; - // If there were still request messages coming, stop them. @synchronized(_requestWriter) { _requestWriter.state = GRXWriterStateFinished; @@ -211,6 +208,9 @@ static NSString * const kBearerPrefix = @"Bearer "; } [GRPCConnectivityMonitor unregisterObserver:self]; + + // If the call isn't retained anywhere else, it can be deallocated now. + _retainSelf = nil; } - (void)cancelCall { From 42c0d59d76e48034fe34cf3ef35e02e9a8c5ab63 Mon Sep 17 00:00:00 2001 From: Alexander Polcyn Date: Thu, 29 Mar 2018 16:51:24 -0700 Subject: [PATCH 15/26] Revert "Add a flag to the resolver_component_test that permits extra addresses" This reverts commit 02ce860592586d52276e64b766a38990db7425e2. --- test/cpp/naming/resolver_component_test.cc | 32 ++++++---------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/test/cpp/naming/resolver_component_test.cc b/test/cpp/naming/resolver_component_test.cc index bfdcd962386..f4be064305c 100644 --- a/test/cpp/naming/resolver_component_test.cc +++ b/test/cpp/naming/resolver_component_test.cc @@ -65,11 +65,6 @@ DEFINE_string(expected_addrs, "", "List of expected backend or balancer addresses in the form " "',;,;...'. " "'is_balancer' should be bool, i.e. true or false."); -DEFINE_bool(allow_extra_addrs, false, - "Permit extra resolved addresses in the final list of " - "resolved addresses. This is useful in certain integration " - "test environments in which DNS responses are not fully " - "deterministic."); DEFINE_string(expected_chosen_service_config, "", "Expected service config json string that gets chosen (no " "whitespace). Empty for none."); @@ -245,11 +240,9 @@ void CheckResolverResultLocked(void* argsp, grpc_error* err) { GPR_ASSERT(channel_arg->type == GRPC_ARG_POINTER); grpc_lb_addresses* addresses = (grpc_lb_addresses*)channel_arg->value.pointer.p; - gpr_log(GPR_INFO, - "num addrs found: %" PRIdPTR ". expected %" PRIdPTR - ". Allow extra addresses:%d.", - addresses->num_addresses, args->expected_addrs.size(), - FLAGS_allow_extra_addrs); + gpr_log(GPR_INFO, "num addrs found: %" PRIdPTR ". expected %" PRIdPTR, + addresses->num_addresses, args->expected_addrs.size()); + GPR_ASSERT(addresses->num_addresses == args->expected_addrs.size()); std::vector found_lb_addrs; for (size_t i = 0; i < addresses->num_addresses; i++) { grpc_lb_address addr = addresses->addresses[i]; @@ -261,20 +254,13 @@ void CheckResolverResultLocked(void* argsp, grpc_error* err) { gpr_free(str); } if (args->expected_addrs.size() != found_lb_addrs.size()) { - // Permit extra resolved addresses if "--allow_extra_addrs" was set. - if (!(FLAGS_allow_extra_addrs && - found_lb_addrs.size() > args->expected_addrs.size())) { - gpr_log(GPR_DEBUG, - "found lb addrs size is: %" PRIdPTR - ". expected addrs size is %" PRIdPTR ". --allow_extra_addrs=%d.", - found_lb_addrs.size(), args->expected_addrs.size(), - FLAGS_allow_extra_addrs); - abort(); - } - } - for (size_t i = 0; i < args->expected_addrs.size(); i++) { - EXPECT_THAT(found_lb_addrs, ::testing::Contains(args->expected_addrs[i])); + gpr_log(GPR_DEBUG, + "found lb addrs size is: %" PRIdPTR + ". expected addrs size is %" PRIdPTR, + found_lb_addrs.size(), args->expected_addrs.size()); + abort(); } + EXPECT_THAT(args->expected_addrs, UnorderedElementsAreArray(found_lb_addrs)); CheckServiceConfigResultLocked(channel_args, args); if (args->expected_service_config_string == "") { CheckLBPolicyResultLocked(channel_args, args); From 9205befc434d1e6af681fc0ef286dd0d8b0854b1 Mon Sep 17 00:00:00 2001 From: Doug Fawley Date: Fri, 30 Mar 2018 08:58:01 -0700 Subject: [PATCH 16/26] Add v1.10.1 and v1.11.1 releases of grpc-go --- tools/interop_matrix/client_matrix.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/interop_matrix/client_matrix.py b/tools/interop_matrix/client_matrix.py index eb7eb12af87..c45a6273952 100644 --- a/tools/interop_matrix/client_matrix.py +++ b/tools/interop_matrix/client_matrix.py @@ -117,10 +117,10 @@ LANG_RELEASE_MATRIX = { 'v1.9.2': None }, { - 'v1.10.0': None + 'v1.10.1': None }, { - 'v1.11.0': None + 'v1.11.1': None }, ], 'java': [ From 4df7438960bc900e9f262b66aa7a06b7fe316568 Mon Sep 17 00:00:00 2001 From: Ara Ayvazyan Date: Fri, 30 Mar 2018 10:15:27 -0700 Subject: [PATCH 17/26] Fix ServerInterface::PayloadAsyncRequest to work with ByteBuffer --- include/grpcpp/impl/codegen/byte_buffer.h | 3 +++ include/grpcpp/impl/codegen/server_interface.h | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/grpcpp/impl/codegen/byte_buffer.h b/include/grpcpp/impl/codegen/byte_buffer.h index 8d6a169db99..e637efeb857 100644 --- a/include/grpcpp/impl/codegen/byte_buffer.h +++ b/include/grpcpp/impl/codegen/byte_buffer.h @@ -31,6 +31,8 @@ namespace grpc { +class ServerInterface; + namespace internal { class CallOpSendMessage; template @@ -98,6 +100,7 @@ class ByteBuffer final { private: friend class SerializationTraits; + friend class ServerInterface; friend class internal::CallOpSendMessage; template friend class internal::CallOpRecvMessage; diff --git a/include/grpcpp/impl/codegen/server_interface.h b/include/grpcpp/impl/codegen/server_interface.h index 4700763ed25..1149aa65934 100644 --- a/include/grpcpp/impl/codegen/server_interface.h +++ b/include/grpcpp/impl/codegen/server_interface.h @@ -20,6 +20,7 @@ #define GRPCPP_IMPL_CODEGEN_SERVER_INTERFACE_H #include +#include #include #include #include @@ -185,13 +186,13 @@ class ServerInterface : public internal::CallHook { notification_cq_(notification_cq), tag_(tag), request_(request) { - IssueRequest(registered_method, &payload_, notification_cq); + IssueRequest(registered_method, payload_.bbuf_ptr(), notification_cq); } bool FinalizeResult(void** tag, bool* status) override { if (*status) { - if (payload_ == nullptr || - !SerializationTraits::Deserialize(payload_, request_) + if (!payload_.Valid() || + !SerializationTraits::Deserialize(payload_.bbuf_ptr(), request_) .ok()) { // If deserialization fails, we cancel the call and instantiate // a new instance of ourselves to request another call. We then @@ -219,7 +220,7 @@ class ServerInterface : public internal::CallHook { ServerCompletionQueue* const notification_cq_; void* const tag_; Message* const request_; - grpc_byte_buffer* payload_; + ByteBuffer payload_; }; class GenericAsyncRequest : public BaseAsyncRequest { From f76069a593884b1f580bd8568678c67ce860ee45 Mon Sep 17 00:00:00 2001 From: Ara Ayvazyan Date: Fri, 30 Mar 2018 10:44:43 -0700 Subject: [PATCH 18/26] fixup! Fix the payload ownership issue --- include/grpcpp/impl/codegen/server_interface.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/grpcpp/impl/codegen/server_interface.h b/include/grpcpp/impl/codegen/server_interface.h index 1149aa65934..70c90681f00 100644 --- a/include/grpcpp/impl/codegen/server_interface.h +++ b/include/grpcpp/impl/codegen/server_interface.h @@ -186,7 +186,11 @@ class ServerInterface : public internal::CallHook { notification_cq_(notification_cq), tag_(tag), request_(request) { - IssueRequest(registered_method, payload_.bbuf_ptr(), notification_cq); + IssueRequest(registered_method, payload_.c_buffer_ptr(), notification_cq); + } + + ~PayloadAsyncRequest() { + payload_.Release(); // We do not own the payload_ } bool FinalizeResult(void** tag, bool* status) override { From 9ff64a63a37c8211cb31ddfb1636dba63fa9dec6 Mon Sep 17 00:00:00 2001 From: Eric Gribkoff Date: Fri, 30 Mar 2018 13:15:58 -0700 Subject: [PATCH 19/26] drop unnecessary/invalid asserts --- src/core/lib/iomgr/socket_utils_linux.cc | 1 - src/core/lib/iomgr/socket_utils_posix.cc | 1 - src/core/lib/iomgr/tcp_server_utils_posix_common.cc | 1 - src/core/lib/iomgr/udp_server.cc | 1 - 4 files changed, 4 deletions(-) diff --git a/src/core/lib/iomgr/socket_utils_linux.cc b/src/core/lib/iomgr/socket_utils_linux.cc index f506329f970..b0207578de1 100644 --- a/src/core/lib/iomgr/socket_utils_linux.cc +++ b/src/core/lib/iomgr/socket_utils_linux.cc @@ -34,7 +34,6 @@ int grpc_accept4(int sockfd, grpc_resolved_address* resolved_addr, int nonblock, int cloexec) { int flags = 0; GPR_ASSERT(sizeof(socklen_t) <= sizeof(size_t)); - GPR_ASSERT(resolved_addr->len <= (socklen_t)-1); flags |= nonblock ? SOCK_NONBLOCK : 0; flags |= cloexec ? SOCK_CLOEXEC : 0; return accept4(sockfd, reinterpret_cast(resolved_addr->addr), diff --git a/src/core/lib/iomgr/socket_utils_posix.cc b/src/core/lib/iomgr/socket_utils_posix.cc index d5d00af9760..2a49583ac4e 100644 --- a/src/core/lib/iomgr/socket_utils_posix.cc +++ b/src/core/lib/iomgr/socket_utils_posix.cc @@ -35,7 +35,6 @@ int grpc_accept4(int sockfd, grpc_resolved_address* resolved_addr, int nonblock, int cloexec) { int fd, flags; GPR_ASSERT(sizeof(socklen_t) <= sizeof(size_t)); - GPR_ASSERT(resolved_addr->len <= (socklen_t)-1); fd = accept(sockfd, (grpc_sockaddr*)resolved_addr->addr, (socklen_t*)&resolved_addr->len); if (fd >= 0) { diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc index 0734453364a..9f4e58ca16e 100644 --- a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +++ b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc @@ -170,7 +170,6 @@ grpc_error* grpc_tcp_server_prepare_socket(int fd, err = grpc_set_socket_no_sigpipe_if_possible(fd); if (err != GRPC_ERROR_NONE) goto error; - GPR_ASSERT(addr->len < ~(socklen_t)0); if (bind(fd, reinterpret_cast(const_cast(addr->addr)), addr->len) < 0) { err = GRPC_OS_ERROR(errno, "bind"); diff --git a/src/core/lib/iomgr/udp_server.cc b/src/core/lib/iomgr/udp_server.cc index 04716a254d1..9990deec7a3 100644 --- a/src/core/lib/iomgr/udp_server.cc +++ b/src/core/lib/iomgr/udp_server.cc @@ -381,7 +381,6 @@ static int prepare_socket(grpc_socket_factory* socket_factory, int fd, } } - GPR_ASSERT(addr->len < ~(socklen_t)0); if (bind_socket(socket_factory, fd, addr) < 0) { char* addr_str; grpc_sockaddr_to_string(&addr_str, addr, 0); From 834aeca1807c77096c0b1a31dcd4cc74393b0a18 Mon Sep 17 00:00:00 2001 From: Muxi Yan Date: Fri, 30 Mar 2018 16:02:23 -0700 Subject: [PATCH 20/26] Revert "Let cronet use grpc_cronet_registry_plugin" --- BUILD | 8 - CMakeLists.txt | 69 +- Makefile | 69 +- build.yaml | 10 +- gRPC-Core.podspec | 950 +----------------- .../grpc_cronet_plugin_registry.cc | 44 +- src/objective-c/tests/Podfile | 5 +- templates/gRPC-Core.podspec.template | 37 +- .../generated/sources_and_headers.json | 8 - 9 files changed, 99 insertions(+), 1101 deletions(-) diff --git a/BUILD b/BUILD index e1c5f7663ae..f6ec92179bf 100644 --- a/BUILD +++ b/BUILD @@ -307,16 +307,8 @@ grpc_cc_library( language = "c++", deps = [ "grpc_base", - "grpc_deadline_filter", "grpc_http_filters", - "grpc_lb_policy_pick_first", - "grpc_max_age_filter", - "grpc_message_size_filter", - "grpc_resolver_dns_native", - "grpc_resolver_sockaddr", - "grpc_server_load_reporting", "grpc_transport_chttp2_client_secure", - "grpc_transport_chttp2_server_secure", "grpc_transport_cronet_client_secure", ], ) diff --git a/CMakeLists.txt b/CMakeLists.txt index c0c47c9d520..4fd9826e99e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1451,36 +1451,6 @@ add_library(grpc_cronet src/core/lib/transport/transport.cc src/core/lib/transport/transport_op_string.cc src/core/lib/debug/trace.cc - src/core/ext/filters/deadline/deadline_filter.cc - src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc - src/core/ext/filters/client_channel/backup_poller.cc - src/core/ext/filters/client_channel/channel_connectivity.cc - src/core/ext/filters/client_channel/client_channel.cc - src/core/ext/filters/client_channel/client_channel_factory.cc - src/core/ext/filters/client_channel/client_channel_plugin.cc - src/core/ext/filters/client_channel/connector.cc - src/core/ext/filters/client_channel/http_connect_handshaker.cc - src/core/ext/filters/client_channel/http_proxy.cc - src/core/ext/filters/client_channel/lb_policy.cc - src/core/ext/filters/client_channel/lb_policy_factory.cc - src/core/ext/filters/client_channel/lb_policy_registry.cc - src/core/ext/filters/client_channel/method_params.cc - src/core/ext/filters/client_channel/parse_address.cc - src/core/ext/filters/client_channel/proxy_mapper.cc - src/core/ext/filters/client_channel/proxy_mapper_registry.cc - src/core/ext/filters/client_channel/resolver.cc - src/core/ext/filters/client_channel/resolver_registry.cc - src/core/ext/filters/client_channel/retry_throttle.cc - src/core/ext/filters/client_channel/subchannel.cc - src/core/ext/filters/client_channel/subchannel_index.cc - src/core/ext/filters/client_channel/uri_parser.cc - src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc - src/core/ext/filters/max_age/max_age_filter.cc - src/core/ext/filters/message_size/message_size_filter.cc - src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc - src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc - src/core/ext/filters/load_reporting/server_load_reporting_filter.cc - src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc src/core/ext/transport/cronet/transport/cronet_api_dummy.cc src/core/ext/transport/cronet/transport/cronet_transport.cc @@ -1512,6 +1482,28 @@ add_library(grpc_cronet src/core/ext/filters/http/http_filters_plugin.cc src/core/ext/filters/http/message_compress/message_compress_filter.cc src/core/ext/filters/http/server/http_server_filter.cc + src/core/ext/filters/client_channel/backup_poller.cc + src/core/ext/filters/client_channel/channel_connectivity.cc + src/core/ext/filters/client_channel/client_channel.cc + src/core/ext/filters/client_channel/client_channel_factory.cc + src/core/ext/filters/client_channel/client_channel_plugin.cc + src/core/ext/filters/client_channel/connector.cc + src/core/ext/filters/client_channel/http_connect_handshaker.cc + src/core/ext/filters/client_channel/http_proxy.cc + src/core/ext/filters/client_channel/lb_policy.cc + src/core/ext/filters/client_channel/lb_policy_factory.cc + src/core/ext/filters/client_channel/lb_policy_registry.cc + src/core/ext/filters/client_channel/method_params.cc + src/core/ext/filters/client_channel/parse_address.cc + src/core/ext/filters/client_channel/proxy_mapper.cc + src/core/ext/filters/client_channel/proxy_mapper_registry.cc + src/core/ext/filters/client_channel/resolver.cc + src/core/ext/filters/client_channel/resolver_registry.cc + src/core/ext/filters/client_channel/retry_throttle.cc + src/core/ext/filters/client_channel/subchannel.cc + src/core/ext/filters/client_channel/subchannel_index.cc + src/core/ext/filters/client_channel/uri_parser.cc + src/core/ext/filters/deadline/deadline_filter.cc src/core/lib/http/httpcli_security_connector.cc src/core/lib/security/context/security_context.cc src/core/lib/security/credentials/alts/alts_credentials.cc @@ -1585,8 +1577,8 @@ add_library(grpc_cronet src/core/tsi/ssl/session_cache/ssl_session_openssl.cc src/core/tsi/ssl_transport_security.cc src/core/tsi/transport_security_grpc.cc - src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc - src/core/ext/transport/chttp2/server/chttp2_server.cc + src/core/ext/filters/load_reporting/server_load_reporting_filter.cc + src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc src/core/plugin_registry/grpc_cronet_plugin_registry.cc ) @@ -1646,20 +1638,9 @@ foreach(_hdr include/grpc/impl/codegen/sync_generic.h include/grpc/impl/codegen/sync_posix.h include/grpc/impl/codegen/sync_windows.h - include/grpc/byte_buffer.h - include/grpc/byte_buffer_reader.h - include/grpc/compression.h - include/grpc/fork.h - include/grpc/grpc.h - include/grpc/grpc_posix.h - include/grpc/grpc_security_constants.h - include/grpc/load_reporting.h - include/grpc/slice.h - include/grpc/slice_buffer.h - include/grpc/status.h - include/grpc/support/workaround_list.h include/grpc/grpc_cronet.h include/grpc/grpc_security.h + include/grpc/grpc_security_constants.h ) string(REPLACE "include/" "" _path ${_hdr}) get_filename_component(_path ${_path} PATH) diff --git a/Makefile b/Makefile index 79385a38ea8..64195ee6ff6 100644 --- a/Makefile +++ b/Makefile @@ -3801,36 +3801,6 @@ LIBGRPC_CRONET_SRC = \ src/core/lib/transport/transport.cc \ src/core/lib/transport/transport_op_string.cc \ src/core/lib/debug/trace.cc \ - src/core/ext/filters/deadline/deadline_filter.cc \ - src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc \ - src/core/ext/filters/client_channel/backup_poller.cc \ - src/core/ext/filters/client_channel/channel_connectivity.cc \ - src/core/ext/filters/client_channel/client_channel.cc \ - src/core/ext/filters/client_channel/client_channel_factory.cc \ - src/core/ext/filters/client_channel/client_channel_plugin.cc \ - src/core/ext/filters/client_channel/connector.cc \ - src/core/ext/filters/client_channel/http_connect_handshaker.cc \ - src/core/ext/filters/client_channel/http_proxy.cc \ - src/core/ext/filters/client_channel/lb_policy.cc \ - src/core/ext/filters/client_channel/lb_policy_factory.cc \ - src/core/ext/filters/client_channel/lb_policy_registry.cc \ - src/core/ext/filters/client_channel/method_params.cc \ - src/core/ext/filters/client_channel/parse_address.cc \ - src/core/ext/filters/client_channel/proxy_mapper.cc \ - src/core/ext/filters/client_channel/proxy_mapper_registry.cc \ - src/core/ext/filters/client_channel/resolver.cc \ - src/core/ext/filters/client_channel/resolver_registry.cc \ - src/core/ext/filters/client_channel/retry_throttle.cc \ - src/core/ext/filters/client_channel/subchannel.cc \ - src/core/ext/filters/client_channel/subchannel_index.cc \ - src/core/ext/filters/client_channel/uri_parser.cc \ - src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc \ - src/core/ext/filters/max_age/max_age_filter.cc \ - src/core/ext/filters/message_size/message_size_filter.cc \ - src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc \ - src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc \ - src/core/ext/filters/load_reporting/server_load_reporting_filter.cc \ - src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc \ src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc \ src/core/ext/transport/cronet/transport/cronet_api_dummy.cc \ src/core/ext/transport/cronet/transport/cronet_transport.cc \ @@ -3862,6 +3832,28 @@ LIBGRPC_CRONET_SRC = \ src/core/ext/filters/http/http_filters_plugin.cc \ src/core/ext/filters/http/message_compress/message_compress_filter.cc \ src/core/ext/filters/http/server/http_server_filter.cc \ + src/core/ext/filters/client_channel/backup_poller.cc \ + src/core/ext/filters/client_channel/channel_connectivity.cc \ + src/core/ext/filters/client_channel/client_channel.cc \ + src/core/ext/filters/client_channel/client_channel_factory.cc \ + src/core/ext/filters/client_channel/client_channel_plugin.cc \ + src/core/ext/filters/client_channel/connector.cc \ + src/core/ext/filters/client_channel/http_connect_handshaker.cc \ + src/core/ext/filters/client_channel/http_proxy.cc \ + src/core/ext/filters/client_channel/lb_policy.cc \ + src/core/ext/filters/client_channel/lb_policy_factory.cc \ + src/core/ext/filters/client_channel/lb_policy_registry.cc \ + src/core/ext/filters/client_channel/method_params.cc \ + src/core/ext/filters/client_channel/parse_address.cc \ + src/core/ext/filters/client_channel/proxy_mapper.cc \ + src/core/ext/filters/client_channel/proxy_mapper_registry.cc \ + src/core/ext/filters/client_channel/resolver.cc \ + src/core/ext/filters/client_channel/resolver_registry.cc \ + src/core/ext/filters/client_channel/retry_throttle.cc \ + src/core/ext/filters/client_channel/subchannel.cc \ + src/core/ext/filters/client_channel/subchannel_index.cc \ + src/core/ext/filters/client_channel/uri_parser.cc \ + src/core/ext/filters/deadline/deadline_filter.cc \ src/core/lib/http/httpcli_security_connector.cc \ src/core/lib/security/context/security_context.cc \ src/core/lib/security/credentials/alts/alts_credentials.cc \ @@ -3935,8 +3927,8 @@ LIBGRPC_CRONET_SRC = \ src/core/tsi/ssl/session_cache/ssl_session_openssl.cc \ src/core/tsi/ssl_transport_security.cc \ src/core/tsi/transport_security_grpc.cc \ - src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc \ - src/core/ext/transport/chttp2/server/chttp2_server.cc \ + src/core/ext/filters/load_reporting/server_load_reporting_filter.cc \ + src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc \ src/core/plugin_registry/grpc_cronet_plugin_registry.cc \ PUBLIC_HEADERS_C += \ @@ -3961,20 +3953,9 @@ PUBLIC_HEADERS_C += \ include/grpc/impl/codegen/sync_generic.h \ include/grpc/impl/codegen/sync_posix.h \ include/grpc/impl/codegen/sync_windows.h \ - include/grpc/byte_buffer.h \ - include/grpc/byte_buffer_reader.h \ - include/grpc/compression.h \ - include/grpc/fork.h \ - include/grpc/grpc.h \ - include/grpc/grpc_posix.h \ - include/grpc/grpc_security_constants.h \ - include/grpc/load_reporting.h \ - include/grpc/slice.h \ - include/grpc/slice_buffer.h \ - include/grpc/status.h \ - include/grpc/support/workaround_list.h \ include/grpc/grpc_cronet.h \ include/grpc/grpc_security.h \ + include/grpc/grpc_security_constants.h \ LIBGRPC_CRONET_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_CRONET_SRC)))) diff --git a/build.yaml b/build.yaml index 000169a4d97..6a6f234fae3 100644 --- a/build.yaml +++ b/build.yaml @@ -1418,17 +1418,9 @@ libs: dll: true filegroups: - grpc_base - - grpc_base_headers - - grpc_deadline_filter - - grpc_lb_policy_pick_first - - grpc_max_age_filter - - grpc_message_size_filter - - grpc_resolver_dns_native - - grpc_resolver_sockaddr - - grpc_server_load_reporting - grpc_transport_cronet_client_secure - grpc_transport_chttp2_client_secure - - grpc_transport_chttp2_server_secure + - grpc_server_load_reporting generate_plugin_registry: true platforms: - linux diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec index 9ddee79ff99..0eadbb5147d 100644 --- a/gRPC-Core.podspec +++ b/gRPC-Core.podspec @@ -182,6 +182,7 @@ Pod::Spec.new do |s| ss.dependency 'BoringSSL', '~> 10.0' ss.dependency 'nanopb', '~> 0.3' + # To save you from scrolling, this is the last part of the podspec. ss.source_files = 'src/core/lib/gpr/arena.h', 'src/core/lib/gpr/env.h', 'src/core/lib/gpr/fork.h', @@ -1083,957 +1084,34 @@ Pod::Spec.new do |s| s.subspec 'Cronet-Interface' do |ss| ss.header_mappings_dir = 'include/grpc' - ss.source_files = 'include/grpc/support/alloc.h', - 'include/grpc/support/atm.h', - 'include/grpc/support/atm_gcc_atomic.h', - 'include/grpc/support/atm_gcc_sync.h', - 'include/grpc/support/atm_windows.h', - 'include/grpc/support/cpu.h', - 'include/grpc/support/log.h', - 'include/grpc/support/log_windows.h', - 'include/grpc/support/port_platform.h', - 'include/grpc/support/string_util.h', - 'include/grpc/support/sync.h', - 'include/grpc/support/sync_custom.h', - 'include/grpc/support/sync_generic.h', - 'include/grpc/support/sync_posix.h', - 'include/grpc/support/sync_windows.h', - 'include/grpc/support/thd_id.h', - 'include/grpc/support/time.h', - 'include/grpc/impl/codegen/atm.h', - 'include/grpc/impl/codegen/atm_gcc_atomic.h', - 'include/grpc/impl/codegen/atm_gcc_sync.h', - 'include/grpc/impl/codegen/atm_windows.h', - 'include/grpc/impl/codegen/fork.h', - 'include/grpc/impl/codegen/gpr_slice.h', - 'include/grpc/impl/codegen/gpr_types.h', - 'include/grpc/impl/codegen/port_platform.h', - 'include/grpc/impl/codegen/sync.h', - 'include/grpc/impl/codegen/sync_custom.h', - 'include/grpc/impl/codegen/sync_generic.h', - 'include/grpc/impl/codegen/sync_posix.h', - 'include/grpc/impl/codegen/sync_windows.h', - 'include/grpc/impl/codegen/byte_buffer.h', - 'include/grpc/impl/codegen/byte_buffer_reader.h', - 'include/grpc/impl/codegen/compression_types.h', - 'include/grpc/impl/codegen/connectivity_state.h', - 'include/grpc/impl/codegen/grpc_types.h', - 'include/grpc/impl/codegen/propagation_bits.h', - 'include/grpc/impl/codegen/slice.h', - 'include/grpc/impl/codegen/status.h', - 'include/grpc/impl/codegen/atm.h', - 'include/grpc/impl/codegen/atm_gcc_atomic.h', - 'include/grpc/impl/codegen/atm_gcc_sync.h', - 'include/grpc/impl/codegen/atm_windows.h', - 'include/grpc/impl/codegen/fork.h', - 'include/grpc/impl/codegen/gpr_slice.h', - 'include/grpc/impl/codegen/gpr_types.h', - 'include/grpc/impl/codegen/port_platform.h', - 'include/grpc/impl/codegen/sync.h', - 'include/grpc/impl/codegen/sync_custom.h', - 'include/grpc/impl/codegen/sync_generic.h', - 'include/grpc/impl/codegen/sync_posix.h', - 'include/grpc/impl/codegen/sync_windows.h', - 'include/grpc/byte_buffer.h', - 'include/grpc/byte_buffer_reader.h', - 'include/grpc/compression.h', - 'include/grpc/fork.h', - 'include/grpc/grpc.h', - 'include/grpc/grpc_posix.h', - 'include/grpc/grpc_security_constants.h', - 'include/grpc/load_reporting.h', - 'include/grpc/slice.h', - 'include/grpc/slice_buffer.h', - 'include/grpc/status.h', - 'include/grpc/support/workaround_list.h', - 'include/grpc/grpc_cronet.h', - 'include/grpc/grpc_security.h' + ss.source_files = 'include/grpc/grpc_cronet.h' end s.subspec 'Cronet-Implementation' do |ss| ss.header_mappings_dir = '.' - ss.libraries = 'z' + + ss.dependency "#{s.name}/Interface", version + ss.dependency "#{s.name}/Implementation", version ss.dependency "#{s.name}/Cronet-Interface", version - ss.dependency 'BoringSSL', '~> 10.0' - ss.dependency 'nanopb', '~> 0.3' - ss.source_files = 'src/core/lib/gpr/arena.h', - 'src/core/lib/gpr/env.h', - 'src/core/lib/gpr/fork.h', - 'src/core/lib/gpr/host_port.h', - 'src/core/lib/gpr/mpscq.h', - 'src/core/lib/gpr/murmur_hash.h', - 'src/core/lib/gpr/spinlock.h', - 'src/core/lib/gpr/string.h', - 'src/core/lib/gpr/string_windows.h', - 'src/core/lib/gpr/time_precise.h', - 'src/core/lib/gpr/tls.h', - 'src/core/lib/gpr/tls_gcc.h', - 'src/core/lib/gpr/tls_msvc.h', - 'src/core/lib/gpr/tls_pthread.h', - 'src/core/lib/gpr/tmpfile.h', - 'src/core/lib/gpr/useful.h', - 'src/core/lib/gprpp/abstract.h', - 'src/core/lib/gprpp/atomic.h', - 'src/core/lib/gprpp/atomic_with_atm.h', - 'src/core/lib/gprpp/atomic_with_std.h', - 'src/core/lib/gprpp/manual_constructor.h', - 'src/core/lib/gprpp/memory.h', - 'src/core/lib/gprpp/thd.h', - 'src/core/lib/profiling/timers.h', - 'src/core/lib/gpr/alloc.cc', - 'src/core/lib/gpr/arena.cc', - 'src/core/lib/gpr/atm.cc', - 'src/core/lib/gpr/cpu_iphone.cc', - 'src/core/lib/gpr/cpu_linux.cc', - 'src/core/lib/gpr/cpu_posix.cc', - 'src/core/lib/gpr/cpu_windows.cc', - 'src/core/lib/gpr/env_linux.cc', - 'src/core/lib/gpr/env_posix.cc', - 'src/core/lib/gpr/env_windows.cc', - 'src/core/lib/gpr/fork.cc', - 'src/core/lib/gpr/host_port.cc', - 'src/core/lib/gpr/log.cc', - 'src/core/lib/gpr/log_android.cc', - 'src/core/lib/gpr/log_linux.cc', - 'src/core/lib/gpr/log_posix.cc', - 'src/core/lib/gpr/log_windows.cc', - 'src/core/lib/gpr/mpscq.cc', - 'src/core/lib/gpr/murmur_hash.cc', - 'src/core/lib/gpr/string.cc', - 'src/core/lib/gpr/string_posix.cc', - 'src/core/lib/gpr/string_util_windows.cc', - 'src/core/lib/gpr/string_windows.cc', - 'src/core/lib/gpr/sync.cc', - 'src/core/lib/gpr/sync_posix.cc', - 'src/core/lib/gpr/sync_windows.cc', - 'src/core/lib/gpr/time.cc', - 'src/core/lib/gpr/time_posix.cc', - 'src/core/lib/gpr/time_precise.cc', - 'src/core/lib/gpr/time_windows.cc', - 'src/core/lib/gpr/tls_pthread.cc', - 'src/core/lib/gpr/tmpfile_msys.cc', - 'src/core/lib/gpr/tmpfile_posix.cc', - 'src/core/lib/gpr/tmpfile_windows.cc', - 'src/core/lib/gpr/wrap_memcpy.cc', - 'src/core/lib/gprpp/thd_posix.cc', - 'src/core/lib/gprpp/thd_windows.cc', - 'src/core/lib/profiling/basic_timers.cc', - 'src/core/lib/profiling/stap_timers.cc', - 'src/core/lib/avl/avl.h', - 'src/core/lib/backoff/backoff.h', - 'src/core/lib/channel/channel_args.h', - 'src/core/lib/channel/channel_stack.h', - 'src/core/lib/channel/channel_stack_builder.h', - 'src/core/lib/channel/channel_trace.h', - 'src/core/lib/channel/channel_trace_registry.h', - 'src/core/lib/channel/connected_channel.h', - 'src/core/lib/channel/context.h', - 'src/core/lib/channel/handshaker.h', - 'src/core/lib/channel/handshaker_factory.h', - 'src/core/lib/channel/handshaker_registry.h', - 'src/core/lib/channel/status_util.h', - 'src/core/lib/compression/algorithm_metadata.h', - 'src/core/lib/compression/compression_internal.h', - 'src/core/lib/compression/message_compress.h', - 'src/core/lib/compression/stream_compression.h', - 'src/core/lib/compression/stream_compression_gzip.h', - 'src/core/lib/compression/stream_compression_identity.h', - 'src/core/lib/debug/stats.h', - 'src/core/lib/debug/stats_data.h', - 'src/core/lib/gprpp/debug_location.h', - 'src/core/lib/gprpp/inlined_vector.h', - 'src/core/lib/gprpp/orphanable.h', - 'src/core/lib/gprpp/ref_counted.h', - 'src/core/lib/gprpp/ref_counted_ptr.h', - 'src/core/lib/http/format_request.h', - 'src/core/lib/http/httpcli.h', - 'src/core/lib/http/parser.h', - 'src/core/lib/iomgr/block_annotate.h', - 'src/core/lib/iomgr/call_combiner.h', - 'src/core/lib/iomgr/closure.h', - 'src/core/lib/iomgr/combiner.h', - 'src/core/lib/iomgr/endpoint.h', - 'src/core/lib/iomgr/endpoint_pair.h', - 'src/core/lib/iomgr/error.h', - 'src/core/lib/iomgr/error_internal.h', - 'src/core/lib/iomgr/ev_epoll1_linux.h', - 'src/core/lib/iomgr/ev_epollex_linux.h', - 'src/core/lib/iomgr/ev_epollsig_linux.h', - 'src/core/lib/iomgr/ev_poll_posix.h', - 'src/core/lib/iomgr/ev_posix.h', - 'src/core/lib/iomgr/exec_ctx.h', - 'src/core/lib/iomgr/executor.h', - 'src/core/lib/iomgr/gethostname.h', - 'src/core/lib/iomgr/iocp_windows.h', - 'src/core/lib/iomgr/iomgr.h', - 'src/core/lib/iomgr/iomgr_custom.h', - 'src/core/lib/iomgr/iomgr_internal.h', - 'src/core/lib/iomgr/iomgr_posix.h', - 'src/core/lib/iomgr/is_epollexclusive_available.h', - 'src/core/lib/iomgr/load_file.h', - 'src/core/lib/iomgr/lockfree_event.h', - 'src/core/lib/iomgr/nameser.h', - 'src/core/lib/iomgr/network_status_tracker.h', - 'src/core/lib/iomgr/polling_entity.h', - 'src/core/lib/iomgr/pollset.h', - 'src/core/lib/iomgr/pollset_custom.h', - 'src/core/lib/iomgr/pollset_set.h', - 'src/core/lib/iomgr/pollset_set_custom.h', - 'src/core/lib/iomgr/pollset_set_windows.h', - 'src/core/lib/iomgr/pollset_windows.h', - 'src/core/lib/iomgr/port.h', - 'src/core/lib/iomgr/resolve_address.h', - 'src/core/lib/iomgr/resolve_address_custom.h', - 'src/core/lib/iomgr/resource_quota.h', - 'src/core/lib/iomgr/sockaddr.h', - 'src/core/lib/iomgr/sockaddr_custom.h', - 'src/core/lib/iomgr/sockaddr_posix.h', - 'src/core/lib/iomgr/sockaddr_utils.h', - 'src/core/lib/iomgr/sockaddr_windows.h', - 'src/core/lib/iomgr/socket_factory_posix.h', - 'src/core/lib/iomgr/socket_mutator.h', - 'src/core/lib/iomgr/socket_utils.h', - 'src/core/lib/iomgr/socket_utils_posix.h', - 'src/core/lib/iomgr/socket_windows.h', - 'src/core/lib/iomgr/sys_epoll_wrapper.h', - 'src/core/lib/iomgr/tcp_client.h', - 'src/core/lib/iomgr/tcp_client_posix.h', - 'src/core/lib/iomgr/tcp_custom.h', - 'src/core/lib/iomgr/tcp_posix.h', - 'src/core/lib/iomgr/tcp_server.h', - 'src/core/lib/iomgr/tcp_server_utils_posix.h', - 'src/core/lib/iomgr/tcp_windows.h', - 'src/core/lib/iomgr/time_averaged_stats.h', - 'src/core/lib/iomgr/timer.h', - 'src/core/lib/iomgr/timer_custom.h', - 'src/core/lib/iomgr/timer_heap.h', - 'src/core/lib/iomgr/timer_manager.h', - 'src/core/lib/iomgr/udp_server.h', - 'src/core/lib/iomgr/unix_sockets_posix.h', - 'src/core/lib/iomgr/wakeup_fd_cv.h', - 'src/core/lib/iomgr/wakeup_fd_pipe.h', - 'src/core/lib/iomgr/wakeup_fd_posix.h', - 'src/core/lib/json/json.h', - 'src/core/lib/json/json_common.h', - 'src/core/lib/json/json_reader.h', - 'src/core/lib/json/json_writer.h', - 'src/core/lib/slice/b64.h', - 'src/core/lib/slice/percent_encoding.h', - 'src/core/lib/slice/slice_hash_table.h', - 'src/core/lib/slice/slice_internal.h', - 'src/core/lib/slice/slice_string_helpers.h', - 'src/core/lib/slice/slice_weak_hash_table.h', - 'src/core/lib/surface/api_trace.h', - 'src/core/lib/surface/call.h', - 'src/core/lib/surface/call_test_only.h', - 'src/core/lib/surface/channel.h', - 'src/core/lib/surface/channel_init.h', - 'src/core/lib/surface/channel_stack_type.h', - 'src/core/lib/surface/completion_queue.h', - 'src/core/lib/surface/completion_queue_factory.h', - 'src/core/lib/surface/event_string.h', - 'src/core/lib/surface/init.h', - 'src/core/lib/surface/lame_client.h', - 'src/core/lib/surface/server.h', - 'src/core/lib/surface/validate_metadata.h', - 'src/core/lib/transport/bdp_estimator.h', - 'src/core/lib/transport/byte_stream.h', - 'src/core/lib/transport/connectivity_state.h', - 'src/core/lib/transport/error_utils.h', - 'src/core/lib/transport/http2_errors.h', - 'src/core/lib/transport/metadata.h', - 'src/core/lib/transport/metadata_batch.h', - 'src/core/lib/transport/pid_controller.h', - 'src/core/lib/transport/service_config.h', - 'src/core/lib/transport/static_metadata.h', - 'src/core/lib/transport/status_conversion.h', - 'src/core/lib/transport/status_metadata.h', - 'src/core/lib/transport/timeout_encoding.h', - 'src/core/lib/transport/transport.h', - 'src/core/lib/transport/transport_impl.h', - 'src/core/lib/debug/trace.h', - 'src/core/ext/filters/deadline/deadline_filter.h', - 'src/core/ext/filters/client_channel/backup_poller.h', - 'src/core/ext/filters/client_channel/client_channel.h', - 'src/core/ext/filters/client_channel/client_channel_factory.h', - 'src/core/ext/filters/client_channel/connector.h', - 'src/core/ext/filters/client_channel/http_connect_handshaker.h', - 'src/core/ext/filters/client_channel/http_proxy.h', - 'src/core/ext/filters/client_channel/lb_policy.h', - 'src/core/ext/filters/client_channel/lb_policy_factory.h', - 'src/core/ext/filters/client_channel/lb_policy_registry.h', - 'src/core/ext/filters/client_channel/method_params.h', - 'src/core/ext/filters/client_channel/parse_address.h', - 'src/core/ext/filters/client_channel/proxy_mapper.h', - 'src/core/ext/filters/client_channel/proxy_mapper_registry.h', - 'src/core/ext/filters/client_channel/resolver.h', - 'src/core/ext/filters/client_channel/resolver_factory.h', - 'src/core/ext/filters/client_channel/resolver_registry.h', - 'src/core/ext/filters/client_channel/retry_throttle.h', - 'src/core/ext/filters/client_channel/subchannel.h', - 'src/core/ext/filters/client_channel/subchannel_index.h', - 'src/core/ext/filters/client_channel/uri_parser.h', - 'src/core/ext/filters/client_channel/lb_policy/subchannel_list.h', - 'src/core/ext/filters/max_age/max_age_filter.h', - 'src/core/ext/filters/message_size/message_size_filter.h', - 'src/core/ext/filters/load_reporting/server_load_reporting_filter.h', - 'src/core/ext/filters/load_reporting/server_load_reporting_plugin.h', + ss.source_files = 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc', + 'src/core/ext/transport/cronet/transport/cronet_transport.cc', + 'third_party/nanopb/pb_common.c', + 'third_party/nanopb/pb_decode.c', + 'third_party/nanopb/pb_encode.c', 'src/core/ext/transport/cronet/transport/cronet_transport.h', 'third_party/objective_c/Cronet/bidirectional_stream_c.h', - 'src/core/ext/transport/chttp2/transport/bin_decoder.h', - 'src/core/ext/transport/chttp2/transport/bin_encoder.h', - 'src/core/ext/transport/chttp2/transport/chttp2_transport.h', - 'src/core/ext/transport/chttp2/transport/flow_control.h', - 'src/core/ext/transport/chttp2/transport/frame.h', - 'src/core/ext/transport/chttp2/transport/frame_data.h', - 'src/core/ext/transport/chttp2/transport/frame_goaway.h', - 'src/core/ext/transport/chttp2/transport/frame_ping.h', - 'src/core/ext/transport/chttp2/transport/frame_rst_stream.h', - 'src/core/ext/transport/chttp2/transport/frame_settings.h', - 'src/core/ext/transport/chttp2/transport/frame_window_update.h', - 'src/core/ext/transport/chttp2/transport/hpack_encoder.h', - 'src/core/ext/transport/chttp2/transport/hpack_parser.h', - 'src/core/ext/transport/chttp2/transport/hpack_table.h', - 'src/core/ext/transport/chttp2/transport/http2_settings.h', - 'src/core/ext/transport/chttp2/transport/huffsyms.h', - 'src/core/ext/transport/chttp2/transport/incoming_metadata.h', - 'src/core/ext/transport/chttp2/transport/internal.h', - 'src/core/ext/transport/chttp2/transport/stream_map.h', - 'src/core/ext/transport/chttp2/transport/varint.h', - 'src/core/ext/transport/chttp2/alpn/alpn.h', - 'src/core/ext/filters/http/client/http_client_filter.h', - 'src/core/ext/filters/http/message_compress/message_compress_filter.h', - 'src/core/ext/filters/http/server/http_server_filter.h', - 'src/core/lib/security/context/security_context.h', - 'src/core/lib/security/credentials/alts/alts_credentials.h', - 'src/core/lib/security/credentials/composite/composite_credentials.h', - 'src/core/lib/security/credentials/credentials.h', - 'src/core/lib/security/credentials/fake/fake_credentials.h', - 'src/core/lib/security/credentials/google_default/google_default_credentials.h', - 'src/core/lib/security/credentials/iam/iam_credentials.h', - 'src/core/lib/security/credentials/jwt/json_token.h', - 'src/core/lib/security/credentials/jwt/jwt_credentials.h', - 'src/core/lib/security/credentials/jwt/jwt_verifier.h', - 'src/core/lib/security/credentials/oauth2/oauth2_credentials.h', - 'src/core/lib/security/credentials/plugin/plugin_credentials.h', - 'src/core/lib/security/credentials/ssl/ssl_credentials.h', - 'src/core/lib/security/security_connector/alts_security_connector.h', - 'src/core/lib/security/security_connector/security_connector.h', - 'src/core/lib/security/transport/auth_filters.h', - 'src/core/lib/security/transport/secure_endpoint.h', - 'src/core/lib/security/transport/security_handshaker.h', - 'src/core/lib/security/transport/target_authority_table.h', - 'src/core/lib/security/transport/tsi_error.h', - 'src/core/lib/security/util/json_util.h', - 'src/core/tsi/alts/crypt/gsec.h', - 'src/core/tsi/alts/frame_protector/alts_counter.h', - 'src/core/tsi/alts/frame_protector/alts_crypter.h', - 'src/core/tsi/alts/frame_protector/alts_frame_protector.h', - 'src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h', - 'src/core/tsi/alts/frame_protector/frame_handler.h', - 'src/core/tsi/alts/handshaker/alts_handshaker_client.h', - 'src/core/tsi/alts/handshaker/alts_tsi_event.h', - 'src/core/tsi/alts/handshaker/alts_tsi_handshaker.h', - 'src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h', - 'src/core/lib/security/credentials/alts/check_gcp_environment.h', - 'src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h', - 'src/core/tsi/alts/handshaker/alts_handshaker_service_api.h', - 'src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h', - 'src/core/tsi/alts/handshaker/alts_tsi_utils.h', - 'src/core/tsi/alts/handshaker/transport_security_common_api.h', - 'src/core/tsi/alts/handshaker/altscontext.pb.h', - 'src/core/tsi/alts/handshaker/handshaker.pb.h', - 'src/core/tsi/alts/handshaker/transport_security_common.pb.h', 'third_party/nanopb/pb.h', 'third_party/nanopb/pb_common.h', 'third_party/nanopb/pb_decode.h', - 'third_party/nanopb/pb_encode.h', - 'src/core/tsi/transport_security.h', - 'src/core/tsi/transport_security_adapter.h', - 'src/core/tsi/transport_security_interface.h', - 'src/core/ext/transport/chttp2/client/authority.h', - 'src/core/ext/transport/chttp2/client/chttp2_connector.h', - 'src/core/tsi/alts_transport_security.h', - 'src/core/tsi/fake_transport_security.h', - 'src/core/tsi/ssl/session_cache/ssl_session.h', - 'src/core/tsi/ssl/session_cache/ssl_session_cache.h', - 'src/core/tsi/ssl_transport_security.h', - 'src/core/tsi/ssl_types.h', - 'src/core/tsi/transport_security_grpc.h', - 'src/core/ext/transport/chttp2/server/chttp2_server.h', - 'src/core/lib/surface/init.cc', - 'src/core/lib/avl/avl.cc', - 'src/core/lib/backoff/backoff.cc', - 'src/core/lib/channel/channel_args.cc', - 'src/core/lib/channel/channel_stack.cc', - 'src/core/lib/channel/channel_stack_builder.cc', - 'src/core/lib/channel/channel_trace.cc', - 'src/core/lib/channel/channel_trace_registry.cc', - 'src/core/lib/channel/connected_channel.cc', - 'src/core/lib/channel/handshaker.cc', - 'src/core/lib/channel/handshaker_factory.cc', - 'src/core/lib/channel/handshaker_registry.cc', - 'src/core/lib/channel/status_util.cc', - 'src/core/lib/compression/compression.cc', - 'src/core/lib/compression/compression_internal.cc', - 'src/core/lib/compression/message_compress.cc', - 'src/core/lib/compression/stream_compression.cc', - 'src/core/lib/compression/stream_compression_gzip.cc', - 'src/core/lib/compression/stream_compression_identity.cc', - 'src/core/lib/debug/stats.cc', - 'src/core/lib/debug/stats_data.cc', - 'src/core/lib/http/format_request.cc', - 'src/core/lib/http/httpcli.cc', - 'src/core/lib/http/parser.cc', - 'src/core/lib/iomgr/call_combiner.cc', - 'src/core/lib/iomgr/combiner.cc', - 'src/core/lib/iomgr/endpoint.cc', - 'src/core/lib/iomgr/endpoint_pair_posix.cc', - 'src/core/lib/iomgr/endpoint_pair_uv.cc', - 'src/core/lib/iomgr/endpoint_pair_windows.cc', - 'src/core/lib/iomgr/error.cc', - 'src/core/lib/iomgr/ev_epoll1_linux.cc', - 'src/core/lib/iomgr/ev_epollex_linux.cc', - 'src/core/lib/iomgr/ev_epollsig_linux.cc', - 'src/core/lib/iomgr/ev_poll_posix.cc', - 'src/core/lib/iomgr/ev_posix.cc', - 'src/core/lib/iomgr/ev_windows.cc', - 'src/core/lib/iomgr/exec_ctx.cc', - 'src/core/lib/iomgr/executor.cc', - 'src/core/lib/iomgr/fork_posix.cc', - 'src/core/lib/iomgr/fork_windows.cc', - 'src/core/lib/iomgr/gethostname_fallback.cc', - 'src/core/lib/iomgr/gethostname_host_name_max.cc', - 'src/core/lib/iomgr/gethostname_sysconf.cc', - 'src/core/lib/iomgr/iocp_windows.cc', - 'src/core/lib/iomgr/iomgr.cc', - 'src/core/lib/iomgr/iomgr_custom.cc', - 'src/core/lib/iomgr/iomgr_internal.cc', - 'src/core/lib/iomgr/iomgr_posix.cc', - 'src/core/lib/iomgr/iomgr_uv.cc', - 'src/core/lib/iomgr/iomgr_windows.cc', - 'src/core/lib/iomgr/is_epollexclusive_available.cc', - 'src/core/lib/iomgr/load_file.cc', - 'src/core/lib/iomgr/lockfree_event.cc', - 'src/core/lib/iomgr/network_status_tracker.cc', - 'src/core/lib/iomgr/polling_entity.cc', - 'src/core/lib/iomgr/pollset.cc', - 'src/core/lib/iomgr/pollset_custom.cc', - 'src/core/lib/iomgr/pollset_set.cc', - 'src/core/lib/iomgr/pollset_set_custom.cc', - 'src/core/lib/iomgr/pollset_set_windows.cc', - 'src/core/lib/iomgr/pollset_uv.cc', - 'src/core/lib/iomgr/pollset_windows.cc', - 'src/core/lib/iomgr/resolve_address.cc', - 'src/core/lib/iomgr/resolve_address_custom.cc', - 'src/core/lib/iomgr/resolve_address_posix.cc', - 'src/core/lib/iomgr/resolve_address_windows.cc', - 'src/core/lib/iomgr/resource_quota.cc', - 'src/core/lib/iomgr/sockaddr_utils.cc', - 'src/core/lib/iomgr/socket_factory_posix.cc', - 'src/core/lib/iomgr/socket_mutator.cc', - 'src/core/lib/iomgr/socket_utils_common_posix.cc', - 'src/core/lib/iomgr/socket_utils_linux.cc', - 'src/core/lib/iomgr/socket_utils_posix.cc', - 'src/core/lib/iomgr/socket_utils_uv.cc', - 'src/core/lib/iomgr/socket_utils_windows.cc', - 'src/core/lib/iomgr/socket_windows.cc', - 'src/core/lib/iomgr/tcp_client.cc', - 'src/core/lib/iomgr/tcp_client_custom.cc', - 'src/core/lib/iomgr/tcp_client_posix.cc', - 'src/core/lib/iomgr/tcp_client_windows.cc', - 'src/core/lib/iomgr/tcp_custom.cc', - 'src/core/lib/iomgr/tcp_posix.cc', - 'src/core/lib/iomgr/tcp_server.cc', - 'src/core/lib/iomgr/tcp_server_custom.cc', - 'src/core/lib/iomgr/tcp_server_posix.cc', - 'src/core/lib/iomgr/tcp_server_utils_posix_common.cc', - 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc', - 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc', - 'src/core/lib/iomgr/tcp_server_windows.cc', - 'src/core/lib/iomgr/tcp_uv.cc', - 'src/core/lib/iomgr/tcp_windows.cc', - 'src/core/lib/iomgr/time_averaged_stats.cc', - 'src/core/lib/iomgr/timer.cc', - 'src/core/lib/iomgr/timer_custom.cc', - 'src/core/lib/iomgr/timer_generic.cc', - 'src/core/lib/iomgr/timer_heap.cc', - 'src/core/lib/iomgr/timer_manager.cc', - 'src/core/lib/iomgr/timer_uv.cc', - 'src/core/lib/iomgr/udp_server.cc', - 'src/core/lib/iomgr/unix_sockets_posix.cc', - 'src/core/lib/iomgr/unix_sockets_posix_noop.cc', - 'src/core/lib/iomgr/wakeup_fd_cv.cc', - 'src/core/lib/iomgr/wakeup_fd_eventfd.cc', - 'src/core/lib/iomgr/wakeup_fd_nospecial.cc', - 'src/core/lib/iomgr/wakeup_fd_pipe.cc', - 'src/core/lib/iomgr/wakeup_fd_posix.cc', - 'src/core/lib/json/json.cc', - 'src/core/lib/json/json_reader.cc', - 'src/core/lib/json/json_string.cc', - 'src/core/lib/json/json_writer.cc', - 'src/core/lib/slice/b64.cc', - 'src/core/lib/slice/percent_encoding.cc', - 'src/core/lib/slice/slice.cc', - 'src/core/lib/slice/slice_buffer.cc', - 'src/core/lib/slice/slice_intern.cc', - 'src/core/lib/slice/slice_string_helpers.cc', - 'src/core/lib/surface/api_trace.cc', - 'src/core/lib/surface/byte_buffer.cc', - 'src/core/lib/surface/byte_buffer_reader.cc', - 'src/core/lib/surface/call.cc', - 'src/core/lib/surface/call_details.cc', - 'src/core/lib/surface/call_log_batch.cc', - 'src/core/lib/surface/channel.cc', - 'src/core/lib/surface/channel_init.cc', - 'src/core/lib/surface/channel_ping.cc', - 'src/core/lib/surface/channel_stack_type.cc', - 'src/core/lib/surface/completion_queue.cc', - 'src/core/lib/surface/completion_queue_factory.cc', - 'src/core/lib/surface/event_string.cc', - 'src/core/lib/surface/lame_client.cc', - 'src/core/lib/surface/metadata_array.cc', - 'src/core/lib/surface/server.cc', - 'src/core/lib/surface/validate_metadata.cc', - 'src/core/lib/surface/version.cc', - 'src/core/lib/transport/bdp_estimator.cc', - 'src/core/lib/transport/byte_stream.cc', - 'src/core/lib/transport/connectivity_state.cc', - 'src/core/lib/transport/error_utils.cc', - 'src/core/lib/transport/metadata.cc', - 'src/core/lib/transport/metadata_batch.cc', - 'src/core/lib/transport/pid_controller.cc', - 'src/core/lib/transport/service_config.cc', - 'src/core/lib/transport/static_metadata.cc', - 'src/core/lib/transport/status_conversion.cc', - 'src/core/lib/transport/status_metadata.cc', - 'src/core/lib/transport/timeout_encoding.cc', - 'src/core/lib/transport/transport.cc', - 'src/core/lib/transport/transport_op_string.cc', - 'src/core/lib/debug/trace.cc', - 'src/core/ext/filters/deadline/deadline_filter.cc', - 'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc', - 'src/core/ext/filters/client_channel/backup_poller.cc', - 'src/core/ext/filters/client_channel/channel_connectivity.cc', - 'src/core/ext/filters/client_channel/client_channel.cc', - 'src/core/ext/filters/client_channel/client_channel_factory.cc', - 'src/core/ext/filters/client_channel/client_channel_plugin.cc', - 'src/core/ext/filters/client_channel/connector.cc', - 'src/core/ext/filters/client_channel/http_connect_handshaker.cc', - 'src/core/ext/filters/client_channel/http_proxy.cc', - 'src/core/ext/filters/client_channel/lb_policy.cc', - 'src/core/ext/filters/client_channel/lb_policy_factory.cc', - 'src/core/ext/filters/client_channel/lb_policy_registry.cc', - 'src/core/ext/filters/client_channel/method_params.cc', - 'src/core/ext/filters/client_channel/parse_address.cc', - 'src/core/ext/filters/client_channel/proxy_mapper.cc', - 'src/core/ext/filters/client_channel/proxy_mapper_registry.cc', - 'src/core/ext/filters/client_channel/resolver.cc', - 'src/core/ext/filters/client_channel/resolver_registry.cc', - 'src/core/ext/filters/client_channel/retry_throttle.cc', - 'src/core/ext/filters/client_channel/subchannel.cc', - 'src/core/ext/filters/client_channel/subchannel_index.cc', - 'src/core/ext/filters/client_channel/uri_parser.cc', - 'src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc', - 'src/core/ext/filters/max_age/max_age_filter.cc', - 'src/core/ext/filters/message_size/message_size_filter.cc', - 'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc', - 'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc', - 'src/core/ext/filters/load_reporting/server_load_reporting_filter.cc', - 'src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc', - 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc', - 'src/core/ext/transport/cronet/transport/cronet_transport.cc', - 'src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc', - 'src/core/ext/transport/chttp2/transport/bin_decoder.cc', - 'src/core/ext/transport/chttp2/transport/bin_encoder.cc', - 'src/core/ext/transport/chttp2/transport/chttp2_plugin.cc', - 'src/core/ext/transport/chttp2/transport/chttp2_transport.cc', - 'src/core/ext/transport/chttp2/transport/flow_control.cc', - 'src/core/ext/transport/chttp2/transport/frame_data.cc', - 'src/core/ext/transport/chttp2/transport/frame_goaway.cc', - 'src/core/ext/transport/chttp2/transport/frame_ping.cc', - 'src/core/ext/transport/chttp2/transport/frame_rst_stream.cc', - 'src/core/ext/transport/chttp2/transport/frame_settings.cc', - 'src/core/ext/transport/chttp2/transport/frame_window_update.cc', - 'src/core/ext/transport/chttp2/transport/hpack_encoder.cc', - 'src/core/ext/transport/chttp2/transport/hpack_parser.cc', - 'src/core/ext/transport/chttp2/transport/hpack_table.cc', - 'src/core/ext/transport/chttp2/transport/http2_settings.cc', - 'src/core/ext/transport/chttp2/transport/huffsyms.cc', - 'src/core/ext/transport/chttp2/transport/incoming_metadata.cc', - 'src/core/ext/transport/chttp2/transport/parsing.cc', - 'src/core/ext/transport/chttp2/transport/stream_lists.cc', - 'src/core/ext/transport/chttp2/transport/stream_map.cc', - 'src/core/ext/transport/chttp2/transport/varint.cc', - 'src/core/ext/transport/chttp2/transport/writing.cc', - 'src/core/ext/transport/chttp2/alpn/alpn.cc', - 'src/core/ext/filters/http/client/http_client_filter.cc', - 'src/core/ext/filters/http/http_filters_plugin.cc', - 'src/core/ext/filters/http/message_compress/message_compress_filter.cc', - 'src/core/ext/filters/http/server/http_server_filter.cc', - 'src/core/lib/http/httpcli_security_connector.cc', - 'src/core/lib/security/context/security_context.cc', - 'src/core/lib/security/credentials/alts/alts_credentials.cc', - 'src/core/lib/security/credentials/composite/composite_credentials.cc', - 'src/core/lib/security/credentials/credentials.cc', - 'src/core/lib/security/credentials/credentials_metadata.cc', - 'src/core/lib/security/credentials/fake/fake_credentials.cc', - 'src/core/lib/security/credentials/google_default/credentials_generic.cc', - 'src/core/lib/security/credentials/google_default/google_default_credentials.cc', - 'src/core/lib/security/credentials/iam/iam_credentials.cc', - 'src/core/lib/security/credentials/jwt/json_token.cc', - 'src/core/lib/security/credentials/jwt/jwt_credentials.cc', - 'src/core/lib/security/credentials/jwt/jwt_verifier.cc', - 'src/core/lib/security/credentials/oauth2/oauth2_credentials.cc', - 'src/core/lib/security/credentials/plugin/plugin_credentials.cc', - 'src/core/lib/security/credentials/ssl/ssl_credentials.cc', - 'src/core/lib/security/security_connector/alts_security_connector.cc', - 'src/core/lib/security/security_connector/security_connector.cc', - 'src/core/lib/security/transport/client_auth_filter.cc', - 'src/core/lib/security/transport/secure_endpoint.cc', - 'src/core/lib/security/transport/security_handshaker.cc', - 'src/core/lib/security/transport/server_auth_filter.cc', - 'src/core/lib/security/transport/target_authority_table.cc', - 'src/core/lib/security/transport/tsi_error.cc', - 'src/core/lib/security/util/json_util.cc', - 'src/core/lib/surface/init_secure.cc', - 'src/core/tsi/alts/crypt/aes_gcm.cc', - 'src/core/tsi/alts/crypt/gsec.cc', - 'src/core/tsi/alts/frame_protector/alts_counter.cc', - 'src/core/tsi/alts/frame_protector/alts_crypter.cc', - 'src/core/tsi/alts/frame_protector/alts_frame_protector.cc', - 'src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc', - 'src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc', - 'src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc', - 'src/core/tsi/alts/frame_protector/frame_handler.cc', - 'src/core/tsi/alts/handshaker/alts_handshaker_client.cc', - 'src/core/tsi/alts/handshaker/alts_tsi_event.cc', - 'src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc', - 'src/core/lib/security/credentials/alts/check_gcp_environment.cc', - 'src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc', - 'src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc', - 'src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc', - 'src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc', - 'src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc', - 'src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc', - 'src/core/tsi/alts/handshaker/alts_handshaker_service_api.cc', - 'src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.cc', - 'src/core/tsi/alts/handshaker/alts_tsi_utils.cc', - 'src/core/tsi/alts/handshaker/transport_security_common_api.cc', - 'src/core/tsi/alts/handshaker/altscontext.pb.c', - 'src/core/tsi/alts/handshaker/handshaker.pb.c', - 'src/core/tsi/alts/handshaker/transport_security_common.pb.c', - 'third_party/nanopb/pb_common.c', - 'third_party/nanopb/pb_decode.c', - 'third_party/nanopb/pb_encode.c', - 'src/core/tsi/transport_security.cc', - 'src/core/tsi/transport_security_adapter.cc', - 'src/core/ext/transport/chttp2/client/insecure/channel_create.cc', - 'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc', - 'src/core/ext/transport/chttp2/client/authority.cc', - 'src/core/ext/transport/chttp2/client/chttp2_connector.cc', - 'src/core/tsi/alts_transport_security.cc', - 'src/core/tsi/fake_transport_security.cc', - 'src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc', - 'src/core/tsi/ssl/session_cache/ssl_session_cache.cc', - 'src/core/tsi/ssl/session_cache/ssl_session_openssl.cc', - 'src/core/tsi/ssl_transport_security.cc', - 'src/core/tsi/transport_security_grpc.cc', - 'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc', - 'src/core/ext/transport/chttp2/server/chttp2_server.cc', - 'src/core/plugin_registry/grpc_cronet_plugin_registry.cc' - - ss.private_header_files = 'src/core/lib/gpr/arena.h', - 'src/core/lib/gpr/env.h', - 'src/core/lib/gpr/fork.h', - 'src/core/lib/gpr/host_port.h', - 'src/core/lib/gpr/mpscq.h', - 'src/core/lib/gpr/murmur_hash.h', - 'src/core/lib/gpr/spinlock.h', - 'src/core/lib/gpr/string.h', - 'src/core/lib/gpr/string_windows.h', - 'src/core/lib/gpr/time_precise.h', - 'src/core/lib/gpr/tls.h', - 'src/core/lib/gpr/tls_gcc.h', - 'src/core/lib/gpr/tls_msvc.h', - 'src/core/lib/gpr/tls_pthread.h', - 'src/core/lib/gpr/tmpfile.h', - 'src/core/lib/gpr/useful.h', - 'src/core/lib/gprpp/abstract.h', - 'src/core/lib/gprpp/atomic.h', - 'src/core/lib/gprpp/atomic_with_atm.h', - 'src/core/lib/gprpp/atomic_with_std.h', - 'src/core/lib/gprpp/manual_constructor.h', - 'src/core/lib/gprpp/memory.h', - 'src/core/lib/gprpp/thd.h', - 'src/core/lib/profiling/timers.h', - 'src/core/lib/avl/avl.h', - 'src/core/lib/backoff/backoff.h', - 'src/core/lib/channel/channel_args.h', - 'src/core/lib/channel/channel_stack.h', - 'src/core/lib/channel/channel_stack_builder.h', - 'src/core/lib/channel/channel_trace.h', - 'src/core/lib/channel/channel_trace_registry.h', - 'src/core/lib/channel/connected_channel.h', - 'src/core/lib/channel/context.h', - 'src/core/lib/channel/handshaker.h', - 'src/core/lib/channel/handshaker_factory.h', - 'src/core/lib/channel/handshaker_registry.h', - 'src/core/lib/channel/status_util.h', - 'src/core/lib/compression/algorithm_metadata.h', - 'src/core/lib/compression/compression_internal.h', - 'src/core/lib/compression/message_compress.h', - 'src/core/lib/compression/stream_compression.h', - 'src/core/lib/compression/stream_compression_gzip.h', - 'src/core/lib/compression/stream_compression_identity.h', - 'src/core/lib/debug/stats.h', - 'src/core/lib/debug/stats_data.h', - 'src/core/lib/gprpp/debug_location.h', - 'src/core/lib/gprpp/inlined_vector.h', - 'src/core/lib/gprpp/orphanable.h', - 'src/core/lib/gprpp/ref_counted.h', - 'src/core/lib/gprpp/ref_counted_ptr.h', - 'src/core/lib/http/format_request.h', - 'src/core/lib/http/httpcli.h', - 'src/core/lib/http/parser.h', - 'src/core/lib/iomgr/block_annotate.h', - 'src/core/lib/iomgr/call_combiner.h', - 'src/core/lib/iomgr/closure.h', - 'src/core/lib/iomgr/combiner.h', - 'src/core/lib/iomgr/endpoint.h', - 'src/core/lib/iomgr/endpoint_pair.h', - 'src/core/lib/iomgr/error.h', - 'src/core/lib/iomgr/error_internal.h', - 'src/core/lib/iomgr/ev_epoll1_linux.h', - 'src/core/lib/iomgr/ev_epollex_linux.h', - 'src/core/lib/iomgr/ev_epollsig_linux.h', - 'src/core/lib/iomgr/ev_poll_posix.h', - 'src/core/lib/iomgr/ev_posix.h', - 'src/core/lib/iomgr/exec_ctx.h', - 'src/core/lib/iomgr/executor.h', - 'src/core/lib/iomgr/gethostname.h', - 'src/core/lib/iomgr/iocp_windows.h', - 'src/core/lib/iomgr/iomgr.h', - 'src/core/lib/iomgr/iomgr_custom.h', - 'src/core/lib/iomgr/iomgr_internal.h', - 'src/core/lib/iomgr/iomgr_posix.h', - 'src/core/lib/iomgr/is_epollexclusive_available.h', - 'src/core/lib/iomgr/load_file.h', - 'src/core/lib/iomgr/lockfree_event.h', - 'src/core/lib/iomgr/nameser.h', - 'src/core/lib/iomgr/network_status_tracker.h', - 'src/core/lib/iomgr/polling_entity.h', - 'src/core/lib/iomgr/pollset.h', - 'src/core/lib/iomgr/pollset_custom.h', - 'src/core/lib/iomgr/pollset_set.h', - 'src/core/lib/iomgr/pollset_set_custom.h', - 'src/core/lib/iomgr/pollset_set_windows.h', - 'src/core/lib/iomgr/pollset_windows.h', - 'src/core/lib/iomgr/port.h', - 'src/core/lib/iomgr/resolve_address.h', - 'src/core/lib/iomgr/resolve_address_custom.h', - 'src/core/lib/iomgr/resource_quota.h', - 'src/core/lib/iomgr/sockaddr.h', - 'src/core/lib/iomgr/sockaddr_custom.h', - 'src/core/lib/iomgr/sockaddr_posix.h', - 'src/core/lib/iomgr/sockaddr_utils.h', - 'src/core/lib/iomgr/sockaddr_windows.h', - 'src/core/lib/iomgr/socket_factory_posix.h', - 'src/core/lib/iomgr/socket_mutator.h', - 'src/core/lib/iomgr/socket_utils.h', - 'src/core/lib/iomgr/socket_utils_posix.h', - 'src/core/lib/iomgr/socket_windows.h', - 'src/core/lib/iomgr/sys_epoll_wrapper.h', - 'src/core/lib/iomgr/tcp_client.h', - 'src/core/lib/iomgr/tcp_client_posix.h', - 'src/core/lib/iomgr/tcp_custom.h', - 'src/core/lib/iomgr/tcp_posix.h', - 'src/core/lib/iomgr/tcp_server.h', - 'src/core/lib/iomgr/tcp_server_utils_posix.h', - 'src/core/lib/iomgr/tcp_windows.h', - 'src/core/lib/iomgr/time_averaged_stats.h', - 'src/core/lib/iomgr/timer.h', - 'src/core/lib/iomgr/timer_custom.h', - 'src/core/lib/iomgr/timer_heap.h', - 'src/core/lib/iomgr/timer_manager.h', - 'src/core/lib/iomgr/udp_server.h', - 'src/core/lib/iomgr/unix_sockets_posix.h', - 'src/core/lib/iomgr/wakeup_fd_cv.h', - 'src/core/lib/iomgr/wakeup_fd_pipe.h', - 'src/core/lib/iomgr/wakeup_fd_posix.h', - 'src/core/lib/json/json.h', - 'src/core/lib/json/json_common.h', - 'src/core/lib/json/json_reader.h', - 'src/core/lib/json/json_writer.h', - 'src/core/lib/slice/b64.h', - 'src/core/lib/slice/percent_encoding.h', - 'src/core/lib/slice/slice_hash_table.h', - 'src/core/lib/slice/slice_internal.h', - 'src/core/lib/slice/slice_string_helpers.h', - 'src/core/lib/slice/slice_weak_hash_table.h', - 'src/core/lib/surface/api_trace.h', - 'src/core/lib/surface/call.h', - 'src/core/lib/surface/call_test_only.h', - 'src/core/lib/surface/channel.h', - 'src/core/lib/surface/channel_init.h', - 'src/core/lib/surface/channel_stack_type.h', - 'src/core/lib/surface/completion_queue.h', - 'src/core/lib/surface/completion_queue_factory.h', - 'src/core/lib/surface/event_string.h', - 'src/core/lib/surface/init.h', - 'src/core/lib/surface/lame_client.h', - 'src/core/lib/surface/server.h', - 'src/core/lib/surface/validate_metadata.h', - 'src/core/lib/transport/bdp_estimator.h', - 'src/core/lib/transport/byte_stream.h', - 'src/core/lib/transport/connectivity_state.h', - 'src/core/lib/transport/error_utils.h', - 'src/core/lib/transport/http2_errors.h', - 'src/core/lib/transport/metadata.h', - 'src/core/lib/transport/metadata_batch.h', - 'src/core/lib/transport/pid_controller.h', - 'src/core/lib/transport/service_config.h', - 'src/core/lib/transport/static_metadata.h', - 'src/core/lib/transport/status_conversion.h', - 'src/core/lib/transport/status_metadata.h', - 'src/core/lib/transport/timeout_encoding.h', - 'src/core/lib/transport/transport.h', - 'src/core/lib/transport/transport_impl.h', - 'src/core/lib/debug/trace.h', - 'src/core/ext/filters/deadline/deadline_filter.h', - 'src/core/ext/filters/client_channel/backup_poller.h', - 'src/core/ext/filters/client_channel/client_channel.h', - 'src/core/ext/filters/client_channel/client_channel_factory.h', - 'src/core/ext/filters/client_channel/connector.h', - 'src/core/ext/filters/client_channel/http_connect_handshaker.h', - 'src/core/ext/filters/client_channel/http_proxy.h', - 'src/core/ext/filters/client_channel/lb_policy.h', - 'src/core/ext/filters/client_channel/lb_policy_factory.h', - 'src/core/ext/filters/client_channel/lb_policy_registry.h', - 'src/core/ext/filters/client_channel/method_params.h', - 'src/core/ext/filters/client_channel/parse_address.h', - 'src/core/ext/filters/client_channel/proxy_mapper.h', - 'src/core/ext/filters/client_channel/proxy_mapper_registry.h', - 'src/core/ext/filters/client_channel/resolver.h', - 'src/core/ext/filters/client_channel/resolver_factory.h', - 'src/core/ext/filters/client_channel/resolver_registry.h', - 'src/core/ext/filters/client_channel/retry_throttle.h', - 'src/core/ext/filters/client_channel/subchannel.h', - 'src/core/ext/filters/client_channel/subchannel_index.h', - 'src/core/ext/filters/client_channel/uri_parser.h', - 'src/core/ext/filters/client_channel/lb_policy/subchannel_list.h', - 'src/core/ext/filters/max_age/max_age_filter.h', - 'src/core/ext/filters/message_size/message_size_filter.h', - 'src/core/ext/filters/load_reporting/server_load_reporting_filter.h', - 'src/core/ext/filters/load_reporting/server_load_reporting_plugin.h', - 'src/core/ext/transport/cronet/transport/cronet_transport.h', - 'third_party/objective_c/Cronet/bidirectional_stream_c.h', - 'src/core/ext/transport/chttp2/transport/bin_decoder.h', - 'src/core/ext/transport/chttp2/transport/bin_encoder.h', - 'src/core/ext/transport/chttp2/transport/chttp2_transport.h', - 'src/core/ext/transport/chttp2/transport/flow_control.h', - 'src/core/ext/transport/chttp2/transport/frame.h', - 'src/core/ext/transport/chttp2/transport/frame_data.h', - 'src/core/ext/transport/chttp2/transport/frame_goaway.h', - 'src/core/ext/transport/chttp2/transport/frame_ping.h', - 'src/core/ext/transport/chttp2/transport/frame_rst_stream.h', - 'src/core/ext/transport/chttp2/transport/frame_settings.h', - 'src/core/ext/transport/chttp2/transport/frame_window_update.h', - 'src/core/ext/transport/chttp2/transport/hpack_encoder.h', - 'src/core/ext/transport/chttp2/transport/hpack_parser.h', - 'src/core/ext/transport/chttp2/transport/hpack_table.h', - 'src/core/ext/transport/chttp2/transport/http2_settings.h', - 'src/core/ext/transport/chttp2/transport/huffsyms.h', - 'src/core/ext/transport/chttp2/transport/incoming_metadata.h', - 'src/core/ext/transport/chttp2/transport/internal.h', - 'src/core/ext/transport/chttp2/transport/stream_map.h', - 'src/core/ext/transport/chttp2/transport/varint.h', - 'src/core/ext/transport/chttp2/alpn/alpn.h', - 'src/core/ext/filters/http/client/http_client_filter.h', - 'src/core/ext/filters/http/message_compress/message_compress_filter.h', - 'src/core/ext/filters/http/server/http_server_filter.h', - 'src/core/lib/security/context/security_context.h', - 'src/core/lib/security/credentials/alts/alts_credentials.h', - 'src/core/lib/security/credentials/composite/composite_credentials.h', - 'src/core/lib/security/credentials/credentials.h', - 'src/core/lib/security/credentials/fake/fake_credentials.h', - 'src/core/lib/security/credentials/google_default/google_default_credentials.h', - 'src/core/lib/security/credentials/iam/iam_credentials.h', - 'src/core/lib/security/credentials/jwt/json_token.h', - 'src/core/lib/security/credentials/jwt/jwt_credentials.h', - 'src/core/lib/security/credentials/jwt/jwt_verifier.h', - 'src/core/lib/security/credentials/oauth2/oauth2_credentials.h', - 'src/core/lib/security/credentials/plugin/plugin_credentials.h', - 'src/core/lib/security/credentials/ssl/ssl_credentials.h', - 'src/core/lib/security/security_connector/alts_security_connector.h', - 'src/core/lib/security/security_connector/security_connector.h', - 'src/core/lib/security/transport/auth_filters.h', - 'src/core/lib/security/transport/secure_endpoint.h', - 'src/core/lib/security/transport/security_handshaker.h', - 'src/core/lib/security/transport/target_authority_table.h', - 'src/core/lib/security/transport/tsi_error.h', - 'src/core/lib/security/util/json_util.h', - 'src/core/tsi/alts/crypt/gsec.h', - 'src/core/tsi/alts/frame_protector/alts_counter.h', - 'src/core/tsi/alts/frame_protector/alts_crypter.h', - 'src/core/tsi/alts/frame_protector/alts_frame_protector.h', - 'src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h', - 'src/core/tsi/alts/frame_protector/frame_handler.h', - 'src/core/tsi/alts/handshaker/alts_handshaker_client.h', - 'src/core/tsi/alts/handshaker/alts_tsi_event.h', - 'src/core/tsi/alts/handshaker/alts_tsi_handshaker.h', - 'src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h', - 'src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h', - 'src/core/lib/security/credentials/alts/check_gcp_environment.h', - 'src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h', - 'src/core/tsi/alts/handshaker/alts_handshaker_service_api.h', - 'src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h', - 'src/core/tsi/alts/handshaker/alts_tsi_utils.h', - 'src/core/tsi/alts/handshaker/transport_security_common_api.h', - 'src/core/tsi/alts/handshaker/altscontext.pb.h', - 'src/core/tsi/alts/handshaker/handshaker.pb.h', - 'src/core/tsi/alts/handshaker/transport_security_common.pb.h', - 'third_party/nanopb/pb.h', - 'third_party/nanopb/pb_common.h', - 'third_party/nanopb/pb_decode.h', - 'third_party/nanopb/pb_encode.h', - 'src/core/tsi/transport_security.h', - 'src/core/tsi/transport_security_adapter.h', - 'src/core/tsi/transport_security_interface.h', - 'src/core/ext/transport/chttp2/client/authority.h', - 'src/core/ext/transport/chttp2/client/chttp2_connector.h', - 'src/core/tsi/alts_transport_security.h', - 'src/core/tsi/fake_transport_security.h', - 'src/core/tsi/ssl/session_cache/ssl_session.h', - 'src/core/tsi/ssl/session_cache/ssl_session_cache.h', - 'src/core/tsi/ssl_transport_security.h', - 'src/core/tsi/ssl_types.h', - 'src/core/tsi/transport_security_grpc.h', - 'src/core/ext/transport/chttp2/server/chttp2_server.h' + 'third_party/nanopb/pb_encode.h' end - s.subspec 'Cronet-Tests' do |ss| + s.subspec 'Tests' do |ss| ss.header_mappings_dir = '.' - ss.dependency "#{s.name}/Cronet-Interface", version - ss.dependency "#{s.name}/Cronet-Implementation", version + ss.dependency "#{s.name}/Interface", version + ss.dependency "#{s.name}/Implementation", version ss.source_files = 'test/core/util/test_config.cc', 'test/core/util/test_config.h', diff --git a/src/core/plugin_registry/grpc_cronet_plugin_registry.cc b/src/core/plugin_registry/grpc_cronet_plugin_registry.cc index 84228cb38a0..49b9c7d4fed 100644 --- a/src/core/plugin_registry/grpc_cronet_plugin_registry.cc +++ b/src/core/plugin_registry/grpc_cronet_plugin_registry.cc @@ -20,50 +20,30 @@ #include -void grpc_deadline_filter_init(void); -void grpc_deadline_filter_shutdown(void); -void grpc_client_channel_init(void); -void grpc_client_channel_shutdown(void); -void grpc_lb_policy_pick_first_init(void); -void grpc_lb_policy_pick_first_shutdown(void); -void grpc_max_age_filter_init(void); -void grpc_max_age_filter_shutdown(void); -void grpc_message_size_filter_init(void); -void grpc_message_size_filter_shutdown(void); -void grpc_resolver_dns_native_init(void); -void grpc_resolver_dns_native_shutdown(void); -void grpc_resolver_sockaddr_init(void); -void grpc_resolver_sockaddr_shutdown(void); -void grpc_server_load_reporting_plugin_init(void); -void grpc_server_load_reporting_plugin_shutdown(void); void grpc_http_filters_init(void); void grpc_http_filters_shutdown(void); void grpc_chttp2_plugin_init(void); void grpc_chttp2_plugin_shutdown(void); +void grpc_deadline_filter_init(void); +void grpc_deadline_filter_shutdown(void); +void grpc_client_channel_init(void); +void grpc_client_channel_shutdown(void); void grpc_tsi_alts_init(void); void grpc_tsi_alts_shutdown(void); +void grpc_server_load_reporting_plugin_init(void); +void grpc_server_load_reporting_plugin_shutdown(void); void grpc_register_built_in_plugins(void) { - grpc_register_plugin(grpc_deadline_filter_init, - grpc_deadline_filter_shutdown); - grpc_register_plugin(grpc_client_channel_init, - grpc_client_channel_shutdown); - grpc_register_plugin(grpc_lb_policy_pick_first_init, - grpc_lb_policy_pick_first_shutdown); - grpc_register_plugin(grpc_max_age_filter_init, - grpc_max_age_filter_shutdown); - grpc_register_plugin(grpc_message_size_filter_init, - grpc_message_size_filter_shutdown); - grpc_register_plugin(grpc_resolver_dns_native_init, - grpc_resolver_dns_native_shutdown); - grpc_register_plugin(grpc_resolver_sockaddr_init, - grpc_resolver_sockaddr_shutdown); - grpc_register_plugin(grpc_server_load_reporting_plugin_init, - grpc_server_load_reporting_plugin_shutdown); grpc_register_plugin(grpc_http_filters_init, grpc_http_filters_shutdown); grpc_register_plugin(grpc_chttp2_plugin_init, grpc_chttp2_plugin_shutdown); + grpc_register_plugin(grpc_deadline_filter_init, + grpc_deadline_filter_shutdown); + grpc_register_plugin(grpc_client_channel_init, + grpc_client_channel_shutdown); grpc_register_plugin(grpc_tsi_alts_init, grpc_tsi_alts_shutdown); + grpc_register_plugin(grpc_server_load_reporting_plugin_init, + grpc_server_load_reporting_plugin_shutdown); } diff --git a/src/objective-c/tests/Podfile b/src/objective-c/tests/Podfile index 6e17d9a7cb2..9e9db1fe6ce 100644 --- a/src/objective-c/tests/Podfile +++ b/src/objective-c/tests/Podfile @@ -8,6 +8,7 @@ GRPC_LOCAL_SRC = '../../..' # Install the dependencies in the main target plus all test targets. %w( + Tests AllTests RxLibraryUnitTests InteropTestsRemote @@ -43,8 +44,10 @@ end target target_name do pod 'BoringSSL', :podspec => "#{GRPC_LOCAL_SRC}/src/objective-c", :inhibit_warnings => true pod 'CronetFramework', :podspec => "#{GRPC_LOCAL_SRC}/src/objective-c" + pod 'gRPC-Core', :path => GRPC_LOCAL_SRC + pod 'gRPC-Core/Cronet-Interface', :path => GRPC_LOCAL_SRC pod 'gRPC-Core/Cronet-Implementation', :path => GRPC_LOCAL_SRC - pod 'gRPC-Core/Cronet-Tests', :path => GRPC_LOCAL_SRC + pod 'gRPC-Core/Tests', :path => GRPC_LOCAL_SRC end end diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template index 33a8a8b3746..af97d818346 100644 --- a/templates/gRPC-Core.podspec.template +++ b/templates/gRPC-Core.podspec.template @@ -42,21 +42,21 @@ out = grpc_lib_files(libs, ("grpc", "gpr"), ("headers",)) return [file for file in out if not file.startswith("third_party/nanopb/")] - def grpc_cronet_private_files(libs): - out = grpc_lib_files(libs, ("grpc_cronet", "gpr"), ("headers", "src")) - excl = [ - # We do not want dummy cronet API for ObjC + def grpc_cronet_files(libs): + out = grpc_lib_files(libs, ("grpc_cronet",), ("src", "headers")) + excl = grpc_private_files(libs) + excl += [ + # We do not need cronet dedicated plugin registry + "src/core/plugin_registry/grpc_cronet_plugin_registry.cc", + # We do not need dummy cronet API for ObjC "src/core/ext/transport/cronet/transport/cronet_api_dummy.cc", ] return [file for file in out if not file in excl] def grpc_cronet_public_headers(libs): - out = grpc_lib_files(libs, ("grpc_cronet", "gpr"), ("public_headers",)) - return out - - def grpc_cronet_private_headers(libs): - out = grpc_lib_files(libs, ("grpc_cronet", "gpr"), ("headers",)) - return out + out = grpc_lib_files(libs, ("grpc_cronet",), ("public_headers",)) + excl = grpc_public_headers(libs) + return [file for file in out if not file in excl] def grpc_test_util_files(libs): out = grpc_lib_files(libs, ("grpc_test_util", "gpr_test_util"), ("src", "headers")) @@ -169,6 +169,7 @@ ss.dependency 'BoringSSL', '~> 10.0' ss.dependency 'nanopb', '~> 0.3' + # To save you from scrolling, this is the last part of the podspec. ss.source_files = ${ruby_multiline_list(grpc_private_files(libs), 22)} ss.private_header_files = ${ruby_multiline_list(grpc_private_headers(libs), 30)} @@ -181,21 +182,19 @@ s.subspec 'Cronet-Implementation' do |ss| ss.header_mappings_dir = '.' - ss.libraries = 'z' - ss.dependency "#{s.name}/Cronet-Interface", version - ss.dependency 'BoringSSL', '~> 10.0' - ss.dependency 'nanopb', '~> 0.3' - ss.source_files = ${ruby_multiline_list(grpc_cronet_private_files(libs), 22)} + ss.dependency "#{s.name}/Interface", version + ss.dependency "#{s.name}/Implementation", version + ss.dependency "#{s.name}/Cronet-Interface", version - ss.private_header_files = ${ruby_multiline_list(grpc_cronet_private_headers(libs), 30)} + ss.source_files = ${ruby_multiline_list(grpc_cronet_files(libs), 22)} end - s.subspec 'Cronet-Tests' do |ss| + s.subspec 'Tests' do |ss| ss.header_mappings_dir = '.' - ss.dependency "#{s.name}/Cronet-Interface", version - ss.dependency "#{s.name}/Cronet-Implementation", version + ss.dependency "#{s.name}/Interface", version + ss.dependency "#{s.name}/Implementation", version ss.source_files = ${ruby_multiline_list(grpc_test_util_files(libs), 22)}, ${ruby_multiline_list(end2end_tests_files(libs), 22)} diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json index 0f5a232b527..c7ea43fb09b 100644 --- a/tools/run_tests/generated/sources_and_headers.json +++ b/tools/run_tests/generated/sources_and_headers.json @@ -6740,16 +6740,8 @@ "deps": [ "gpr", "grpc_base", - "grpc_base_headers", - "grpc_deadline_filter", - "grpc_lb_policy_pick_first", - "grpc_max_age_filter", - "grpc_message_size_filter", - "grpc_resolver_dns_native", - "grpc_resolver_sockaddr", "grpc_server_load_reporting", "grpc_transport_chttp2_client_secure", - "grpc_transport_chttp2_server_secure", "grpc_transport_cronet_client_secure" ], "headers": [], From dfbf607ccb2a9871ee6cb2dfc8692dcbc02427b4 Mon Sep 17 00:00:00 2001 From: Muxi Yan Date: Fri, 30 Mar 2018 17:52:42 -0700 Subject: [PATCH 21/26] Introduce channel arg to disable authority filter --- include/grpc/impl/codegen/grpc_types.h | 3 +++ .../ext/filters/http/client_authority_filter.cc | 11 +++++++++++ src/objective-c/GRPCClient/private/GRPCHost.m | 11 ++++++++--- .../CoreCronetEnd2EndTests.mm | 6 ++++++ .../tests/CronetUnitTests/CronetUnitTests.m | 14 +++++++++++++- src/objective-c/tests/Podfile | 1 - 6 files changed, 41 insertions(+), 5 deletions(-) diff --git a/include/grpc/impl/codegen/grpc_types.h b/include/grpc/impl/codegen/grpc_types.h index 03aaa9fae4d..022be5fec46 100644 --- a/include/grpc/impl/codegen/grpc_types.h +++ b/include/grpc/impl/codegen/grpc_types.h @@ -333,6 +333,9 @@ typedef struct { /** Channel arg that carries the bridged objective c object for custom metrics * logging filter. */ #define GRPC_ARG_MOBILE_LOG_CONFIG "grpc.mobile_log_config" +/** If non-zero, client authority filter is disabled for the channel */ +#define GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER \ + "grpc.disable_client_authority_filter" /** \} */ /** Result of a grpc call. If the caller satisfies the prerequisites of a diff --git a/src/core/ext/filters/http/client_authority_filter.cc b/src/core/ext/filters/http/client_authority_filter.cc index 855007500a0..1f57ab5ce62 100644 --- a/src/core/ext/filters/http/client_authority_filter.cc +++ b/src/core/ext/filters/http/client_authority_filter.cc @@ -129,6 +129,17 @@ const grpc_channel_filter grpc_client_authority_filter = { static bool add_client_authority_filter(grpc_channel_stack_builder* builder, void* arg) { + const grpc_channel_args* channel_args = + grpc_channel_stack_builder_get_channel_arguments(builder); + const grpc_arg* disable_client_authority_filter_arg = grpc_channel_args_find( + channel_args, GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER); + if (disable_client_authority_filter_arg != nullptr) { + const bool is_client_authority_filter_disabled = + grpc_channel_arg_get_bool(disable_client_authority_filter_arg, false); + if (is_client_authority_filter_disabled) { + return true; + } + } return grpc_channel_stack_builder_prepend_filter( builder, static_cast(arg), nullptr, nullptr); } diff --git a/src/objective-c/GRPCClient/private/GRPCHost.m b/src/objective-c/GRPCClient/private/GRPCHost.m index c282fbd1947..152c3d3ed64 100644 --- a/src/objective-c/GRPCClient/private/GRPCHost.m +++ b/src/objective-c/GRPCClient/private/GRPCHost.m @@ -192,7 +192,7 @@ static NSMutableDictionary *kHostCache; return YES; } -- (NSDictionary *)channelArgs { +- (NSDictionary *)channelArgsUsingCronet:(BOOL)useCronet { NSMutableDictionary *args = [NSMutableDictionary dictionary]; // TODO(jcanizales): Add OS and device information (see @@ -226,14 +226,19 @@ static NSMutableDictionary *kHostCache; args[@GRPC_ARG_MOBILE_LOG_CONFIG] = logConfig; } + if (useCronet) { + args[@GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER] = [NSNumber numberWithInt:1]; + } + return args; } - (GRPCChannel *)newChannel { - NSDictionary *args = [self channelArgs]; + BOOL useCronet = NO; #ifdef GRPC_COMPILE_WITH_CRONET - BOOL useCronet = [GRPCCall isUsingCronet]; + useCronet = [GRPCCall isUsingCronet]; #endif + NSDictionary *args = [self channelArgsUsingCronet:useCronet]; if (_secure) { GRPCChannel *channel; @synchronized(self) { diff --git a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm index 8e1a0ee7df9..5d384d8fc8a 100644 --- a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm +++ b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm @@ -82,8 +82,14 @@ static void cronet_init_client_secure_fullstack(grpc_end2end_test_fixture *f, grpc_channel_args *client_args, stream_engine *cronetEngine) { fullstack_secure_fixture_data *ffd = (fullstack_secure_fixture_data *)f->fixture_data; + grpc_arg arg; + arg.key = const_cast(GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER); + arg.type = GRPC_ARG_INTEGER; + arg.value.integer = 1; + client_args = grpc_channel_args_copy_and_add(client_args, &arg, 1); f->client = grpc_cronet_secure_channel_create(cronetEngine, ffd->localaddr, client_args, NULL); + grpc_channel_args_destroy(client_args); GPR_ASSERT(f->client != NULL); } diff --git a/src/objective-c/tests/CronetUnitTests/CronetUnitTests.m b/src/objective-c/tests/CronetUnitTests/CronetUnitTests.m index 28414b8e39f..3da7d533b42 100644 --- a/src/objective-c/tests/CronetUnitTests/CronetUnitTests.m +++ b/src/objective-c/tests/CronetUnitTests/CronetUnitTests.m @@ -126,6 +126,14 @@ unsigned int parse_h2_length(const char *field) { ((unsigned int)(unsigned char)(field[2])); } +grpc_channel_args *add_disable_client_authority_filter_args(grpc_channel_args *args) { + grpc_arg arg; + arg.key = const_cast(GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER); + arg.type = GRPC_ARG_INTEGER; + arg.value.integer = 1; + return grpc_channel_args_copy_and_add(args, &arg, 1); +} + - (void)testInternalError { grpc_call *c; grpc_slice request_payload_slice = @@ -147,8 +155,10 @@ unsigned int parse_h2_length(const char *field) { gpr_join_host_port(&addr, "127.0.0.1", port); grpc_completion_queue *cq = grpc_completion_queue_create_for_next(NULL); stream_engine *cronetEngine = [Cronet getGlobalEngine]; + grpc_channel_args *client_args = add_disable_client_authority_filter_args(NULL); grpc_channel *client = - grpc_cronet_secure_channel_create(cronetEngine, addr, NULL, NULL); + grpc_cronet_secure_channel_create(cronetEngine, addr, client_args, NULL); + grpc_channel_args_destroy(client_args); cq_verifier *cqv = cq_verifier_create(cq); grpc_op ops[6]; @@ -262,6 +272,8 @@ unsigned int parse_h2_length(const char *field) { arg.type = GRPC_ARG_INTEGER; arg.value.integer = useCoalescing ? 1 : 0; grpc_channel_args *args = grpc_channel_args_copy_and_add(NULL, &arg, 1); + args = add_disable_client_authority_filter_args(args); + grpc_call *c; grpc_slice request_payload_slice = grpc_slice_from_copied_string("hello world"); diff --git a/src/objective-c/tests/Podfile b/src/objective-c/tests/Podfile index 9e9db1fe6ce..af1a34ab6b6 100644 --- a/src/objective-c/tests/Podfile +++ b/src/objective-c/tests/Podfile @@ -8,7 +8,6 @@ GRPC_LOCAL_SRC = '../../..' # Install the dependencies in the main target plus all test targets. %w( - Tests AllTests RxLibraryUnitTests InteropTestsRemote From 8016d35acace57454d6a1c9321eb5fb6ee14c92f Mon Sep 17 00:00:00 2001 From: Ara Ayvazyan Date: Mon, 2 Apr 2018 10:56:45 -0700 Subject: [PATCH 22/26] fixup! Fix formatting --- include/grpcpp/impl/codegen/server_interface.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/grpcpp/impl/codegen/server_interface.h b/include/grpcpp/impl/codegen/server_interface.h index 70c90681f00..1a38d0eaceb 100644 --- a/include/grpcpp/impl/codegen/server_interface.h +++ b/include/grpcpp/impl/codegen/server_interface.h @@ -190,14 +190,14 @@ class ServerInterface : public internal::CallHook { } ~PayloadAsyncRequest() { - payload_.Release(); // We do not own the payload_ + payload_.Release(); // We do not own the payload_ } bool FinalizeResult(void** tag, bool* status) override { if (*status) { - if (!payload_.Valid() || - !SerializationTraits::Deserialize(payload_.bbuf_ptr(), request_) - .ok()) { + if (!payload_.Valid() || !SerializationTraits::Deserialize( + payload_.bbuf_ptr(), request_) + .ok()) { // If deserialization fails, we cancel the call and instantiate // a new instance of ourselves to request another call. We then // return false, which prevents the call from being returned to From 51d710273fcfe04f414446ee6eaf8f6d25d4d021 Mon Sep 17 00:00:00 2001 From: kpayson64 Date: Mon, 2 Apr 2018 11:10:31 -0700 Subject: [PATCH 23/26] Fix gevent test flakes --- src/python/grpcio_tests/commands.py | 2 ++ .../grpcio_tests/tests/interop/_insecure_intraop_test.py | 3 +++ src/python/grpcio_tests/tests/interop/_secure_intraop_test.py | 3 +++ 3 files changed, 8 insertions(+) diff --git a/src/python/grpcio_tests/commands.py b/src/python/grpcio_tests/commands.py index d4dbcdc191c..42e01c18d3e 100644 --- a/src/python/grpcio_tests/commands.py +++ b/src/python/grpcio_tests/commands.py @@ -121,6 +121,8 @@ class TestGevent(setuptools.Command): 'testing._client_test.ClientTest.test_infinite_request_stream_real_time', # TODO(https://github.com/grpc/grpc/issues/14789) enable this test 'unit._server_ssl_cert_config_test', + # TODO(https://github.com/grpc/grpc/issues/14901) enable this test + 'protoc_plugin._python_plugin_test.PythonPluginTest', # Beta API is unsupported for gevent 'protoc_plugin.beta_python_plugin_test', 'unit.beta._beta_features_test', diff --git a/src/python/grpcio_tests/tests/interop/_insecure_intraop_test.py b/src/python/grpcio_tests/tests/interop/_insecure_intraop_test.py index 8d464b2d4b5..ace15bea585 100644 --- a/src/python/grpcio_tests/tests/interop/_insecure_intraop_test.py +++ b/src/python/grpcio_tests/tests/interop/_insecure_intraop_test.py @@ -36,6 +36,9 @@ class InsecureIntraopTest(_intraop_test_case.IntraopTestCase, self.stub = test_pb2_grpc.TestServiceStub( grpc.insecure_channel('localhost:{}'.format(port))) + def tearDown(self): + self.server.stop(None) + if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py b/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py index c89135998dc..e27e551ecb0 100644 --- a/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py +++ b/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py @@ -45,6 +45,9 @@ class SecureIntraopTest(_intraop_test_case.IntraopTestCase, unittest.TestCase): _SERVER_HOST_OVERRIDE, ),))) + def tearDown(self): + self.server.stop(None) + if __name__ == '__main__': unittest.main(verbosity=2) From 2e3d4108461715eb5e27dc4145997f8e0e57f5c4 Mon Sep 17 00:00:00 2001 From: Ara Ayvazyan Date: Mon, 2 Apr 2018 11:16:41 -0700 Subject: [PATCH 24/26] fixup! Use bbuf_ptr --- include/grpcpp/impl/codegen/server_interface.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/grpcpp/impl/codegen/server_interface.h b/include/grpcpp/impl/codegen/server_interface.h index 1a38d0eaceb..cf330ac3524 100644 --- a/include/grpcpp/impl/codegen/server_interface.h +++ b/include/grpcpp/impl/codegen/server_interface.h @@ -186,7 +186,7 @@ class ServerInterface : public internal::CallHook { notification_cq_(notification_cq), tag_(tag), request_(request) { - IssueRequest(registered_method, payload_.c_buffer_ptr(), notification_cq); + IssueRequest(registered_method, payload_.bbuf_ptr(), notification_cq); } ~PayloadAsyncRequest() { From b00a92507b5dcf7d70c5b8633c1c5b82d5ac6c39 Mon Sep 17 00:00:00 2001 From: ZhouyihaiDing Date: Mon, 2 Apr 2018 16:14:57 -0700 Subject: [PATCH 25/26] PHP: don't destruct persistent channel at the end of php-fpm request --- src/php/ext/grpc/channel.c | 45 +++++++++++++------------------------- 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/src/php/ext/grpc/channel.c b/src/php/ext/grpc/channel.c index 4054723b433..ed30888c43a 100644 --- a/src/php/ext/grpc/channel.c +++ b/src/php/ext/grpc/channel.c @@ -57,9 +57,8 @@ int le_plink; /* Frees and destroys an instance of wrapped_grpc_channel */ PHP_GRPC_FREE_WRAPPED_FUNC_START(wrapped_grpc_channel) - bool is_last_wrapper = false; - // In_persistent_list is used when the user don't close the channel. - // In this case, le in the list won't be freed. + // In_persistent_list is used when the user don't close the channel, + // In this case, channels not in the list should be freed. bool in_persistent_list = true; if (p->wrapper != NULL) { gpr_mu_lock(&p->wrapper->mu); @@ -79,41 +78,18 @@ PHP_GRPC_FREE_WRAPPED_FUNC_START(wrapped_grpc_channel) free(p->wrapper->creds_hashstr); p->wrapper->creds_hashstr = NULL; } + free(p->wrapper->key); } gpr_mu_unlock(&global_persistent_list_mu); } } p->wrapper->ref_count -= 1; - if (p->wrapper->ref_count == 0) { - is_last_wrapper = true; - } gpr_mu_unlock(&p->wrapper->mu); - if (is_last_wrapper) { - if (in_persistent_list) { - // If ref_count==0 and the key still in the list, it means the user - // don't call channel->close().persistent list should free the - // allocation in such case, as well as related wrapped channel. - if (p->wrapper->wrapped != NULL) { - gpr_mu_lock(&p->wrapper->mu); - grpc_channel_destroy(p->wrapper->wrapped); - free(p->wrapper->target); - free(p->wrapper->args_hashstr); - if(p->wrapper->creds_hashstr != NULL){ - free(p->wrapper->creds_hashstr); - p->wrapper->creds_hashstr = NULL; - } - p->wrapper->wrapped = NULL; - php_grpc_delete_persistent_list_entry(p->wrapper->key, - strlen(p->wrapper->key) - TSRMLS_CC); - gpr_mu_unlock(&p->wrapper->mu); - } - } + if (!in_persistent_list) { gpr_mu_destroy(&p->wrapper->mu); - free(p->wrapper->key); free(p->wrapper); + p->wrapper = NULL; } - p->wrapper = NULL; } PHP_GRPC_FREE_WRAPPED_FUNC_END() @@ -330,7 +306,6 @@ PHP_METHOD(Channel, __construct) { gpr_mu_init(&channel->wrapper->mu); smart_str_free(&buf); - if (force_new || (creds != NULL && creds->has_call_creds)) { // If the ChannelCredentials object was composed with a CallCredentials // object, there is no way we can tell them apart. Do NOT persist @@ -540,8 +515,18 @@ static void php_grpc_channel_plink_dtor(php_grpc_zend_resource *rsrc grpc_channel_destroy(le->channel->wrapped); free(le->channel->target); free(le->channel->args_hashstr); + le->channel->wrapped = NULL; + le->channel->target = NULL; + le->channel->args_hashstr = NULL; } + free(le->channel->key); + le->channel->key = NULL; gpr_mu_unlock(&le->channel->mu); + gpr_mu_destroy(&le->channel->mu); + free(le->channel); + le->channel = NULL; + free(le); + le = NULL; } } From a324bd5a35eb7ba94f287dce84f3434dd2f3ef39 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal Date: Mon, 2 Apr 2018 18:55:48 -0700 Subject: [PATCH 26/26] Add documentation for lockfree_event.h --- src/core/lib/iomgr/lockfree_event.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/core/lib/iomgr/lockfree_event.h b/src/core/lib/iomgr/lockfree_event.h index b507b94648c..d6a6c226bc0 100644 --- a/src/core/lib/iomgr/lockfree_event.h +++ b/src/core/lib/iomgr/lockfree_event.h @@ -42,12 +42,23 @@ class LockfreeEvent { void InitEvent(); void DestroyEvent(); + // Returns true if fd has been shutdown, false otherwise. bool IsShutdown() const { return (gpr_atm_no_barrier_load(&state_) & kShutdownBit) != 0; } + // Schedules \a closure when the event is received (see SetReady()) or the + // shutdown state has been set. Note that the event may have already been + // received, in which case the closure would be scheduled immediately. + // If the shutdown state has already been set, then \a closure is scheduled + // with the shutdown error. void NotifyOn(grpc_closure* closure); + + // Sets the shutdown state. If a closure had been provided by NotifyOn and has + // not yet been scheduled, it will be scheduled with \a error. bool SetShutdown(grpc_error* error); + + // Signals that the event has been received. void SetReady(); private: