grpc 1.35.0 → 1.38.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 +168 -131
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/channel_args.h +28 -0
- data/include/grpc/event_engine/event_engine.h +336 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice_allocator.h +81 -0
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security.h +16 -11
- data/include/grpc/grpc_security_constants.h +14 -0
- data/include/grpc/impl/codegen/grpc_types.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/include/grpc/module.modulemap +14 -14
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +740 -3185
- data/src/core/ext/filters/client_channel/client_channel.h +488 -56
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +10 -2
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +18 -14
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +26 -23
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +49 -48
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +22 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +318 -193
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +316 -171
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver.h +3 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +59 -60
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +67 -74
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +33 -23
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +38 -43
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +379 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +344 -177
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
- data/src/core/ext/filters/client_channel/server_address.cc +10 -1
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +86 -162
- data/src/core/ext/filters/client_channel/subchannel.h +68 -99
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +47 -42
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +5 -4
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +507 -196
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -3
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +64 -21
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +167 -122
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
- data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +150 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +19 -21
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +64 -51
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
- 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 +88 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +753 -724
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +371 -377
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/xds_api.cc +2179 -688
- data/src/core/ext/xds/xds_api.h +326 -124
- data/src/core/ext/xds/xds_bootstrap.cc +115 -142
- data/src/core/ext/xds/xds_bootstrap.h +24 -17
- data/src/core/ext/xds/xds_certificate_provider.cc +184 -78
- data/src/core/ext/xds/xds_certificate_provider.h +84 -45
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +462 -183
- data/src/core/ext/xds/xds_client.h +65 -22
- data/src/core/ext/xds/xds_client_stats.cc +2 -1
- data/src/core/ext/xds/xds_client_stats.h +5 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +444 -29
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +108 -5
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +26 -6
- data/src/core/lib/channel/channel_stack.cc +22 -9
- data/src/core/lib/channel/channel_stack.h +17 -9
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +108 -12
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +9 -50
- data/src/core/lib/channel/handshaker.h +6 -23
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/event_engine/slice_allocator.cc +59 -0
- data/src/core/lib/event_engine/sockaddr.cc +38 -0
- data/src/core/lib/gpr/log.cc +6 -1
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/ref_counted.h +29 -15
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- data/src/core/lib/gprpp/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +13 -9
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +7 -9
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -61
- data/src/core/lib/iomgr/error.h +218 -107
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +16 -13
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
- data/src/core/lib/iomgr/ev_epollex_linux.cc +52 -49
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +12 -11
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +10 -6
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -3
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +5 -5
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +3 -3
- data/src/core/lib/iomgr/resolve_address.h +6 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +12 -11
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +23 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +16 -18
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +41 -42
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
- data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +27 -25
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +8 -8
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +4 -4
- data/src/core/lib/matchers/matchers.cc +339 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +4 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -14
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +17 -14
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +6 -5
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +9 -9
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +16 -15
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -8
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +130 -61
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +31 -8
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +88 -74
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
- data/src/core/lib/security/transport/security_handshaker.cc +66 -37
- data/src/core/lib/security/transport/server_auth_filter.cc +24 -11
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +2 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice_intern.cc +5 -6
- data/src/core/lib/surface/call.cc +46 -45
- data/src/core/lib/surface/call.h +2 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +6 -5
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +46 -47
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +13 -15
- data/src/core/lib/surface/lame_client.cc +43 -24
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +71 -58
- data/src/core/lib/surface/server.h +91 -28
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +4 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +19 -8
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata.cc +6 -2
- data/src/core/lib/transport/metadata_batch.cc +64 -37
- data/src/core/lib/transport/metadata_batch.h +33 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -0
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -28
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +11 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
- data/src/core/tsi/ssl_transport_security.cc +32 -17
- data/src/core/tsi/ssl_transport_security.h +3 -7
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +742 -724
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +4 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +40 -86
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +6 -17
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +135 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +161 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +121 -71
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +71 -41
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → rand_extra/passive.c} +16 -11
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +4 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +737 -551
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +15 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +13 -40
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +239 -37
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +28 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +702 -219
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +141 -36
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +47 -15
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +159 -13
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +253 -58
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +90 -25
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +450 -104
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +232 -85
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +167 -88
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -0,0 +1,23 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2018 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
namespace grpc_core {
|
20
|
+
|
21
|
+
const char* kRequestRingHashAttribute = "request_ring_hash";
|
22
|
+
|
23
|
+
} // namespace grpc_core
|
@@ -0,0 +1,27 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2018 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_RING_HASH_RING_HASH_H
|
18
|
+
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_RING_HASH_RING_HASH_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
namespace grpc_core {
|
23
|
+
extern const char* kRequestRingHashAttribute;
|
24
|
+
|
25
|
+
} // namespace grpc_core
|
26
|
+
|
27
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_RING_HASH_RING_HASH_H
|
@@ -34,11 +34,11 @@
|
|
34
34
|
#include "src/core/ext/filters/client_channel/lb_policy/subchannel_list.h"
|
35
35
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
36
36
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
37
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
37
38
|
#include "src/core/lib/channel/channel_args.h"
|
38
39
|
#include "src/core/lib/debug/trace.h"
|
39
40
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
40
41
|
#include "src/core/lib/gprpp/sync.h"
|
41
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
42
42
|
#include "src/core/lib/transport/connectivity_state.h"
|
43
43
|
#include "src/core/lib/transport/error_utils.h"
|
44
44
|
#include "src/core/lib/transport/static_metadata.h"
|
@@ -331,7 +331,7 @@ void RoundRobin::RoundRobinSubchannelList::
|
|
331
331
|
absl::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
|
332
332
|
} else if (num_transient_failure_ == num_subchannels()) {
|
333
333
|
/* 3) TRANSIENT_FAILURE */
|
334
|
-
|
334
|
+
grpc_error_handle error =
|
335
335
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
336
336
|
"connections to all backends failing"),
|
337
337
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
@@ -449,7 +449,7 @@ void RoundRobin::UpdateLocked(UpdateArgs args) {
|
|
449
449
|
if (latest_pending_subchannel_list_->num_subchannels() == 0) {
|
450
450
|
// If the new list is empty, immediately promote the new list to the
|
451
451
|
// current list and transition to TRANSIENT_FAILURE.
|
452
|
-
|
452
|
+
grpc_error_handle error =
|
453
453
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty update"),
|
454
454
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
455
455
|
channel_control_helper()->UpdateState(
|
@@ -487,7 +487,7 @@ class RoundRobinFactory : public LoadBalancingPolicyFactory {
|
|
487
487
|
const char* name() const override { return kRoundRobin; }
|
488
488
|
|
489
489
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
490
|
-
const Json& /*json*/,
|
490
|
+
const Json& /*json*/, grpc_error_handle* /*error*/) const override {
|
491
491
|
return MakeRefCounted<RoundRobinConfig>();
|
492
492
|
}
|
493
493
|
};
|
@@ -33,13 +33,13 @@
|
|
33
33
|
// that implementation should be hidden from the LB policy API.
|
34
34
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
35
35
|
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
36
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
36
37
|
#include "src/core/lib/channel/channel_args.h"
|
37
38
|
#include "src/core/lib/debug/trace.h"
|
38
39
|
#include "src/core/lib/gprpp/orphanable.h"
|
39
40
|
#include "src/core/lib/gprpp/ref_counted.h"
|
40
41
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
41
42
|
#include "src/core/lib/iomgr/closure.h"
|
42
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
43
43
|
#include "src/core/lib/transport/connectivity_state.h"
|
44
44
|
|
45
45
|
// Code for maintaining a list of subchannels within an LB policy.
|
@@ -165,8 +165,8 @@ class WeightedTargetLb : public LoadBalancingPolicy {
|
|
165
165
|
grpc_connectivity_state state, const absl::Status& status,
|
166
166
|
std::unique_ptr<SubchannelPicker> picker);
|
167
167
|
|
168
|
-
static void OnDelayedRemovalTimer(void* arg,
|
169
|
-
void OnDelayedRemovalTimerLocked(
|
168
|
+
static void OnDelayedRemovalTimer(void* arg, grpc_error_handle error);
|
169
|
+
void OnDelayedRemovalTimerLocked(grpc_error_handle error);
|
170
170
|
|
171
171
|
// The owning LB policy.
|
172
172
|
RefCountedPtr<WeightedTargetLb> weighted_target_policy_;
|
@@ -387,7 +387,7 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
387
387
|
absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker"));
|
388
388
|
break;
|
389
389
|
default:
|
390
|
-
|
390
|
+
grpc_error_handle error = grpc_error_set_int(
|
391
391
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
392
392
|
"weighted_target: all children report state TRANSIENT_FAILURE"),
|
393
393
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
@@ -564,8 +564,8 @@ void WeightedTargetLb::WeightedChild::DeactivateLocked() {
|
|
564
564
|
&on_delayed_removal_timer_);
|
565
565
|
}
|
566
566
|
|
567
|
-
void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimer(
|
568
|
-
|
567
|
+
void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimer(
|
568
|
+
void* arg, grpc_error_handle error) {
|
569
569
|
WeightedChild* self = static_cast<WeightedChild*>(arg);
|
570
570
|
GRPC_ERROR_REF(error); // ref owned by lambda
|
571
571
|
self->weighted_target_policy_->work_serializer()->Run(
|
@@ -574,7 +574,7 @@ void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimer(void* arg,
|
|
574
574
|
}
|
575
575
|
|
576
576
|
void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimerLocked(
|
577
|
-
|
577
|
+
grpc_error_handle error) {
|
578
578
|
if (error == GRPC_ERROR_NONE && delayed_removal_timer_callback_pending_ &&
|
579
579
|
!shutdown_ && weight_ == 0) {
|
580
580
|
delayed_removal_timer_callback_pending_ = false;
|
@@ -631,7 +631,7 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
631
631
|
const char* name() const override { return kWeightedTarget; }
|
632
632
|
|
633
633
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
634
|
-
const Json& json,
|
634
|
+
const Json& json, grpc_error_handle* error) const override {
|
635
635
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
636
636
|
if (json.type() == Json::Type::JSON_NULL) {
|
637
637
|
// weighted_target was mentioned as a policy in the deprecated
|
@@ -642,7 +642,7 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
642
642
|
"config instead.");
|
643
643
|
return nullptr;
|
644
644
|
}
|
645
|
-
std::vector<
|
645
|
+
std::vector<grpc_error_handle> error_list;
|
646
646
|
// Weight map.
|
647
647
|
WeightedTargetLbConfig::TargetMap target_map;
|
648
648
|
auto it = json.object_value().find("targets");
|
@@ -655,14 +655,14 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
655
655
|
} else {
|
656
656
|
for (const auto& p : it->second.object_value()) {
|
657
657
|
WeightedTargetLbConfig::ChildConfig child_config;
|
658
|
-
std::vector<
|
658
|
+
std::vector<grpc_error_handle> child_errors =
|
659
659
|
ParseChildConfig(p.second, &child_config);
|
660
660
|
if (!child_errors.empty()) {
|
661
661
|
// Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
|
662
662
|
// string is not static in this case.
|
663
|
-
|
663
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
664
664
|
absl::StrCat("field:targets key:", p.first).c_str());
|
665
|
-
for (
|
665
|
+
for (grpc_error_handle child_error : child_errors) {
|
666
666
|
error = grpc_error_add_child(error, child_error);
|
667
667
|
}
|
668
668
|
error_list.push_back(error);
|
@@ -680,9 +680,9 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
680
680
|
}
|
681
681
|
|
682
682
|
private:
|
683
|
-
static std::vector<
|
683
|
+
static std::vector<grpc_error_handle> ParseChildConfig(
|
684
684
|
const Json& json, WeightedTargetLbConfig::ChildConfig* child_config) {
|
685
|
-
std::vector<
|
685
|
+
std::vector<grpc_error_handle> error_list;
|
686
686
|
if (json.type() != Json::Type::OBJECT) {
|
687
687
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
688
688
|
"value should be of type object"));
|
@@ -711,13 +711,13 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
711
711
|
// Child policy.
|
712
712
|
it = json.object_value().find("childPolicy");
|
713
713
|
if (it != json.object_value().end()) {
|
714
|
-
|
714
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
715
715
|
child_config->config =
|
716
716
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(it->second,
|
717
717
|
&parse_error);
|
718
718
|
if (child_config->config == nullptr) {
|
719
719
|
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
|
720
|
-
std::vector<
|
720
|
+
std::vector<grpc_error_handle> child_errors;
|
721
721
|
child_errors.push_back(parse_error);
|
722
722
|
error_list.push_back(
|
723
723
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
@@ -63,40 +63,55 @@ class CdsLb : public LoadBalancingPolicy {
|
|
63
63
|
|
64
64
|
void UpdateLocked(UpdateArgs args) override;
|
65
65
|
void ResetBackoffLocked() override;
|
66
|
+
void ExitIdleLocked() override;
|
66
67
|
|
67
68
|
private:
|
68
69
|
// Watcher for getting cluster data from XdsClient.
|
69
70
|
class ClusterWatcher : public XdsClient::ClusterWatcherInterface {
|
70
71
|
public:
|
71
|
-
|
72
|
-
: parent_(std::move(parent)) {}
|
72
|
+
ClusterWatcher(RefCountedPtr<CdsLb> parent, std::string name)
|
73
|
+
: parent_(std::move(parent)), name_(std::move(name)) {}
|
73
74
|
|
74
75
|
void OnClusterChanged(XdsApi::CdsUpdate cluster_data) override {
|
75
|
-
new Notifier(parent_, std::move(cluster_data));
|
76
|
+
new Notifier(parent_, name_, std::move(cluster_data));
|
76
77
|
}
|
77
|
-
void OnError(
|
78
|
-
|
78
|
+
void OnError(grpc_error_handle error) override {
|
79
|
+
new Notifier(parent_, name_, error);
|
80
|
+
}
|
81
|
+
void OnResourceDoesNotExist() override { new Notifier(parent_, name_); }
|
79
82
|
|
80
83
|
private:
|
81
84
|
class Notifier {
|
82
85
|
public:
|
83
|
-
Notifier(RefCountedPtr<CdsLb> parent,
|
84
|
-
|
85
|
-
|
86
|
+
Notifier(RefCountedPtr<CdsLb> parent, std::string name,
|
87
|
+
XdsApi::CdsUpdate update);
|
88
|
+
Notifier(RefCountedPtr<CdsLb> parent, std::string name,
|
89
|
+
grpc_error_handle error);
|
90
|
+
explicit Notifier(RefCountedPtr<CdsLb> parent, std::string name);
|
86
91
|
|
87
92
|
private:
|
88
93
|
enum Type { kUpdate, kError, kDoesNotExist };
|
89
94
|
|
90
|
-
static void RunInExecCtx(void* arg,
|
91
|
-
void RunInWorkSerializer(
|
95
|
+
static void RunInExecCtx(void* arg, grpc_error_handle error);
|
96
|
+
void RunInWorkSerializer(grpc_error_handle error);
|
92
97
|
|
93
98
|
RefCountedPtr<CdsLb> parent_;
|
99
|
+
std::string name_;
|
94
100
|
grpc_closure closure_;
|
95
101
|
XdsApi::CdsUpdate update_;
|
96
102
|
Type type_;
|
97
103
|
};
|
98
104
|
|
99
105
|
RefCountedPtr<CdsLb> parent_;
|
106
|
+
std::string name_;
|
107
|
+
};
|
108
|
+
|
109
|
+
struct WatcherState {
|
110
|
+
// Pointer to watcher, to be used when cancelling.
|
111
|
+
// Not owned, so do not dereference.
|
112
|
+
ClusterWatcher* watcher = nullptr;
|
113
|
+
// Most recent update obtained from this watcher.
|
114
|
+
absl::optional<XdsApi::CdsUpdate> update;
|
100
115
|
};
|
101
116
|
|
102
117
|
// Delegating helper to be passed to child policy.
|
@@ -119,12 +134,20 @@ class CdsLb : public LoadBalancingPolicy {
|
|
119
134
|
|
120
135
|
void ShutdownLocked() override;
|
121
136
|
|
122
|
-
|
123
|
-
|
124
|
-
|
137
|
+
bool GenerateDiscoveryMechanismForCluster(
|
138
|
+
const std::string& name, Json::Array* discovery_mechanisms,
|
139
|
+
std::set<std::string>* clusters_needed);
|
140
|
+
void OnClusterChanged(const std::string& name,
|
141
|
+
XdsApi::CdsUpdate cluster_data);
|
142
|
+
void OnError(const std::string& name, grpc_error_handle error);
|
143
|
+
void OnResourceDoesNotExist(const std::string& name);
|
125
144
|
|
126
|
-
|
127
|
-
const XdsApi::CdsUpdate& cluster_data);
|
145
|
+
grpc_error_handle UpdateXdsCertificateProvider(
|
146
|
+
const std::string& cluster_name, const XdsApi::CdsUpdate& cluster_data);
|
147
|
+
|
148
|
+
void CancelClusterDataWatch(absl::string_view cluster_name,
|
149
|
+
XdsClient::ClusterWatcherInterface* watcher,
|
150
|
+
bool delay_unsubscription = false);
|
128
151
|
|
129
152
|
void MaybeDestroyChildPolicyLocked();
|
130
153
|
|
@@ -135,9 +158,10 @@ class CdsLb : public LoadBalancingPolicy {
|
|
135
158
|
|
136
159
|
// The xds client.
|
137
160
|
RefCountedPtr<XdsClient> xds_client_;
|
138
|
-
|
139
|
-
//
|
140
|
-
|
161
|
+
|
162
|
+
// Maps from cluster name to the state for that cluster.
|
163
|
+
// The root of the tree is config_->cluster().
|
164
|
+
std::map<std::string, WatcherState> watchers_;
|
141
165
|
|
142
166
|
RefCountedPtr<grpc_tls_certificate_provider> root_certificate_provider_;
|
143
167
|
RefCountedPtr<grpc_tls_certificate_provider> identity_certificate_provider_;
|
@@ -155,43 +179,50 @@ class CdsLb : public LoadBalancingPolicy {
|
|
155
179
|
//
|
156
180
|
|
157
181
|
CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr<CdsLb> parent,
|
182
|
+
std::string name,
|
158
183
|
XdsApi::CdsUpdate update)
|
159
|
-
: parent_(std::move(parent)),
|
184
|
+
: parent_(std::move(parent)),
|
185
|
+
name_(std::move(name)),
|
186
|
+
update_(std::move(update)),
|
187
|
+
type_(kUpdate) {
|
160
188
|
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
161
189
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
|
162
190
|
}
|
163
191
|
|
164
192
|
CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr<CdsLb> parent,
|
165
|
-
|
166
|
-
|
193
|
+
std::string name,
|
194
|
+
grpc_error_handle error)
|
195
|
+
: parent_(std::move(parent)), name_(std::move(name)), type_(kError) {
|
167
196
|
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
168
197
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, error);
|
169
198
|
}
|
170
199
|
|
171
|
-
CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr<CdsLb> parent
|
172
|
-
|
200
|
+
CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr<CdsLb> parent,
|
201
|
+
std::string name)
|
202
|
+
: parent_(std::move(parent)), name_(std::move(name)), type_(kDoesNotExist) {
|
173
203
|
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
174
204
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
|
175
205
|
}
|
176
206
|
|
177
207
|
void CdsLb::ClusterWatcher::Notifier::RunInExecCtx(void* arg,
|
178
|
-
|
208
|
+
grpc_error_handle error) {
|
179
209
|
Notifier* self = static_cast<Notifier*>(arg);
|
180
210
|
GRPC_ERROR_REF(error);
|
181
211
|
self->parent_->work_serializer()->Run(
|
182
212
|
[self, error]() { self->RunInWorkSerializer(error); }, DEBUG_LOCATION);
|
183
213
|
}
|
184
214
|
|
185
|
-
void CdsLb::ClusterWatcher::Notifier::RunInWorkSerializer(
|
215
|
+
void CdsLb::ClusterWatcher::Notifier::RunInWorkSerializer(
|
216
|
+
grpc_error_handle error) {
|
186
217
|
switch (type_) {
|
187
218
|
case kUpdate:
|
188
|
-
parent_->OnClusterChanged(std::move(update_));
|
219
|
+
parent_->OnClusterChanged(name_, std::move(update_));
|
189
220
|
break;
|
190
221
|
case kError:
|
191
|
-
parent_->OnError(error);
|
222
|
+
parent_->OnError(name_, error);
|
192
223
|
break;
|
193
224
|
case kDoesNotExist:
|
194
|
-
parent_->OnResourceDoesNotExist();
|
225
|
+
parent_->OnResourceDoesNotExist(name_);
|
195
226
|
break;
|
196
227
|
};
|
197
228
|
delete this;
|
@@ -261,13 +292,15 @@ void CdsLb::ShutdownLocked() {
|
|
261
292
|
shutting_down_ = true;
|
262
293
|
MaybeDestroyChildPolicyLocked();
|
263
294
|
if (xds_client_ != nullptr) {
|
264
|
-
|
295
|
+
for (auto& watcher : watchers_) {
|
265
296
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
|
266
297
|
gpr_log(GPR_INFO, "[cdslb %p] cancelling watch for cluster %s", this,
|
267
|
-
|
298
|
+
watcher.first.c_str());
|
268
299
|
}
|
269
|
-
|
300
|
+
CancelClusterDataWatch(watcher.first, watcher.second.watcher,
|
301
|
+
/*delay_unsubscription=*/false);
|
270
302
|
}
|
303
|
+
watchers_.clear();
|
271
304
|
xds_client_.reset(DEBUG_LOCATION, "CdsLb");
|
272
305
|
}
|
273
306
|
grpc_channel_args_destroy(args_);
|
@@ -286,6 +319,10 @@ void CdsLb::ResetBackoffLocked() {
|
|
286
319
|
if (child_policy_ != nullptr) child_policy_->ResetBackoffLocked();
|
287
320
|
}
|
288
321
|
|
322
|
+
void CdsLb::ExitIdleLocked() {
|
323
|
+
if (child_policy_ != nullptr) child_policy_->ExitIdleLocked();
|
324
|
+
}
|
325
|
+
|
289
326
|
void CdsLb::UpdateLocked(UpdateArgs args) {
|
290
327
|
// Update config.
|
291
328
|
auto old_config = std::move(config_);
|
@@ -301,119 +338,214 @@ void CdsLb::UpdateLocked(UpdateArgs args) {
|
|
301
338
|
// If cluster name changed, cancel watcher and restart.
|
302
339
|
if (old_config == nullptr || old_config->cluster() != config_->cluster()) {
|
303
340
|
if (old_config != nullptr) {
|
304
|
-
|
305
|
-
|
306
|
-
|
341
|
+
for (auto& watcher : watchers_) {
|
342
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
|
343
|
+
gpr_log(GPR_INFO, "[cdslb %p] cancelling watch for cluster %s", this,
|
344
|
+
watcher.first.c_str());
|
345
|
+
}
|
346
|
+
CancelClusterDataWatch(watcher.first, watcher.second.watcher,
|
347
|
+
/*delay_unsubscription=*/true);
|
307
348
|
}
|
308
|
-
|
309
|
-
cluster_watcher_,
|
310
|
-
/*delay_unsubscription=*/true);
|
349
|
+
watchers_.clear();
|
311
350
|
}
|
312
|
-
|
313
|
-
|
314
|
-
config_->cluster().c_str());
|
315
|
-
}
|
316
|
-
auto watcher = absl::make_unique<ClusterWatcher>(Ref());
|
317
|
-
cluster_watcher_ = watcher.get();
|
351
|
+
auto watcher = absl::make_unique<ClusterWatcher>(Ref(), config_->cluster());
|
352
|
+
watchers_[config_->cluster()].watcher = watcher.get();
|
318
353
|
xds_client_->WatchClusterData(config_->cluster(), std::move(watcher));
|
319
354
|
}
|
320
355
|
}
|
321
356
|
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
357
|
+
// This method will attempt to generate one or multiple entries of discovery
|
358
|
+
// mechanism recursively:
|
359
|
+
// For cluster types EDS or LOGICAL_DNS, one discovery mechanism entry may be
|
360
|
+
// generated cluster name, type and other data from the CdsUpdate inserted into
|
361
|
+
// the entry and the entry appended to the array of entries.
|
362
|
+
// Note, discovery mechanism entry can be generated if an CdsUpdate is
|
363
|
+
// available; otherwise, just return false. For cluster type AGGREGATE,
|
364
|
+
// recursively call the method for each child cluster.
|
365
|
+
bool CdsLb::GenerateDiscoveryMechanismForCluster(
|
366
|
+
const std::string& name, Json::Array* discovery_mechanisms,
|
367
|
+
std::set<std::string>* clusters_needed) {
|
368
|
+
clusters_needed->insert(name);
|
369
|
+
auto& state = watchers_[name];
|
370
|
+
// Create a new watcher if needed.
|
371
|
+
if (state.watcher == nullptr) {
|
372
|
+
auto watcher = absl::make_unique<ClusterWatcher>(Ref(), name);
|
373
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
|
374
|
+
gpr_log(GPR_INFO, "[cdslb %p] starting watch for cluster %s", this,
|
375
|
+
name.c_str());
|
376
|
+
}
|
377
|
+
state.watcher = watcher.get();
|
378
|
+
xds_client_->WatchClusterData(name, std::move(watcher));
|
379
|
+
return false;
|
326
380
|
}
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
381
|
+
// Don't have the update we need yet.
|
382
|
+
if (!state.update.has_value()) return false;
|
383
|
+
// For AGGREGATE clusters, recursively expand to child clusters.
|
384
|
+
if (state.update->cluster_type == XdsApi::CdsUpdate::ClusterType::AGGREGATE) {
|
385
|
+
bool missing_cluster = false;
|
386
|
+
for (const std::string& child_name :
|
387
|
+
state.update->prioritized_cluster_names) {
|
388
|
+
if (!GenerateDiscoveryMechanismForCluster(
|
389
|
+
child_name, discovery_mechanisms, clusters_needed)) {
|
390
|
+
missing_cluster = true;
|
391
|
+
}
|
392
|
+
}
|
393
|
+
return !missing_cluster;
|
394
|
+
}
|
395
|
+
std::string type;
|
396
|
+
switch (state.update->cluster_type) {
|
397
|
+
case XdsApi::CdsUpdate::ClusterType::EDS:
|
398
|
+
type = "EDS";
|
399
|
+
break;
|
400
|
+
case XdsApi::CdsUpdate::ClusterType::LOGICAL_DNS:
|
401
|
+
type = "LOGICAL_DNS";
|
402
|
+
break;
|
403
|
+
default:
|
404
|
+
GPR_ASSERT(0);
|
405
|
+
break;
|
331
406
|
}
|
332
|
-
|
333
|
-
|
334
|
-
{"
|
335
|
-
{"
|
336
|
-
{"type", "EDS"},
|
407
|
+
Json::Object mechanism = {
|
408
|
+
{"clusterName", name},
|
409
|
+
{"max_concurrent_requests", state.update->max_concurrent_requests},
|
410
|
+
{"type", std::move(type)},
|
337
411
|
};
|
338
|
-
if (!
|
339
|
-
|
412
|
+
if (!state.update->eds_service_name.empty()) {
|
413
|
+
mechanism["edsServiceName"] = state.update->eds_service_name;
|
340
414
|
}
|
341
|
-
if (
|
342
|
-
|
343
|
-
|
415
|
+
if (state.update->lrs_load_reporting_server_name.has_value()) {
|
416
|
+
mechanism["lrsLoadReportingServerName"] =
|
417
|
+
state.update->lrs_load_reporting_server_name.value();
|
344
418
|
}
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
Json::Array{
|
352
|
-
Json::Object{
|
353
|
-
{"weighted_target_experimental",
|
354
|
-
Json::Object{
|
355
|
-
{"targets", Json::Object()},
|
356
|
-
}},
|
357
|
-
},
|
358
|
-
}},
|
359
|
-
{"endpointPickingPolicy",
|
360
|
-
Json::Array{
|
361
|
-
Json::Object{
|
362
|
-
{"round_robin", Json::Object()},
|
363
|
-
},
|
364
|
-
}},
|
365
|
-
};
|
366
|
-
Json json = Json::Array{
|
367
|
-
Json::Object{
|
368
|
-
{"xds_cluster_resolver_experimental", std::move(child_config)},
|
369
|
-
},
|
370
|
-
};
|
419
|
+
discovery_mechanisms->emplace_back(std::move(mechanism));
|
420
|
+
return true;
|
421
|
+
}
|
422
|
+
|
423
|
+
void CdsLb::OnClusterChanged(const std::string& name,
|
424
|
+
XdsApi::CdsUpdate cluster_data) {
|
371
425
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
|
372
|
-
|
373
|
-
|
374
|
-
|
426
|
+
gpr_log(
|
427
|
+
GPR_INFO,
|
428
|
+
"[cdslb %p] received CDS update for cluster %s from xds client %p: %s",
|
429
|
+
this, name.c_str(), xds_client_.get(), cluster_data.ToString().c_str());
|
375
430
|
}
|
376
|
-
|
377
|
-
|
431
|
+
// Store the update in the map if we are still interested in watching this
|
432
|
+
// cluster (i.e., it is not cancelled already).
|
433
|
+
// If we've already deleted this entry, then this is an update notification
|
434
|
+
// that was scheduled before the deletion, so we can just ignore it.
|
435
|
+
auto it = watchers_.find(name);
|
436
|
+
if (it == watchers_.end()) return;
|
437
|
+
it->second.update = cluster_data;
|
438
|
+
// Take care of integration with new certificate code.
|
439
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
440
|
+
error = UpdateXdsCertificateProvider(name, it->second.update.value());
|
378
441
|
if (error != GRPC_ERROR_NONE) {
|
379
|
-
OnError(error);
|
380
|
-
return;
|
442
|
+
return OnError(name, error);
|
381
443
|
}
|
382
|
-
//
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
444
|
+
// Scan the map starting from the root cluster to generate the list of
|
445
|
+
// discovery mechanisms. If we don't have some of the data we need (i.e., we
|
446
|
+
// just started up and not all watchers have returned data yet), then don't
|
447
|
+
// update the child policy at all.
|
448
|
+
Json::Array discovery_mechanisms;
|
449
|
+
std::set<std::string> clusters_needed;
|
450
|
+
if (GenerateDiscoveryMechanismForCluster(
|
451
|
+
config_->cluster(), &discovery_mechanisms, &clusters_needed)) {
|
452
|
+
// Construct config for child policy.
|
453
|
+
Json::Object xds_lb_policy;
|
454
|
+
if (cluster_data.lb_policy == "RING_HASH") {
|
455
|
+
std::string hash_function;
|
456
|
+
switch (cluster_data.hash_function) {
|
457
|
+
case XdsApi::CdsUpdate::HashFunction::XX_HASH:
|
458
|
+
hash_function = "XX_HASH";
|
459
|
+
break;
|
460
|
+
case XdsApi::CdsUpdate::HashFunction::MURMUR_HASH_2:
|
461
|
+
hash_function = "MURMUR_HASH_2";
|
462
|
+
break;
|
463
|
+
default:
|
464
|
+
GPR_ASSERT(0);
|
465
|
+
break;
|
466
|
+
}
|
467
|
+
xds_lb_policy["RING_HASH"] = Json::Object{
|
468
|
+
{"min_ring_size", cluster_data.min_ring_size},
|
469
|
+
{"max_ring_size", cluster_data.max_ring_size},
|
470
|
+
{"hash_function", hash_function},
|
471
|
+
};
|
472
|
+
} else {
|
473
|
+
xds_lb_policy["ROUND_ROBIN"] = Json::Object();
|
394
474
|
}
|
395
|
-
|
396
|
-
|
475
|
+
Json::Object child_config = {
|
476
|
+
{"xdsLbPolicy",
|
477
|
+
Json::Array{
|
478
|
+
xds_lb_policy,
|
479
|
+
}},
|
480
|
+
{"discoveryMechanisms", std::move(discovery_mechanisms)},
|
481
|
+
};
|
482
|
+
Json json = Json::Array{
|
483
|
+
Json::Object{
|
484
|
+
{"xds_cluster_resolver_experimental", std::move(child_config)},
|
485
|
+
},
|
486
|
+
};
|
397
487
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
|
398
|
-
|
399
|
-
|
488
|
+
std::string json_str = json.Dump(/*indent=*/1);
|
489
|
+
gpr_log(GPR_INFO, "[cdslb %p] generated config for child policy: %s",
|
490
|
+
this, json_str.c_str());
|
400
491
|
}
|
492
|
+
RefCountedPtr<LoadBalancingPolicy::Config> config =
|
493
|
+
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(json, &error);
|
494
|
+
if (error != GRPC_ERROR_NONE) {
|
495
|
+
OnError(name, error);
|
496
|
+
return;
|
497
|
+
}
|
498
|
+
// Create child policy if not already present.
|
499
|
+
if (child_policy_ == nullptr) {
|
500
|
+
LoadBalancingPolicy::Args args;
|
501
|
+
args.work_serializer = work_serializer();
|
502
|
+
args.args = args_;
|
503
|
+
args.channel_control_helper = absl::make_unique<Helper>(Ref());
|
504
|
+
child_policy_ = LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
|
505
|
+
config->name(), std::move(args));
|
506
|
+
if (child_policy_ == nullptr) {
|
507
|
+
OnError(name, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
508
|
+
"failed to create child policy"));
|
509
|
+
return;
|
510
|
+
}
|
511
|
+
grpc_pollset_set_add_pollset_set(child_policy_->interested_parties(),
|
512
|
+
interested_parties());
|
513
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
|
514
|
+
gpr_log(GPR_INFO, "[cdslb %p] created child policy %s (%p)", this,
|
515
|
+
config->name(), child_policy_.get());
|
516
|
+
}
|
517
|
+
}
|
518
|
+
// Update child policy.
|
519
|
+
UpdateArgs args;
|
520
|
+
args.config = std::move(config);
|
521
|
+
if (xds_certificate_provider_ != nullptr) {
|
522
|
+
grpc_arg arg_to_add = xds_certificate_provider_->MakeChannelArg();
|
523
|
+
args.args = grpc_channel_args_copy_and_add(args_, &arg_to_add, 1);
|
524
|
+
} else {
|
525
|
+
args.args = grpc_channel_args_copy(args_);
|
526
|
+
}
|
527
|
+
child_policy_->UpdateLocked(std::move(args));
|
401
528
|
}
|
402
|
-
//
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
529
|
+
// Remove entries in watchers_ for any clusters not in clusters_needed
|
530
|
+
for (auto it = watchers_.begin(); it != watchers_.end();) {
|
531
|
+
const std::string& cluster_name = it->first;
|
532
|
+
if (clusters_needed.find(cluster_name) != clusters_needed.end()) {
|
533
|
+
++it;
|
534
|
+
continue;
|
535
|
+
}
|
536
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
|
537
|
+
gpr_log(GPR_INFO, "[cdslb %p] cancelling watch for cluster %s", this,
|
538
|
+
cluster_name.c_str());
|
539
|
+
}
|
540
|
+
CancelClusterDataWatch(cluster_name, it->second.watcher,
|
541
|
+
/*delay_unsubscription=*/false);
|
542
|
+
it = watchers_.erase(it);
|
410
543
|
}
|
411
|
-
child_policy_->UpdateLocked(std::move(args));
|
412
544
|
}
|
413
545
|
|
414
|
-
void CdsLb::OnError(
|
546
|
+
void CdsLb::OnError(const std::string& name, grpc_error_handle error) {
|
415
547
|
gpr_log(GPR_ERROR, "[cdslb %p] xds error obtaining data for cluster %s: %s",
|
416
|
-
this,
|
548
|
+
this, name.c_str(), grpc_error_std_string(error).c_str());
|
417
549
|
// Go into TRANSIENT_FAILURE if we have not yet created the child
|
418
550
|
// policy (i.e., we have not yet received data from xds). Otherwise,
|
419
551
|
// we keep running with the data we had previously.
|
@@ -426,12 +558,12 @@ void CdsLb::OnError(grpc_error* error) {
|
|
426
558
|
}
|
427
559
|
}
|
428
560
|
|
429
|
-
void CdsLb::OnResourceDoesNotExist() {
|
561
|
+
void CdsLb::OnResourceDoesNotExist(const std::string& name) {
|
430
562
|
gpr_log(GPR_ERROR,
|
431
563
|
"[cdslb %p] CDS resource for %s does not exist -- reporting "
|
432
564
|
"TRANSIENT_FAILURE",
|
433
|
-
this,
|
434
|
-
|
565
|
+
this, name.c_str());
|
566
|
+
grpc_error_handle error =
|
435
567
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
436
568
|
absl::StrCat("CDS resource \"", config_->cluster(),
|
437
569
|
"\" does not exist")
|
@@ -443,8 +575,8 @@ void CdsLb::OnResourceDoesNotExist() {
|
|
443
575
|
MaybeDestroyChildPolicyLocked();
|
444
576
|
}
|
445
577
|
|
446
|
-
|
447
|
-
const XdsApi::CdsUpdate& cluster_data) {
|
578
|
+
grpc_error_handle CdsLb::UpdateXdsCertificateProvider(
|
579
|
+
const std::string& cluster_name, const XdsApi::CdsUpdate& cluster_data) {
|
448
580
|
// Early out if channel is not configured to use xds security.
|
449
581
|
grpc_channel_credentials* channel_credentials =
|
450
582
|
grpc_channel_credentials_find_in_args(args_);
|
@@ -453,28 +585,28 @@ grpc_error* CdsLb::UpdateXdsCertificateProvider(
|
|
453
585
|
xds_certificate_provider_ = nullptr;
|
454
586
|
return GRPC_ERROR_NONE;
|
455
587
|
}
|
588
|
+
if (xds_certificate_provider_ == nullptr) {
|
589
|
+
xds_certificate_provider_ = MakeRefCounted<XdsCertificateProvider>();
|
590
|
+
}
|
591
|
+
// Configure root cert.
|
456
592
|
absl::string_view root_provider_instance_name =
|
457
593
|
cluster_data.common_tls_context.combined_validation_context
|
458
594
|
.validation_context_certificate_provider_instance.instance_name;
|
459
595
|
absl::string_view root_provider_cert_name =
|
460
596
|
cluster_data.common_tls_context.combined_validation_context
|
461
597
|
.validation_context_certificate_provider_instance.certificate_name;
|
462
|
-
absl::string_view identity_provider_instance_name =
|
463
|
-
cluster_data.common_tls_context
|
464
|
-
.tls_certificate_certificate_provider_instance.instance_name;
|
465
|
-
absl::string_view identity_provider_cert_name =
|
466
|
-
cluster_data.common_tls_context
|
467
|
-
.tls_certificate_certificate_provider_instance.certificate_name;
|
468
598
|
RefCountedPtr<XdsCertificateProvider> new_root_provider;
|
469
599
|
if (!root_provider_instance_name.empty()) {
|
470
600
|
new_root_provider =
|
471
601
|
xds_client_->certificate_provider_store()
|
472
602
|
.CreateOrGetCertificateProvider(root_provider_instance_name);
|
473
603
|
if (new_root_provider == nullptr) {
|
474
|
-
return
|
475
|
-
|
476
|
-
|
477
|
-
|
604
|
+
return grpc_error_set_int(
|
605
|
+
GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
606
|
+
absl::StrCat("Certificate provider instance name: \"",
|
607
|
+
root_provider_instance_name, "\" not recognized.")
|
608
|
+
.c_str()),
|
609
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
478
610
|
}
|
479
611
|
}
|
480
612
|
if (root_certificate_provider_ != new_root_provider) {
|
@@ -491,16 +623,31 @@ grpc_error* CdsLb::UpdateXdsCertificateProvider(
|
|
491
623
|
}
|
492
624
|
root_certificate_provider_ = std::move(new_root_provider);
|
493
625
|
}
|
626
|
+
xds_certificate_provider_->UpdateRootCertNameAndDistributor(
|
627
|
+
cluster_name, root_provider_cert_name,
|
628
|
+
root_certificate_provider_ == nullptr
|
629
|
+
? nullptr
|
630
|
+
: root_certificate_provider_->distributor());
|
631
|
+
// Configure identity cert.
|
632
|
+
absl::string_view identity_provider_instance_name =
|
633
|
+
cluster_data.common_tls_context
|
634
|
+
.tls_certificate_certificate_provider_instance.instance_name;
|
635
|
+
absl::string_view identity_provider_cert_name =
|
636
|
+
cluster_data.common_tls_context
|
637
|
+
.tls_certificate_certificate_provider_instance.certificate_name;
|
494
638
|
RefCountedPtr<XdsCertificateProvider> new_identity_provider;
|
495
639
|
if (!identity_provider_instance_name.empty()) {
|
496
640
|
new_identity_provider =
|
497
641
|
xds_client_->certificate_provider_store()
|
498
642
|
.CreateOrGetCertificateProvider(identity_provider_instance_name);
|
499
643
|
if (new_identity_provider == nullptr) {
|
500
|
-
return
|
501
|
-
|
502
|
-
|
503
|
-
|
644
|
+
return grpc_error_set_int(
|
645
|
+
GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
646
|
+
absl::StrCat("Certificate provider instance name: \"",
|
647
|
+
identity_provider_instance_name,
|
648
|
+
"\" not recognized.")
|
649
|
+
.c_str()),
|
650
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
504
651
|
}
|
505
652
|
}
|
506
653
|
if (identity_certificate_provider_ != new_identity_provider) {
|
@@ -517,56 +664,34 @@ grpc_error* CdsLb::UpdateXdsCertificateProvider(
|
|
517
664
|
}
|
518
665
|
identity_certificate_provider_ = std::move(new_identity_provider);
|
519
666
|
}
|
520
|
-
|
667
|
+
xds_certificate_provider_->UpdateIdentityCertNameAndDistributor(
|
668
|
+
cluster_name, identity_provider_cert_name,
|
669
|
+
identity_certificate_provider_ == nullptr
|
670
|
+
? nullptr
|
671
|
+
: identity_certificate_provider_->distributor());
|
672
|
+
// Configure SAN matchers.
|
673
|
+
const std::vector<StringMatcher>& match_subject_alt_names =
|
521
674
|
cluster_data.common_tls_context.combined_validation_context
|
522
675
|
.default_validation_context.match_subject_alt_names;
|
523
|
-
|
524
|
-
|
525
|
-
// Using mTLS configuration
|
526
|
-
if (xds_certificate_provider_ != nullptr &&
|
527
|
-
xds_certificate_provider_->ProvidesRootCerts() &&
|
528
|
-
xds_certificate_provider_->ProvidesIdentityCerts()) {
|
529
|
-
xds_certificate_provider_->UpdateRootCertNameAndDistributor(
|
530
|
-
root_provider_cert_name, root_certificate_provider_->distributor());
|
531
|
-
xds_certificate_provider_->UpdateIdentityCertNameAndDistributor(
|
532
|
-
identity_provider_cert_name,
|
533
|
-
identity_certificate_provider_->distributor());
|
534
|
-
xds_certificate_provider_->UpdateSubjectAlternativeNameMatchers(
|
535
|
-
match_subject_alt_names);
|
536
|
-
} else {
|
537
|
-
// Existing xDS certificate provider does not have mTLS configuration.
|
538
|
-
// Create new certificate provider so that new subchannel connectors are
|
539
|
-
// created.
|
540
|
-
xds_certificate_provider_ = MakeRefCounted<XdsCertificateProvider>(
|
541
|
-
root_provider_cert_name, root_certificate_provider_->distributor(),
|
542
|
-
identity_provider_cert_name,
|
543
|
-
identity_certificate_provider_->distributor(),
|
544
|
-
match_subject_alt_names);
|
545
|
-
}
|
546
|
-
} else if (!root_provider_instance_name.empty()) {
|
547
|
-
// Using TLS configuration
|
548
|
-
if (xds_certificate_provider_ != nullptr &&
|
549
|
-
xds_certificate_provider_->ProvidesRootCerts() &&
|
550
|
-
!xds_certificate_provider_->ProvidesIdentityCerts()) {
|
551
|
-
xds_certificate_provider_->UpdateRootCertNameAndDistributor(
|
552
|
-
root_provider_cert_name, root_certificate_provider_->distributor());
|
553
|
-
xds_certificate_provider_->UpdateSubjectAlternativeNameMatchers(
|
554
|
-
match_subject_alt_names);
|
555
|
-
} else {
|
556
|
-
// Existing xDS certificate provider does not have TLS configuration.
|
557
|
-
// Create new certificate provider so that new subchannel connectors are
|
558
|
-
// created.
|
559
|
-
xds_certificate_provider_ = MakeRefCounted<XdsCertificateProvider>(
|
560
|
-
root_provider_cert_name, root_certificate_provider_->distributor(),
|
561
|
-
"", nullptr, match_subject_alt_names);
|
562
|
-
}
|
563
|
-
} else {
|
564
|
-
// No configuration provided.
|
565
|
-
xds_certificate_provider_ = nullptr;
|
566
|
-
}
|
676
|
+
xds_certificate_provider_->UpdateSubjectAlternativeNameMatchers(
|
677
|
+
cluster_name, match_subject_alt_names);
|
567
678
|
return GRPC_ERROR_NONE;
|
568
679
|
}
|
569
680
|
|
681
|
+
void CdsLb::CancelClusterDataWatch(absl::string_view cluster_name,
|
682
|
+
XdsClient::ClusterWatcherInterface* watcher,
|
683
|
+
bool delay_unsubscription) {
|
684
|
+
if (xds_certificate_provider_ != nullptr) {
|
685
|
+
std::string name(cluster_name);
|
686
|
+
xds_certificate_provider_->UpdateRootCertNameAndDistributor(name, "",
|
687
|
+
nullptr);
|
688
|
+
xds_certificate_provider_->UpdateIdentityCertNameAndDistributor(name, "",
|
689
|
+
nullptr);
|
690
|
+
xds_certificate_provider_->UpdateSubjectAlternativeNameMatchers(name, {});
|
691
|
+
}
|
692
|
+
xds_client_->CancelClusterDataWatch(cluster_name, watcher,
|
693
|
+
delay_unsubscription);
|
694
|
+
}
|
570
695
|
//
|
571
696
|
// factory
|
572
697
|
//
|
@@ -575,13 +700,12 @@ class CdsLbFactory : public LoadBalancingPolicyFactory {
|
|
575
700
|
public:
|
576
701
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
577
702
|
LoadBalancingPolicy::Args args) const override {
|
578
|
-
|
579
|
-
|
580
|
-
if (
|
703
|
+
RefCountedPtr<XdsClient> xds_client =
|
704
|
+
XdsClient::GetFromChannelArgs(*args.args);
|
705
|
+
if (xds_client == nullptr) {
|
581
706
|
gpr_log(GPR_ERROR,
|
582
|
-
"
|
583
|
-
|
584
|
-
GRPC_ERROR_UNREF(error);
|
707
|
+
"XdsClient not present in channel args -- cannot instantiate "
|
708
|
+
"cds LB policy");
|
585
709
|
return nullptr;
|
586
710
|
}
|
587
711
|
return MakeOrphanable<CdsLb>(std::move(xds_client), std::move(args));
|
@@ -590,7 +714,7 @@ class CdsLbFactory : public LoadBalancingPolicyFactory {
|
|
590
714
|
const char* name() const override { return kCds; }
|
591
715
|
|
592
716
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
593
|
-
const Json& json,
|
717
|
+
const Json& json, grpc_error_handle* error) const override {
|
594
718
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
595
719
|
if (json.type() == Json::Type::JSON_NULL) {
|
596
720
|
// xds was mentioned as a policy in the deprecated loadBalancingPolicy
|
@@ -600,7 +724,8 @@ class CdsLbFactory : public LoadBalancingPolicyFactory {
|
|
600
724
|
"Please use loadBalancingConfig field of service config instead.");
|
601
725
|
return nullptr;
|
602
726
|
}
|
603
|
-
std::vector<
|
727
|
+
std::vector<grpc_error_handle> error_list;
|
728
|
+
// cluster name.
|
604
729
|
std::string cluster;
|
605
730
|
auto it = json.object_value().find("cluster");
|
606
731
|
if (it == json.object_value().end()) {
|