grpc 1.39.0.pre1 → 1.40.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +34 -18
- data/include/grpc/event_engine/event_engine.h +10 -14
- data/include/grpc/event_engine/slice_allocator.h +8 -33
- data/include/grpc/impl/codegen/grpc_types.h +18 -8
- data/include/grpc/impl/codegen/port_platform.h +24 -0
- data/src/core/ext/filters/client_channel/client_channel.cc +413 -247
- data/src/core/ext/filters/client_channel/client_channel.h +42 -18
- data/src/core/ext/filters/client_channel/config_selector.h +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +7 -8
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +12 -21
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +3 -5
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +17 -38
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +8 -15
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +8 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -22
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +5 -8
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -15
- data/src/core/ext/filters/client_channel/lb_policy.h +70 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +101 -73
- data/src/core/ext/filters/client_channel/retry_filter.cc +392 -243
- data/src/core/ext/filters/client_channel/retry_service_config.cc +36 -26
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_call_data.h +45 -5
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +0 -6
- data/src/core/ext/filters/http/client/http_client_filter.cc +5 -2
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +5 -1
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +1 -1
- data/src/core/{lib/event_engine/slice_allocator.cc → ext/transport/chttp2/transport/chttp2_slice_allocator.cc} +15 -38
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +2 -6
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +639 -752
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +190 -69
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +70 -54
- data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +56 -35
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +180 -76
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +97 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +45 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +67 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +66 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +227 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +32 -24
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -73
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +8 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +27 -19
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +57 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +29 -17
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +15 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +85 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +274 -91
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +11 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +33 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +115 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +1 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +82 -66
- data/src/core/ext/upb-generated/validate/validate.upb.h +220 -124
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +15 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +53 -52
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +318 -277
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +437 -410
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +198 -170
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +219 -163
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +29 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +135 -125
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +131 -123
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +32 -24
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +69 -55
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +684 -664
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +441 -375
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +122 -114
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +112 -79
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +35 -32
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +182 -160
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_api.cc +320 -121
- data/src/core/ext/xds/xds_api.h +31 -2
- data/src/core/ext/xds/xds_bootstrap.cc +4 -1
- data/src/core/ext/xds/xds_client.cc +66 -43
- data/src/core/ext/xds/xds_client.h +0 -4
- data/src/core/ext/xds/xds_http_filters.cc +3 -2
- data/src/core/ext/xds/xds_http_filters.h +3 -0
- data/src/core/lib/channel/call_tracer.h +85 -0
- data/src/core/lib/channel/channel_stack.h +1 -1
- data/src/core/lib/channel/context.h +3 -0
- data/src/core/lib/channel/status_util.h +4 -0
- data/src/core/lib/compression/stream_compression.h +1 -1
- data/src/core/lib/compression/stream_compression_gzip.h +1 -1
- data/src/core/lib/compression/stream_compression_identity.h +1 -1
- data/src/core/lib/debug/stats.h +1 -1
- data/src/core/lib/gpr/murmur_hash.cc +4 -2
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/sync.h +2 -30
- data/src/core/lib/iomgr/buffer_list.cc +1 -1
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +6 -8
- data/src/core/lib/iomgr/event_engine/tcp.cc +30 -10
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resource_quota.cc +2 -0
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -0
- data/src/core/lib/iomgr/tcp_server_posix.cc +1 -0
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/json/json_reader.cc +1 -2
- data/src/core/lib/matchers/matchers.cc +8 -20
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +49 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +6 -18
- data/src/core/lib/security/transport/security_handshaker.cc +12 -4
- data/src/core/lib/security/transport/server_auth_filter.cc +0 -7
- data/src/core/lib/slice/slice_internal.h +1 -0
- data/src/core/lib/surface/call.cc +5 -6
- data/src/core/lib/surface/server.cc +3 -1
- data/src/core/lib/surface/server.h +3 -3
- data/src/core/lib/surface/version.cc +2 -4
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/xxhash/xxhash.h +77 -195
- metadata +57 -40
- data/src/core/lib/gpr/arena.h +0 -47
@@ -101,7 +101,7 @@ class CertificateProviderStore
|
|
101
101
|
|
102
102
|
Mutex mu_;
|
103
103
|
// Map of plugin configurations
|
104
|
-
PluginDefinitionMap plugin_config_map_
|
104
|
+
const PluginDefinitionMap plugin_config_map_;
|
105
105
|
// Underlying map for the providers.
|
106
106
|
std::map<absl::string_view, CertificateProviderWrapper*>
|
107
107
|
certificate_providers_map_ ABSL_GUARDED_BY(mu_);
|
data/src/core/ext/xds/xds_api.cc
CHANGED
@@ -214,6 +214,25 @@ std::string XdsApi::Route::HashPolicy::ToString() const {
|
|
214
214
|
return absl::StrCat("{", absl::StrJoin(contents, ", "), "}");
|
215
215
|
}
|
216
216
|
|
217
|
+
//
|
218
|
+
// XdsApi::Route::RetryPolicy
|
219
|
+
//
|
220
|
+
std::string XdsApi::Route::RetryPolicy::RetryBackOff::ToString() const {
|
221
|
+
std::vector<std::string> contents;
|
222
|
+
contents.push_back(
|
223
|
+
absl::StrCat("RetryBackOff Base: ", base_interval.ToString()));
|
224
|
+
contents.push_back(
|
225
|
+
absl::StrCat("RetryBackOff max: ", max_interval.ToString()));
|
226
|
+
return absl::StrJoin(contents, ",");
|
227
|
+
}
|
228
|
+
|
229
|
+
std::string XdsApi::Route::RetryPolicy::ToString() const {
|
230
|
+
std::vector<std::string> contents;
|
231
|
+
contents.push_back(absl::StrFormat("num_retries=%d", num_retries));
|
232
|
+
contents.push_back(retry_back_off.ToString());
|
233
|
+
return absl::StrJoin(contents, ",");
|
234
|
+
}
|
235
|
+
|
217
236
|
//
|
218
237
|
// XdsApi::Route
|
219
238
|
//
|
@@ -255,6 +274,10 @@ std::string XdsApi::Route::ToString() const {
|
|
255
274
|
for (const HashPolicy& hash_policy : hash_policies) {
|
256
275
|
contents.push_back(absl::StrCat("hash_policy=", hash_policy.ToString()));
|
257
276
|
}
|
277
|
+
if (retry_policy.has_value()) {
|
278
|
+
contents.push_back(
|
279
|
+
absl::StrCat("retry_policy={", retry_policy->ToString(), "}"));
|
280
|
+
}
|
258
281
|
if (!cluster_name.empty()) {
|
259
282
|
contents.push_back(absl::StrFormat("Cluster name: %s", cluster_name));
|
260
283
|
}
|
@@ -868,10 +891,13 @@ bool IsEds(absl::string_view type_url) {
|
|
868
891
|
#endif
|
869
892
|
|
870
893
|
XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer,
|
871
|
-
const XdsBootstrap::Node* node
|
894
|
+
const XdsBootstrap::Node* node,
|
895
|
+
const CertificateProviderStore::PluginDefinitionMap*
|
896
|
+
certificate_provider_definition_map)
|
872
897
|
: client_(client),
|
873
898
|
tracer_(tracer),
|
874
899
|
node_(node),
|
900
|
+
certificate_provider_definition_map_(certificate_provider_definition_map),
|
875
901
|
build_version_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING, " ",
|
876
902
|
grpc_version_string(),
|
877
903
|
GRPC_XDS_USER_AGENT_NAME_SUFFIX_STRING,
|
@@ -903,11 +929,13 @@ XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer,
|
|
903
929
|
namespace {
|
904
930
|
|
905
931
|
struct EncodingContext {
|
906
|
-
XdsClient* client;
|
932
|
+
XdsClient* client; // Used only for logging. Unsafe for dereferencing.
|
907
933
|
TraceFlag* tracer;
|
908
934
|
upb_symtab* symtab;
|
909
935
|
upb_arena* arena;
|
910
936
|
bool use_v3;
|
937
|
+
const CertificateProviderStore::PluginDefinitionMap*
|
938
|
+
certificate_provider_definition_map;
|
911
939
|
};
|
912
940
|
|
913
941
|
// Works for both std::string and absl::string_view.
|
@@ -1116,8 +1144,12 @@ grpc_slice XdsApi::CreateAdsRequest(
|
|
1116
1144
|
const std::string& version, const std::string& nonce,
|
1117
1145
|
grpc_error_handle error, bool populate_node) {
|
1118
1146
|
upb::Arena arena;
|
1119
|
-
const EncodingContext context = {client_,
|
1120
|
-
|
1147
|
+
const EncodingContext context = {client_,
|
1148
|
+
tracer_,
|
1149
|
+
symtab_.ptr(),
|
1150
|
+
arena.ptr(),
|
1151
|
+
server.ShouldUseV3(),
|
1152
|
+
certificate_provider_definition_map_};
|
1121
1153
|
// Create a request.
|
1122
1154
|
envoy_service_discovery_v3_DiscoveryRequest* request =
|
1123
1155
|
envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr());
|
@@ -1527,6 +1559,100 @@ grpc_error_handle ParseTypedPerFilterConfig(
|
|
1527
1559
|
return GRPC_ERROR_NONE;
|
1528
1560
|
}
|
1529
1561
|
|
1562
|
+
XdsApi::Duration DurationParse(const google_protobuf_Duration* proto_duration) {
|
1563
|
+
XdsApi::Duration duration;
|
1564
|
+
duration.seconds = google_protobuf_Duration_seconds(proto_duration);
|
1565
|
+
duration.nanos = google_protobuf_Duration_nanos(proto_duration);
|
1566
|
+
return duration;
|
1567
|
+
}
|
1568
|
+
|
1569
|
+
grpc_error_handle RetryPolicyParse(
|
1570
|
+
const EncodingContext& context,
|
1571
|
+
const envoy_config_route_v3_RetryPolicy* retry_policy,
|
1572
|
+
absl::optional<XdsApi::Route::RetryPolicy>* retry) {
|
1573
|
+
std::vector<grpc_error_handle> errors;
|
1574
|
+
XdsApi::Route::RetryPolicy retry_to_return;
|
1575
|
+
auto retry_on = UpbStringToStdString(
|
1576
|
+
envoy_config_route_v3_RetryPolicy_retry_on(retry_policy));
|
1577
|
+
std::vector<absl::string_view> codes = absl::StrSplit(retry_on, ',');
|
1578
|
+
for (const auto& code : codes) {
|
1579
|
+
if (code == "cancelled") {
|
1580
|
+
retry_to_return.retry_on.Add(GRPC_STATUS_CANCELLED);
|
1581
|
+
} else if (code == "deadline-exceeded") {
|
1582
|
+
retry_to_return.retry_on.Add(GRPC_STATUS_DEADLINE_EXCEEDED);
|
1583
|
+
} else if (code == "internal") {
|
1584
|
+
retry_to_return.retry_on.Add(GRPC_STATUS_INTERNAL);
|
1585
|
+
} else if (code == "resource-exhausted") {
|
1586
|
+
retry_to_return.retry_on.Add(GRPC_STATUS_RESOURCE_EXHAUSTED);
|
1587
|
+
} else if (code == "unavailable") {
|
1588
|
+
retry_to_return.retry_on.Add(GRPC_STATUS_UNAVAILABLE);
|
1589
|
+
} else {
|
1590
|
+
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
|
1591
|
+
gpr_log(GPR_INFO, "Unsupported retry_on policy %s.",
|
1592
|
+
std::string(code).c_str());
|
1593
|
+
}
|
1594
|
+
}
|
1595
|
+
}
|
1596
|
+
// TODO(donnadionne): when we add support for per_try_timeout, we will need to
|
1597
|
+
// return a policy if per_try_timeout is set even if retry_on specified no
|
1598
|
+
// supported policies.
|
1599
|
+
if (retry_to_return.retry_on.Empty()) return GRPC_ERROR_NONE;
|
1600
|
+
const google_protobuf_UInt32Value* num_retries =
|
1601
|
+
envoy_config_route_v3_RetryPolicy_num_retries(retry_policy);
|
1602
|
+
if (num_retries != nullptr) {
|
1603
|
+
uint32_t num_retries_value = google_protobuf_UInt32Value_value(num_retries);
|
1604
|
+
if (num_retries_value == 0) {
|
1605
|
+
errors.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1606
|
+
"RouteAction RetryPolicy num_retries set to invalid value 0."));
|
1607
|
+
} else {
|
1608
|
+
retry_to_return.num_retries = num_retries_value;
|
1609
|
+
}
|
1610
|
+
} else {
|
1611
|
+
retry_to_return.num_retries = 1;
|
1612
|
+
}
|
1613
|
+
const envoy_config_route_v3_RetryPolicy_RetryBackOff* backoff =
|
1614
|
+
envoy_config_route_v3_RetryPolicy_retry_back_off(retry_policy);
|
1615
|
+
if (backoff != nullptr) {
|
1616
|
+
const google_protobuf_Duration* base_interval =
|
1617
|
+
envoy_config_route_v3_RetryPolicy_RetryBackOff_base_interval(backoff);
|
1618
|
+
if (base_interval == nullptr) {
|
1619
|
+
errors.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1620
|
+
"RouteAction RetryPolicy RetryBackoff missing base interval."));
|
1621
|
+
} else {
|
1622
|
+
retry_to_return.retry_back_off.base_interval =
|
1623
|
+
DurationParse(base_interval);
|
1624
|
+
}
|
1625
|
+
const google_protobuf_Duration* max_interval =
|
1626
|
+
envoy_config_route_v3_RetryPolicy_RetryBackOff_max_interval(backoff);
|
1627
|
+
XdsApi::Duration max;
|
1628
|
+
if (max_interval != nullptr) {
|
1629
|
+
max = DurationParse(max_interval);
|
1630
|
+
} else {
|
1631
|
+
// if max interval is not set, it is 10x the base, if the value in nanos
|
1632
|
+
// can yield another second, adjust the value in seconds accordingly.
|
1633
|
+
max.seconds = retry_to_return.retry_back_off.base_interval.seconds * 10;
|
1634
|
+
max.nanos = retry_to_return.retry_back_off.base_interval.nanos * 10;
|
1635
|
+
if (max.nanos > 1000000000) {
|
1636
|
+
max.seconds += max.nanos / 1000000000;
|
1637
|
+
max.nanos = max.nanos % 1000000000;
|
1638
|
+
}
|
1639
|
+
}
|
1640
|
+
retry_to_return.retry_back_off.max_interval = max;
|
1641
|
+
} else {
|
1642
|
+
retry_to_return.retry_back_off.base_interval.seconds = 0;
|
1643
|
+
retry_to_return.retry_back_off.base_interval.nanos = 25000000;
|
1644
|
+
retry_to_return.retry_back_off.max_interval.seconds = 0;
|
1645
|
+
retry_to_return.retry_back_off.max_interval.nanos = 250000000;
|
1646
|
+
}
|
1647
|
+
if (errors.empty()) {
|
1648
|
+
*retry = retry_to_return;
|
1649
|
+
return GRPC_ERROR_NONE;
|
1650
|
+
} else {
|
1651
|
+
return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing retry policy",
|
1652
|
+
&errors);
|
1653
|
+
}
|
1654
|
+
}
|
1655
|
+
|
1530
1656
|
grpc_error_handle RouteActionParse(const EncodingContext& context,
|
1531
1657
|
const envoy_config_route_v3_Route* route_msg,
|
1532
1658
|
XdsApi::Route* route, bool* ignore_route) {
|
@@ -1620,10 +1746,7 @@ grpc_error_handle RouteActionParse(const EncodingContext& context,
|
|
1620
1746
|
max_stream_duration);
|
1621
1747
|
}
|
1622
1748
|
if (duration != nullptr) {
|
1623
|
-
|
1624
|
-
duration_in_route.seconds = google_protobuf_Duration_seconds(duration);
|
1625
|
-
duration_in_route.nanos = google_protobuf_Duration_nanos(duration);
|
1626
|
-
route->max_stream_duration = duration_in_route;
|
1749
|
+
route->max_stream_duration = DurationParse(duration);
|
1627
1750
|
}
|
1628
1751
|
}
|
1629
1752
|
}
|
@@ -1704,6 +1827,15 @@ grpc_error_handle RouteActionParse(const EncodingContext& context,
|
|
1704
1827
|
route->hash_policies.emplace_back(std::move(policy));
|
1705
1828
|
}
|
1706
1829
|
}
|
1830
|
+
// Get retry policy
|
1831
|
+
const envoy_config_route_v3_RetryPolicy* retry_policy =
|
1832
|
+
envoy_config_route_v3_RouteAction_retry_policy(route_action);
|
1833
|
+
if (retry_policy != nullptr) {
|
1834
|
+
absl::optional<XdsApi::Route::RetryPolicy> retry;
|
1835
|
+
grpc_error_handle error = RetryPolicyParse(context, retry_policy, &retry);
|
1836
|
+
if (error != GRPC_ERROR_NONE) return error;
|
1837
|
+
route->retry_policy = retry;
|
1838
|
+
}
|
1707
1839
|
return GRPC_ERROR_NONE;
|
1708
1840
|
}
|
1709
1841
|
|
@@ -1749,6 +1881,15 @@ grpc_error_handle RouteConfigParse(
|
|
1749
1881
|
&vhost.typed_per_filter_config);
|
1750
1882
|
if (error != GRPC_ERROR_NONE) return error;
|
1751
1883
|
}
|
1884
|
+
// Parse retry policy.
|
1885
|
+
absl::optional<XdsApi::Route::RetryPolicy> virtual_host_retry_policy;
|
1886
|
+
const envoy_config_route_v3_RetryPolicy* retry_policy =
|
1887
|
+
envoy_config_route_v3_VirtualHost_retry_policy(virtual_hosts[i]);
|
1888
|
+
if (retry_policy != nullptr) {
|
1889
|
+
grpc_error_handle error =
|
1890
|
+
RetryPolicyParse(context, retry_policy, &virtual_host_retry_policy);
|
1891
|
+
if (error != GRPC_ERROR_NONE) return error;
|
1892
|
+
}
|
1752
1893
|
// Parse routes.
|
1753
1894
|
size_t num_routes;
|
1754
1895
|
const envoy_config_route_v3_Route* const* routes =
|
@@ -1783,6 +1924,9 @@ grpc_error_handle RouteConfigParse(
|
|
1783
1924
|
error = RouteActionParse(context, routes[j], &route, &ignore_route);
|
1784
1925
|
if (error != GRPC_ERROR_NONE) return error;
|
1785
1926
|
if (ignore_route) continue;
|
1927
|
+
if (route.retry_policy == absl::nullopt && retry_policy != nullptr) {
|
1928
|
+
route.retry_policy = virtual_host_retry_policy;
|
1929
|
+
}
|
1786
1930
|
if (context.use_v3) {
|
1787
1931
|
grpc_error_handle error = ParseTypedPerFilterConfig<
|
1788
1932
|
envoy_config_route_v3_Route,
|
@@ -1803,24 +1947,32 @@ grpc_error_handle RouteConfigParse(
|
|
1803
1947
|
return GRPC_ERROR_NONE;
|
1804
1948
|
}
|
1805
1949
|
|
1806
|
-
|
1807
|
-
|
1950
|
+
grpc_error_handle CertificateProviderInstanceParse(
|
1951
|
+
const EncodingContext& context,
|
1808
1952
|
const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*
|
1809
|
-
certificate_provider_instance_proto
|
1810
|
-
|
1953
|
+
certificate_provider_instance_proto,
|
1954
|
+
XdsApi::CommonTlsContext::CertificateProviderInstance*
|
1955
|
+
certificate_provider_instance) {
|
1956
|
+
*certificate_provider_instance = {
|
1811
1957
|
UpbStringToStdString(
|
1812
1958
|
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(
|
1813
1959
|
certificate_provider_instance_proto)),
|
1814
1960
|
UpbStringToStdString(
|
1815
1961
|
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_certificate_name(
|
1816
1962
|
certificate_provider_instance_proto))};
|
1963
|
+
if (context.certificate_provider_definition_map->find(
|
1964
|
+
certificate_provider_instance->instance_name) ==
|
1965
|
+
context.certificate_provider_definition_map->end()) {
|
1966
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1967
|
+
absl::StrCat("Unrecognized certificate provider instance name: ",
|
1968
|
+
certificate_provider_instance->instance_name)
|
1969
|
+
.c_str());
|
1970
|
+
}
|
1971
|
+
return GRPC_ERROR_NONE;
|
1817
1972
|
}
|
1818
1973
|
|
1819
1974
|
grpc_error_handle CommonTlsContextParse(
|
1820
|
-
const
|
1821
|
-
common_tls_context_proto,
|
1822
|
-
XdsApi::CommonTlsContext* common_tls_context) GRPC_MUST_USE_RESULT;
|
1823
|
-
grpc_error_handle CommonTlsContextParse(
|
1975
|
+
const EncodingContext& context,
|
1824
1976
|
const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*
|
1825
1977
|
common_tls_context_proto,
|
1826
1978
|
XdsApi::CommonTlsContext* common_tls_context) {
|
@@ -1898,19 +2050,21 @@ grpc_error_handle CommonTlsContextParse(
|
|
1898
2050
|
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_validation_context_certificate_provider_instance(
|
1899
2051
|
combined_validation_context);
|
1900
2052
|
if (validation_context_certificate_provider_instance != nullptr) {
|
1901
|
-
|
1902
|
-
|
1903
|
-
|
1904
|
-
|
2053
|
+
grpc_error_handle error = CertificateProviderInstanceParse(
|
2054
|
+
context, validation_context_certificate_provider_instance,
|
2055
|
+
&common_tls_context->combined_validation_context
|
2056
|
+
.validation_context_certificate_provider_instance);
|
2057
|
+
if (error != GRPC_ERROR_NONE) return error;
|
1905
2058
|
}
|
1906
2059
|
}
|
1907
2060
|
auto* tls_certificate_certificate_provider_instance =
|
1908
2061
|
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_certificate_provider_instance(
|
1909
2062
|
common_tls_context_proto);
|
1910
2063
|
if (tls_certificate_certificate_provider_instance != nullptr) {
|
1911
|
-
|
1912
|
-
|
1913
|
-
|
2064
|
+
grpc_error_handle error = CertificateProviderInstanceParse(
|
2065
|
+
context, tls_certificate_certificate_provider_instance,
|
2066
|
+
&common_tls_context->tls_certificate_certificate_provider_instance);
|
2067
|
+
if (error != GRPC_ERROR_NONE) return error;
|
1914
2068
|
}
|
1915
2069
|
return GRPC_ERROR_NONE;
|
1916
2070
|
}
|
@@ -1930,10 +2084,8 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
1930
2084
|
const google_protobuf_Duration* duration =
|
1931
2085
|
envoy_config_core_v3_HttpProtocolOptions_max_stream_duration(options);
|
1932
2086
|
if (duration != nullptr) {
|
1933
|
-
http_connection_manager->http_max_stream_duration
|
1934
|
-
|
1935
|
-
http_connection_manager->http_max_stream_duration.nanos =
|
1936
|
-
google_protobuf_Duration_nanos(duration);
|
2087
|
+
http_connection_manager->http_max_stream_duration =
|
2088
|
+
DurationParse(duration);
|
1937
2089
|
}
|
1938
2090
|
}
|
1939
2091
|
// Parse filters.
|
@@ -1989,6 +2141,23 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
1989
2141
|
is_client ? "clients" : "servers")
|
1990
2142
|
.c_str());
|
1991
2143
|
}
|
2144
|
+
if (i < num_filters - 1) {
|
2145
|
+
// Filters before the last filter must not be terminal.
|
2146
|
+
if (filter_impl->IsTerminalFilter()) {
|
2147
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
2148
|
+
absl::StrCat("terminal filter for config type ", filter_type,
|
2149
|
+
" must be the last filter in the chain")
|
2150
|
+
.c_str());
|
2151
|
+
}
|
2152
|
+
} else {
|
2153
|
+
// The last filter must be terminal.
|
2154
|
+
if (!filter_impl->IsTerminalFilter()) {
|
2155
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
2156
|
+
absl::StrCat("non-terminal filter for config type ", filter_type,
|
2157
|
+
" is the last filter in the chain")
|
2158
|
+
.c_str());
|
2159
|
+
}
|
2160
|
+
}
|
1992
2161
|
absl::StatusOr<XdsHttpFilterImpl::FilterConfig> filter_config =
|
1993
2162
|
filter_impl->GenerateFilterConfig(google_protobuf_Any_value(any),
|
1994
2163
|
context.arena);
|
@@ -2079,43 +2248,54 @@ grpc_error_handle DownstreamTlsContextParse(
|
|
2079
2248
|
XdsApi::DownstreamTlsContext* downstream_tls_context) {
|
2080
2249
|
absl::string_view name = UpbStringToAbsl(
|
2081
2250
|
envoy_config_core_v3_TransportSocket_name(transport_socket));
|
2082
|
-
if (name
|
2083
|
-
|
2084
|
-
|
2085
|
-
|
2086
|
-
|
2087
|
-
|
2088
|
-
|
2089
|
-
|
2090
|
-
|
2091
|
-
|
2092
|
-
|
2093
|
-
|
2094
|
-
|
2095
|
-
|
2096
|
-
auto* common_tls_context =
|
2097
|
-
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_common_tls_context(
|
2098
|
-
downstream_tls_context_proto);
|
2099
|
-
if (common_tls_context != nullptr) {
|
2100
|
-
grpc_error_handle error = CommonTlsContextParse(
|
2101
|
-
common_tls_context, &downstream_tls_context->common_tls_context);
|
2102
|
-
if (error != GRPC_ERROR_NONE) return error;
|
2103
|
-
}
|
2104
|
-
auto* require_client_certificate =
|
2105
|
-
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_client_certificate(
|
2106
|
-
downstream_tls_context_proto);
|
2107
|
-
if (require_client_certificate != nullptr) {
|
2108
|
-
downstream_tls_context->require_client_certificate =
|
2109
|
-
google_protobuf_BoolValue_value(require_client_certificate);
|
2110
|
-
}
|
2111
|
-
}
|
2112
|
-
if (downstream_tls_context->common_tls_context
|
2113
|
-
.tls_certificate_certificate_provider_instance.instance_name
|
2114
|
-
.empty()) {
|
2251
|
+
if (name != "envoy.transport_sockets.tls") {
|
2252
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
2253
|
+
absl::StrCat("Unrecognized transport socket: ", name).c_str());
|
2254
|
+
}
|
2255
|
+
auto* typed_config =
|
2256
|
+
envoy_config_core_v3_TransportSocket_typed_config(transport_socket);
|
2257
|
+
if (typed_config != nullptr) {
|
2258
|
+
const upb_strview encoded_downstream_tls_context =
|
2259
|
+
google_protobuf_Any_value(typed_config);
|
2260
|
+
auto* downstream_tls_context_proto =
|
2261
|
+
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_parse(
|
2262
|
+
encoded_downstream_tls_context.data,
|
2263
|
+
encoded_downstream_tls_context.size, context.arena);
|
2264
|
+
if (downstream_tls_context_proto == nullptr) {
|
2115
2265
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
2116
|
-
"
|
2117
|
-
"tls_certificate_certificate_provider_instance found.");
|
2266
|
+
"Can't decode downstream tls context.");
|
2118
2267
|
}
|
2268
|
+
auto* common_tls_context =
|
2269
|
+
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_common_tls_context(
|
2270
|
+
downstream_tls_context_proto);
|
2271
|
+
if (common_tls_context != nullptr) {
|
2272
|
+
grpc_error_handle error =
|
2273
|
+
CommonTlsContextParse(context, common_tls_context,
|
2274
|
+
&downstream_tls_context->common_tls_context);
|
2275
|
+
if (error != GRPC_ERROR_NONE) return error;
|
2276
|
+
}
|
2277
|
+
auto* require_client_certificate =
|
2278
|
+
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_client_certificate(
|
2279
|
+
downstream_tls_context_proto);
|
2280
|
+
if (require_client_certificate != nullptr) {
|
2281
|
+
downstream_tls_context->require_client_certificate =
|
2282
|
+
google_protobuf_BoolValue_value(require_client_certificate);
|
2283
|
+
}
|
2284
|
+
}
|
2285
|
+
if (downstream_tls_context->common_tls_context
|
2286
|
+
.tls_certificate_certificate_provider_instance.instance_name
|
2287
|
+
.empty()) {
|
2288
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
2289
|
+
"TLS configuration provided but no "
|
2290
|
+
"tls_certificate_certificate_provider_instance found.");
|
2291
|
+
}
|
2292
|
+
if (downstream_tls_context->require_client_certificate &&
|
2293
|
+
downstream_tls_context->common_tls_context.combined_validation_context
|
2294
|
+
.validation_context_certificate_provider_instance.instance_name
|
2295
|
+
.empty()) {
|
2296
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
2297
|
+
"TLS configuration requires client certificates but no certificate "
|
2298
|
+
"provider instance specified for validation.");
|
2119
2299
|
}
|
2120
2300
|
return GRPC_ERROR_NONE;
|
2121
2301
|
}
|
@@ -2699,6 +2879,54 @@ grpc_error_handle RdsResponseParse(
|
|
2699
2879
|
return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing RDS response", &errors);
|
2700
2880
|
}
|
2701
2881
|
|
2882
|
+
grpc_error_handle UpstreamTlsContextParse(
|
2883
|
+
const EncodingContext& context,
|
2884
|
+
const envoy_config_core_v3_TransportSocket* transport_socket,
|
2885
|
+
XdsApi::CommonTlsContext* common_tls_context) {
|
2886
|
+
// Record Upstream tls context
|
2887
|
+
absl::string_view name = UpbStringToAbsl(
|
2888
|
+
envoy_config_core_v3_TransportSocket_name(transport_socket));
|
2889
|
+
if (name != "envoy.transport_sockets.tls") {
|
2890
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
2891
|
+
absl::StrCat("Unrecognized transport socket: ", name).c_str());
|
2892
|
+
}
|
2893
|
+
auto* typed_config =
|
2894
|
+
envoy_config_core_v3_TransportSocket_typed_config(transport_socket);
|
2895
|
+
if (typed_config != nullptr) {
|
2896
|
+
const upb_strview encoded_upstream_tls_context =
|
2897
|
+
google_protobuf_Any_value(typed_config);
|
2898
|
+
auto* upstream_tls_context =
|
2899
|
+
envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_parse(
|
2900
|
+
encoded_upstream_tls_context.data,
|
2901
|
+
encoded_upstream_tls_context.size, context.arena);
|
2902
|
+
if (upstream_tls_context == nullptr) {
|
2903
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
2904
|
+
"Can't decode upstream tls context.");
|
2905
|
+
}
|
2906
|
+
auto* common_tls_context_proto =
|
2907
|
+
envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(
|
2908
|
+
upstream_tls_context);
|
2909
|
+
if (common_tls_context_proto != nullptr) {
|
2910
|
+
grpc_error_handle error = CommonTlsContextParse(
|
2911
|
+
context, common_tls_context_proto, common_tls_context);
|
2912
|
+
if (error != GRPC_ERROR_NONE) {
|
2913
|
+
return grpc_error_add_child(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
2914
|
+
"Error parsing UpstreamTlsContext"),
|
2915
|
+
error);
|
2916
|
+
}
|
2917
|
+
}
|
2918
|
+
}
|
2919
|
+
if (common_tls_context->combined_validation_context
|
2920
|
+
.validation_context_certificate_provider_instance.instance_name
|
2921
|
+
.empty()) {
|
2922
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
2923
|
+
"UpstreamTlsContext: TLS configuration provided but no "
|
2924
|
+
"validation_context_certificate_provider_instance "
|
2925
|
+
"found.");
|
2926
|
+
}
|
2927
|
+
return GRPC_ERROR_NONE;
|
2928
|
+
}
|
2929
|
+
|
2702
2930
|
grpc_error_handle CdsResponseParse(
|
2703
2931
|
const EncodingContext& context,
|
2704
2932
|
const envoy_service_discovery_v3_DiscoveryResponse* response,
|
@@ -3015,60 +3243,21 @@ grpc_error_handle CdsResponseParse(
|
|
3015
3243
|
continue;
|
3016
3244
|
}
|
3017
3245
|
if (XdsSecurityEnabled()) {
|
3018
|
-
// Record Upstream tls context
|
3019
3246
|
auto* transport_socket =
|
3020
3247
|
envoy_config_cluster_v3_Cluster_transport_socket(cluster);
|
3021
3248
|
if (transport_socket != nullptr) {
|
3022
|
-
|
3023
|
-
|
3024
|
-
if (
|
3025
|
-
|
3026
|
-
|
3027
|
-
|
3028
|
-
|
3029
|
-
|
3030
|
-
|
3031
|
-
|
3032
|
-
|
3033
|
-
|
3034
|
-
encoded_upstream_tls_context.size, context.arena);
|
3035
|
-
if (upstream_tls_context == nullptr) {
|
3036
|
-
errors.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
3037
|
-
absl::StrCat(cluster_name,
|
3038
|
-
": Can't decode upstream tls context.")
|
3039
|
-
.c_str()));
|
3040
|
-
resource_names_failed->insert(cluster_name);
|
3041
|
-
continue;
|
3042
|
-
}
|
3043
|
-
auto* common_tls_context =
|
3044
|
-
envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(
|
3045
|
-
upstream_tls_context);
|
3046
|
-
if (common_tls_context != nullptr) {
|
3047
|
-
grpc_error_handle error = CommonTlsContextParse(
|
3048
|
-
common_tls_context, &cds_update.common_tls_context);
|
3049
|
-
if (error != GRPC_ERROR_NONE) {
|
3050
|
-
errors.push_back(grpc_error_add_child(
|
3051
|
-
GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
3052
|
-
absl::StrCat(cluster_name, ": error in TLS context")
|
3053
|
-
.c_str()),
|
3054
|
-
error));
|
3055
|
-
resource_names_failed->insert(cluster_name);
|
3056
|
-
continue;
|
3057
|
-
}
|
3058
|
-
}
|
3059
|
-
}
|
3060
|
-
if (cds_update.common_tls_context.combined_validation_context
|
3061
|
-
.validation_context_certificate_provider_instance
|
3062
|
-
.instance_name.empty()) {
|
3063
|
-
errors.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
3064
|
-
absl::StrCat(cluster_name,
|
3065
|
-
"TLS configuration provided but no "
|
3066
|
-
"validation_context_certificate_provider_instance "
|
3067
|
-
"found.")
|
3068
|
-
.c_str()));
|
3069
|
-
resource_names_failed->insert(cluster_name);
|
3070
|
-
continue;
|
3071
|
-
}
|
3249
|
+
grpc_error_handle error = UpstreamTlsContextParse(
|
3250
|
+
context, transport_socket, &cds_update.common_tls_context);
|
3251
|
+
if (error != GRPC_ERROR_NONE) {
|
3252
|
+
errors.push_back(grpc_error_add_child(
|
3253
|
+
GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
3254
|
+
absl::StrCat(
|
3255
|
+
"Error parsing security configuration for cluster: ",
|
3256
|
+
cluster_name)
|
3257
|
+
.c_str()),
|
3258
|
+
error));
|
3259
|
+
resource_names_failed->insert(cluster_name);
|
3260
|
+
continue;
|
3072
3261
|
}
|
3073
3262
|
}
|
3074
3263
|
}
|
@@ -3404,8 +3593,12 @@ XdsApi::AdsParseResult XdsApi::ParseAdsResponse(
|
|
3404
3593
|
const std::set<absl::string_view>& expected_eds_service_names) {
|
3405
3594
|
AdsParseResult result;
|
3406
3595
|
upb::Arena arena;
|
3407
|
-
const EncodingContext context = {client_,
|
3408
|
-
|
3596
|
+
const EncodingContext context = {client_,
|
3597
|
+
tracer_,
|
3598
|
+
symtab_.ptr(),
|
3599
|
+
arena.ptr(),
|
3600
|
+
server.ShouldUseV3(),
|
3601
|
+
certificate_provider_definition_map_};
|
3409
3602
|
// Decode the response.
|
3410
3603
|
const envoy_service_discovery_v3_DiscoveryResponse* response =
|
3411
3604
|
envoy_service_discovery_v3_DiscoveryResponse_parse(
|
@@ -3492,8 +3685,12 @@ grpc_slice SerializeLrsRequest(
|
|
3492
3685
|
grpc_slice XdsApi::CreateLrsInitialRequest(
|
3493
3686
|
const XdsBootstrap::XdsServer& server) {
|
3494
3687
|
upb::Arena arena;
|
3495
|
-
const EncodingContext context = {client_,
|
3496
|
-
|
3688
|
+
const EncodingContext context = {client_,
|
3689
|
+
tracer_,
|
3690
|
+
symtab_.ptr(),
|
3691
|
+
arena.ptr(),
|
3692
|
+
server.ShouldUseV3(),
|
3693
|
+
certificate_provider_definition_map_};
|
3497
3694
|
// Create a request.
|
3498
3695
|
envoy_service_load_stats_v3_LoadStatsRequest* request =
|
3499
3696
|
envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
|
@@ -3563,8 +3760,9 @@ void LocalityStatsPopulate(
|
|
3563
3760
|
grpc_slice XdsApi::CreateLrsRequest(
|
3564
3761
|
ClusterLoadReportMap cluster_load_report_map) {
|
3565
3762
|
upb::Arena arena;
|
3566
|
-
const EncodingContext context = {
|
3567
|
-
|
3763
|
+
const EncodingContext context = {
|
3764
|
+
client_, tracer_, symtab_.ptr(),
|
3765
|
+
arena.ptr(), false, certificate_provider_definition_map_};
|
3568
3766
|
// Create a request.
|
3569
3767
|
envoy_service_load_stats_v3_LoadStatsRequest* request =
|
3570
3768
|
envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
|
@@ -3897,8 +4095,9 @@ std::string XdsApi::AssembleClientConfig(
|
|
3897
4095
|
// Fill-in the node information
|
3898
4096
|
auto* node = envoy_service_status_v3_ClientConfig_mutable_node(client_config,
|
3899
4097
|
arena.ptr());
|
3900
|
-
const EncodingContext context = {
|
3901
|
-
|
4098
|
+
const EncodingContext context = {
|
4099
|
+
client_, tracer_, symtab_.ptr(),
|
4100
|
+
arena.ptr(), true, certificate_provider_definition_map_};
|
3902
4101
|
PopulateNode(context, node_, build_version_, user_agent_name_,
|
3903
4102
|
user_agent_version_, node);
|
3904
4103
|
// Dump each xDS-type config into PerXdsConfig
|