grpc 1.37.1 → 1.39.0
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 +96 -59
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +48 -0
- data/include/grpc/event_engine/event_engine.h +334 -0
- data/include/grpc/event_engine/port.h +41 -0
- data/include/grpc/event_engine/slice_allocator.h +91 -0
- data/include/grpc/grpc.h +11 -4
- data/include/grpc/grpc_security.h +32 -0
- data/include/grpc/grpc_security_constants.h +15 -0
- data/include/grpc/impl/codegen/grpc_types.h +28 -13
- data/include/grpc/impl/codegen/port_platform.h +22 -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 +630 -3103
- data/src/core/ext/filters/client_channel/client_channel.h +489 -55
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +28 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +30 -29
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
- 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 +46 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- 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 +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +755 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -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 +46 -54
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +146 -155
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- 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/resolver/dns/c_ares/dns_resolver_ares.cc +24 -18
- 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_event_engine.cc +31 -0
- 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 +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
- 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_event_engine.cc +28 -0
- 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 +18 -12
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- 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 +20 -13
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -32
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- 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 +2449 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +306 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- data/src/core/ext/filters/client_channel/server_address.cc +1 -1
- 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 +17 -16
- data/src/core/ext/filters/client_channel/subchannel.h +7 -6
- 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 +25 -18
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- 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 +12 -10
- 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 +4 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +3 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +5 -4
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -120
- 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 +8 -8
- 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_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 +65 -58
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +72 -60
- 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 +348 -199
- data/src/core/ext/xds/xds_api.h +21 -12
- data/src/core/ext/xds/xds_bootstrap.cc +97 -159
- data/src/core/ext/xds/xds_bootstrap.h +19 -24
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +310 -178
- data/src/core/ext/xds/xds_client.h +41 -27
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
- 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 +16 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +16 -11
- data/src/core/lib/channel/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +10 -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 +21 -13
- data/src/core/lib/channel/channelz.h +3 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- data/src/core/lib/event_engine/endpoint_config.cc +46 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -0
- data/src/core/lib/event_engine/slice_allocator.cc +89 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -0
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +183 -0
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +11 -7
- 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 +4 -5
- 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 +3 -3
- 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_event_engine.cc +33 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +168 -61
- data/src/core/lib/iomgr/error.h +217 -106
- 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 +5 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
- data/src/core/lib/iomgr/event_engine/closure.h +33 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +194 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +243 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
- data/src/core/lib/iomgr/exec_ctx.cc +12 -4
- data/src/core/lib/iomgr/exec_ctx.h +4 -5
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
- data/src/core/lib/iomgr/executor/threadpool.h +2 -2
- 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 +2 -2
- 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 +3 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -12
- 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 +7 -7
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_uv.cc +3 -1
- data/src/core/lib/iomgr/pollset_uv.h +5 -1
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +7 -5
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +8 -4
- data/src/core/lib/iomgr/resolve_address.h +12 -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 +11 -10
- data/src/core/lib/iomgr/sockaddr.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +15 -2
- data/src/core/lib/iomgr/socket_mutator.h +26 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +24 -22
- 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 +22 -19
- 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 +78 -73
- data/src/core/lib/iomgr/tcp_posix.h +8 -0
- 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 +26 -25
- data/src/core/lib/iomgr/tcp_server_posix.cc +28 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -18
- 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 +25 -23
- 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.h +6 -1
- 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 +6 -6
- 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_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 +39 -39
- data/src/core/lib/matchers/matchers.h +28 -28
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
- data/src/core/lib/security/authorization/evaluate_args.h +91 -0
- 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 +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- 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 +15 -12
- 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 +5 -4
- 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 +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -10
- 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/jwt/json_token.cc +2 -2
- 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 -5
- 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/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_utils.cc +32 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +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 +2 -2
- 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 +22 -9
- 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 +27 -4
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
- 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 +33 -32
- data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
- 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/surface/call.cc +67 -46
- data/src/core/lib/surface/call.h +13 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +68 -69
- data/src/core/lib/surface/completion_queue.h +3 -2
- data/src/core/lib/surface/completion_queue_factory.cc +1 -2
- data/src/core/lib/surface/init.cc +1 -3
- data/src/core/lib/surface/init.h +10 -1
- data/src/core/lib/surface/lame_client.cc +11 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +28 -22
- data/src/core/lib/surface/server.h +16 -15
- 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 +21 -10
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +37 -37
- data/src/core/lib/transport/metadata_batch.h +19 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +6 -4
- data/src/core/lib/transport/transport_op_string.cc +6 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/crypt/gsec.h +6 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +11 -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/test_services_pb.rb +6 -6
- 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/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 +483 -461
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
- 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 +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
- 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 +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- 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 +52 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
- 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 +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
- 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 +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +367 -315
- 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 +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -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 +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- 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 +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +47 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -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 +20 -49
- 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/hpke.h +325 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +283 -85
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +13 -19
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +445 -152
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -1
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +66 -30
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +154 -24
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +414 -135
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- 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 +51 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +664 -702
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +65 -7
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +213 -118
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- metadata +94 -46
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -76,7 +76,7 @@ extern void (*grpc_cancel_ares_request_locked)(grpc_ares_request* request);
|
|
76
76
|
|
77
77
|
/* Initialize gRPC ares wrapper. Must be called at least once before
|
78
78
|
grpc_resolve_address_ares(). */
|
79
|
-
|
79
|
+
grpc_error_handle grpc_ares_init(void);
|
80
80
|
|
81
81
|
/* Uninitialized gRPC ares wrapper. If there was more than one previous call to
|
82
82
|
grpc_ares_init(), this function uninitializes the gRPC ares wrapper only if
|
data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#include <grpc/support/port_platform.h>
|
15
|
+
|
16
|
+
#include "src/core/lib/iomgr/port.h"
|
17
|
+
#if GRPC_ARES == 1 && defined(GRPC_USE_EVENT_ENGINE)
|
18
|
+
|
19
|
+
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
20
|
+
|
21
|
+
bool grpc_ares_query_ipv6() {
|
22
|
+
/* The libuv grpc code currently does not have the code to probe for this,
|
23
|
+
* so we assume for now that IPv6 is always available in contexts where this
|
24
|
+
* code will be used. */
|
25
|
+
return true;
|
26
|
+
}
|
27
|
+
|
28
|
+
#endif /* GRPC_ARES == 1 && defined(GRPC_USE_EVENT_ENGINE) */
|
@@ -25,8 +25,8 @@
|
|
25
25
|
|
26
26
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
27
27
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
28
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
28
29
|
#include "src/core/lib/gpr/string.h"
|
29
|
-
#include "src/core/lib/iomgr/parse_address.h"
|
30
30
|
|
31
31
|
bool grpc_ares_query_ipv6() {
|
32
32
|
/* The libuv grpc code currently does not have the code to probe for this,
|
@@ -25,8 +25,8 @@
|
|
25
25
|
|
26
26
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
27
27
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
28
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
28
29
|
#include "src/core/lib/gpr/string.h"
|
29
|
-
#include "src/core/lib/iomgr/parse_address.h"
|
30
30
|
#include "src/core/lib/iomgr/socket_windows.h"
|
31
31
|
|
32
32
|
bool grpc_ares_query_ipv6() { return grpc_ipv6_loopback_available(); }
|
@@ -48,8 +48,6 @@ namespace grpc_core {
|
|
48
48
|
|
49
49
|
namespace {
|
50
50
|
|
51
|
-
const char kDefaultPort[] = "https";
|
52
|
-
|
53
51
|
class NativeDnsResolver : public Resolver {
|
54
52
|
public:
|
55
53
|
explicit NativeDnsResolver(ResolverArgs args);
|
@@ -68,10 +66,10 @@ class NativeDnsResolver : public Resolver {
|
|
68
66
|
void MaybeStartResolvingLocked();
|
69
67
|
void StartResolvingLocked();
|
70
68
|
|
71
|
-
static void OnNextResolution(void* arg,
|
72
|
-
void OnNextResolutionLocked(
|
73
|
-
static void OnResolved(void* arg,
|
74
|
-
void OnResolvedLocked(
|
69
|
+
static void OnNextResolution(void* arg, grpc_error_handle error);
|
70
|
+
void OnNextResolutionLocked(grpc_error_handle error);
|
71
|
+
static void OnResolved(void* arg, grpc_error_handle error);
|
72
|
+
void OnResolvedLocked(grpc_error_handle error);
|
75
73
|
|
76
74
|
/// name to resolve
|
77
75
|
std::string name_to_resolve_;
|
@@ -148,14 +146,14 @@ void NativeDnsResolver::ShutdownLocked() {
|
|
148
146
|
}
|
149
147
|
}
|
150
148
|
|
151
|
-
void NativeDnsResolver::OnNextResolution(void* arg,
|
149
|
+
void NativeDnsResolver::OnNextResolution(void* arg, grpc_error_handle error) {
|
152
150
|
NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
|
153
151
|
GRPC_ERROR_REF(error); // ref owned by lambda
|
154
152
|
r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
|
155
153
|
DEBUG_LOCATION);
|
156
154
|
}
|
157
155
|
|
158
|
-
void NativeDnsResolver::OnNextResolutionLocked(
|
156
|
+
void NativeDnsResolver::OnNextResolutionLocked(grpc_error_handle error) {
|
159
157
|
have_next_resolution_timer_ = false;
|
160
158
|
if (error == GRPC_ERROR_NONE && !resolving_) {
|
161
159
|
StartResolvingLocked();
|
@@ -164,14 +162,14 @@ void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) {
|
|
164
162
|
GRPC_ERROR_UNREF(error);
|
165
163
|
}
|
166
164
|
|
167
|
-
void NativeDnsResolver::OnResolved(void* arg,
|
165
|
+
void NativeDnsResolver::OnResolved(void* arg, grpc_error_handle error) {
|
168
166
|
NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
|
169
167
|
GRPC_ERROR_REF(error); // owned by lambda
|
170
168
|
r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
|
171
169
|
DEBUG_LOCATION);
|
172
170
|
}
|
173
171
|
|
174
|
-
void NativeDnsResolver::OnResolvedLocked(
|
172
|
+
void NativeDnsResolver::OnResolvedLocked(grpc_error_handle error) {
|
175
173
|
GPR_ASSERT(resolving_);
|
176
174
|
resolving_ = false;
|
177
175
|
if (shutdown_) {
|
@@ -194,7 +192,7 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
|
|
194
192
|
backoff_.Reset();
|
195
193
|
} else {
|
196
194
|
gpr_log(GPR_INFO, "dns resolution failed (will retry): %s",
|
197
|
-
|
195
|
+
grpc_error_std_string(error).c_str());
|
198
196
|
// Return transient error.
|
199
197
|
std::string error_message =
|
200
198
|
absl::StrCat("DNS resolution failed for service: ", name_to_resolve_);
|
@@ -203,6 +201,10 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
|
|
203
201
|
&error, 1),
|
204
202
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
205
203
|
// Set up for retry.
|
204
|
+
// InvalidateNow to avoid getting stuck re-initializing this timer
|
205
|
+
// in a loop while draining the currently-held WorkSerializer.
|
206
|
+
// Also see https://github.com/grpc/grpc/issues/26079.
|
207
|
+
ExecCtx::Get()->InvalidateNow();
|
206
208
|
grpc_millis next_try = backoff_.NextAttemptTime();
|
207
209
|
grpc_millis timeout = next_try - ExecCtx::Get()->Now();
|
208
210
|
GPR_ASSERT(!have_next_resolution_timer_);
|
@@ -229,6 +231,10 @@ void NativeDnsResolver::MaybeStartResolvingLocked() {
|
|
229
231
|
// can start the next resolution.
|
230
232
|
if (have_next_resolution_timer_) return;
|
231
233
|
if (last_resolution_timestamp_ >= 0) {
|
234
|
+
// InvalidateNow to avoid getting stuck re-initializing this timer
|
235
|
+
// in a loop while draining the currently-held WorkSerializer.
|
236
|
+
// Also see https://github.com/grpc/grpc/issues/26079.
|
237
|
+
ExecCtx::Get()->InvalidateNow();
|
232
238
|
const grpc_millis earliest_next_resolution =
|
233
239
|
last_resolution_timestamp_ + min_time_between_resolutions_;
|
234
240
|
const grpc_millis ms_until_next_resolution =
|
@@ -268,7 +274,7 @@ void NativeDnsResolver::StartResolvingLocked() {
|
|
268
274
|
addresses_ = nullptr;
|
269
275
|
GRPC_CLOSURE_INIT(&on_resolved_, NativeDnsResolver::OnResolved, this,
|
270
276
|
grpc_schedule_on_exec_ctx);
|
271
|
-
grpc_resolve_address(name_to_resolve_.c_str(),
|
277
|
+
grpc_resolve_address(name_to_resolve_.c_str(), kDefaultSecurePort,
|
272
278
|
interested_parties_, &on_resolved_, &addresses_);
|
273
279
|
last_resolution_timestamp_ = grpc_core::ExecCtx::Get()->Now();
|
274
280
|
}
|
@@ -30,11 +30,11 @@
|
|
30
30
|
|
31
31
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
32
32
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
33
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
33
34
|
#include "src/core/lib/channel/channel_args.h"
|
34
35
|
#include "src/core/lib/gpr/string.h"
|
35
36
|
#include "src/core/lib/gpr/useful.h"
|
36
37
|
#include "src/core/lib/iomgr/closure.h"
|
37
|
-
#include "src/core/lib/iomgr/parse_address.h"
|
38
38
|
#include "src/core/lib/iomgr/resolve_address.h"
|
39
39
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
40
40
|
#include "src/core/lib/iomgr/work_serializer.h"
|
@@ -313,48 +313,40 @@ void FakeResolverResponseGenerator::SetFakeResolver(
|
|
313
313
|
|
314
314
|
namespace {
|
315
315
|
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
// TODO(roth): We currently deal with this ref manually. Once the
|
320
|
-
// new channel args code is converted to C++, find a way to track this ref
|
321
|
-
// in a cleaner way.
|
322
|
-
RefCountedPtr<FakeResolverResponseGenerator> copy = generator->Ref();
|
323
|
-
copy.release();
|
316
|
+
void* ResponseGeneratorChannelArgCopy(void* p) {
|
317
|
+
auto* generator = static_cast<FakeResolverResponseGenerator*>(p);
|
318
|
+
generator->Ref().release();
|
324
319
|
return p;
|
325
320
|
}
|
326
321
|
|
327
|
-
|
328
|
-
|
329
|
-
static_cast<FakeResolverResponseGenerator*>(p);
|
322
|
+
void ResponseGeneratorChannelArgDestroy(void* p) {
|
323
|
+
auto* generator = static_cast<FakeResolverResponseGenerator*>(p);
|
330
324
|
generator->Unref();
|
331
325
|
}
|
332
326
|
|
333
|
-
|
334
|
-
|
335
|
-
static const grpc_arg_pointer_vtable response_generator_arg_vtable = {
|
336
|
-
response_generator_arg_copy, response_generator_arg_destroy,
|
337
|
-
response_generator_cmp};
|
327
|
+
int ResponseGeneratorChannelArgCmp(void* a, void* b) { return GPR_ICMP(a, b); }
|
338
328
|
|
339
329
|
} // namespace
|
340
330
|
|
331
|
+
const grpc_arg_pointer_vtable
|
332
|
+
FakeResolverResponseGenerator::kChannelArgPointerVtable = {
|
333
|
+
ResponseGeneratorChannelArgCopy, ResponseGeneratorChannelArgDestroy,
|
334
|
+
ResponseGeneratorChannelArgCmp};
|
335
|
+
|
341
336
|
grpc_arg FakeResolverResponseGenerator::MakeChannelArg(
|
342
337
|
FakeResolverResponseGenerator* generator) {
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
arg.value.pointer.p = generator;
|
347
|
-
arg.value.pointer.vtable = &response_generator_arg_vtable;
|
348
|
-
return arg;
|
338
|
+
return grpc_channel_arg_pointer_create(
|
339
|
+
const_cast<char*>(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR), generator,
|
340
|
+
&kChannelArgPointerVtable);
|
349
341
|
}
|
350
342
|
|
351
343
|
RefCountedPtr<FakeResolverResponseGenerator>
|
352
344
|
FakeResolverResponseGenerator::GetFromArgs(const grpc_channel_args* args) {
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
345
|
+
auto* response_generator =
|
346
|
+
grpc_channel_args_find_pointer<FakeResolverResponseGenerator>(
|
347
|
+
args, GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR);
|
348
|
+
if (response_generator == nullptr) return nullptr;
|
349
|
+
return response_generator->Ref();
|
358
350
|
}
|
359
351
|
|
360
352
|
//
|
@@ -42,6 +42,8 @@ class FakeResolver;
|
|
42
42
|
class FakeResolverResponseGenerator
|
43
43
|
: public RefCounted<FakeResolverResponseGenerator> {
|
44
44
|
public:
|
45
|
+
static const grpc_arg_pointer_vtable kChannelArgPointerVtable;
|
46
|
+
|
45
47
|
FakeResolverResponseGenerator();
|
46
48
|
~FakeResolverResponseGenerator() override;
|
47
49
|
|
@@ -69,6 +71,7 @@ class FakeResolverResponseGenerator
|
|
69
71
|
void SetFailureOnReresolution();
|
70
72
|
|
71
73
|
// Returns a channel arg containing \a generator.
|
74
|
+
// TODO(roth): When we have time, make this a non-static method.
|
72
75
|
static grpc_arg MakeChannelArg(FakeResolverResponseGenerator* generator);
|
73
76
|
|
74
77
|
// Returns the response generator in \a args, or null if not found.
|
@@ -82,12 +85,11 @@ class FakeResolverResponseGenerator
|
|
82
85
|
|
83
86
|
// Mutex protecting the members below.
|
84
87
|
Mutex mu_;
|
85
|
-
RefCountedPtr<FakeResolver> resolver_;
|
86
|
-
Resolver::Result result_;
|
87
|
-
bool has_result_ = false;
|
88
|
+
RefCountedPtr<FakeResolver> resolver_ ABSL_GUARDED_BY(mu_);
|
89
|
+
Resolver::Result result_ ABSL_GUARDED_BY(mu_);
|
90
|
+
bool has_result_ ABSL_GUARDED_BY(mu_) = false;
|
88
91
|
};
|
89
92
|
|
90
93
|
} // namespace grpc_core
|
91
94
|
|
92
|
-
#endif
|
93
|
-
*/
|
95
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FAKE_FAKE_RESOLVER_H
|
@@ -16,6 +16,8 @@
|
|
16
16
|
|
17
17
|
#include <grpc/support/port_platform.h>
|
18
18
|
|
19
|
+
#include <random>
|
20
|
+
|
19
21
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
20
22
|
#include "src/core/ext/xds/xds_client.h"
|
21
23
|
#include "src/core/lib/gpr/env.h"
|
@@ -48,15 +50,15 @@ class GoogleCloud2ProdResolver : public Resolver {
|
|
48
50
|
void Orphan() override;
|
49
51
|
|
50
52
|
private:
|
51
|
-
static void OnHttpRequestDone(void* arg,
|
53
|
+
static void OnHttpRequestDone(void* arg, grpc_error_handle error);
|
52
54
|
|
53
55
|
// Calls OnDone() if not already called. Releases a ref.
|
54
|
-
void MaybeCallOnDone(
|
56
|
+
void MaybeCallOnDone(grpc_error_handle error);
|
55
57
|
|
56
58
|
// If error is not GRPC_ERROR_NONE, then it's not safe to look at response.
|
57
59
|
virtual void OnDone(GoogleCloud2ProdResolver* resolver,
|
58
60
|
const grpc_http_response* response,
|
59
|
-
|
61
|
+
grpc_error_handle error) = 0;
|
60
62
|
|
61
63
|
RefCountedPtr<GoogleCloud2ProdResolver> resolver_;
|
62
64
|
grpc_httpcli_context context_;
|
@@ -73,7 +75,8 @@ class GoogleCloud2ProdResolver : public Resolver {
|
|
73
75
|
|
74
76
|
private:
|
75
77
|
void OnDone(GoogleCloud2ProdResolver* resolver,
|
76
|
-
const grpc_http_response* response,
|
78
|
+
const grpc_http_response* response,
|
79
|
+
grpc_error_handle error) override;
|
77
80
|
};
|
78
81
|
|
79
82
|
// A metadata server query to get the IPv6 address.
|
@@ -84,7 +87,8 @@ class GoogleCloud2ProdResolver : public Resolver {
|
|
84
87
|
|
85
88
|
private:
|
86
89
|
void OnDone(GoogleCloud2ProdResolver* resolver,
|
87
|
-
const grpc_http_response* response,
|
90
|
+
const grpc_http_response* response,
|
91
|
+
grpc_error_handle error) override;
|
88
92
|
};
|
89
93
|
|
90
94
|
void ZoneQueryDone(std::string zone);
|
@@ -143,13 +147,13 @@ void GoogleCloud2ProdResolver::MetadataQuery::Orphan() {
|
|
143
147
|
}
|
144
148
|
|
145
149
|
void GoogleCloud2ProdResolver::MetadataQuery::OnHttpRequestDone(
|
146
|
-
void* arg,
|
150
|
+
void* arg, grpc_error_handle error) {
|
147
151
|
auto* self = static_cast<MetadataQuery*>(arg);
|
148
152
|
self->MaybeCallOnDone(GRPC_ERROR_REF(error));
|
149
153
|
}
|
150
154
|
|
151
155
|
void GoogleCloud2ProdResolver::MetadataQuery::MaybeCallOnDone(
|
152
|
-
|
156
|
+
grpc_error_handle error) {
|
153
157
|
bool expected = false;
|
154
158
|
if (!on_done_called_.CompareExchangeStrong(
|
155
159
|
&expected, true, MemoryOrder::RELAXED, MemoryOrder::RELAXED)) {
|
@@ -180,10 +184,10 @@ GoogleCloud2ProdResolver::ZoneQuery::ZoneQuery(
|
|
180
184
|
|
181
185
|
void GoogleCloud2ProdResolver::ZoneQuery::OnDone(
|
182
186
|
GoogleCloud2ProdResolver* resolver, const grpc_http_response* response,
|
183
|
-
|
187
|
+
grpc_error_handle error) {
|
184
188
|
if (error != GRPC_ERROR_NONE) {
|
185
189
|
gpr_log(GPR_ERROR, "error fetching zone from metadata server: %s",
|
186
|
-
|
190
|
+
grpc_error_std_string(error).c_str());
|
187
191
|
}
|
188
192
|
std::string zone;
|
189
193
|
if (error == GRPC_ERROR_NONE && response->status == 200) {
|
@@ -193,7 +197,7 @@ void GoogleCloud2ProdResolver::ZoneQuery::OnDone(
|
|
193
197
|
gpr_log(GPR_ERROR, "could not parse zone from metadata server: %s",
|
194
198
|
std::string(body).c_str());
|
195
199
|
} else {
|
196
|
-
zone = std::string(body.substr(i));
|
200
|
+
zone = std::string(body.substr(i + 1));
|
197
201
|
}
|
198
202
|
}
|
199
203
|
resolver->ZoneQueryDone(std::move(zone));
|
@@ -213,10 +217,10 @@ GoogleCloud2ProdResolver::IPv6Query::IPv6Query(
|
|
213
217
|
|
214
218
|
void GoogleCloud2ProdResolver::IPv6Query::OnDone(
|
215
219
|
GoogleCloud2ProdResolver* resolver, const grpc_http_response* response,
|
216
|
-
|
220
|
+
grpc_error_handle error) {
|
217
221
|
if (error != GRPC_ERROR_NONE) {
|
218
222
|
gpr_log(GPR_ERROR, "error fetching IPv6 address from metadata server: %s",
|
219
|
-
|
223
|
+
grpc_error_std_string(error).c_str());
|
220
224
|
}
|
221
225
|
resolver->IPv6QueryDone(error == GRPC_ERROR_NONE && response->status == 200);
|
222
226
|
GRPC_ERROR_UNREF(error);
|
@@ -295,8 +299,11 @@ void GoogleCloud2ProdResolver::IPv6QueryDone(bool ipv6_supported) {
|
|
295
299
|
|
296
300
|
void GoogleCloud2ProdResolver::StartXdsResolver() {
|
297
301
|
// Construct bootstrap JSON.
|
302
|
+
std::random_device rd;
|
303
|
+
std::mt19937 mt(rd());
|
304
|
+
std::uniform_int_distribution<uint64_t> dist(1, UINT64_MAX);
|
298
305
|
Json::Object node = {
|
299
|
-
{"id", "C2P"},
|
306
|
+
{"id", absl::StrCat("C2P-", dist(mt))},
|
300
307
|
};
|
301
308
|
if (!zone_->empty()) {
|
302
309
|
node["locality"] = Json::Object{
|
@@ -30,9 +30,9 @@
|
|
30
30
|
|
31
31
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
32
32
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
33
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
33
34
|
#include "src/core/lib/channel/channel_args.h"
|
34
35
|
#include "src/core/lib/gpr/string.h"
|
35
|
-
#include "src/core/lib/iomgr/parse_address.h"
|
36
36
|
#include "src/core/lib/iomgr/resolve_address.h"
|
37
37
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
38
38
|
#include "src/core/lib/slice/slice_internal.h"
|
@@ -28,6 +28,7 @@
|
|
28
28
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
29
29
|
#include "src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h"
|
30
30
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
31
|
+
#include "src/core/ext/xds/xds_channel_args.h"
|
31
32
|
#include "src/core/ext/xds/xds_client.h"
|
32
33
|
#include "src/core/ext/xds/xds_http_filters.h"
|
33
34
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -73,19 +74,23 @@ class XdsResolver : public Resolver {
|
|
73
74
|
|
74
75
|
void ShutdownLocked() override;
|
75
76
|
|
77
|
+
void ResetBackoffLocked() override {
|
78
|
+
if (xds_client_ != nullptr) xds_client_->ResetBackoff();
|
79
|
+
}
|
80
|
+
|
76
81
|
private:
|
77
82
|
class Notifier {
|
78
83
|
public:
|
79
84
|
Notifier(RefCountedPtr<XdsResolver> resolver, XdsApi::LdsUpdate update);
|
80
85
|
Notifier(RefCountedPtr<XdsResolver> resolver, XdsApi::RdsUpdate update);
|
81
|
-
Notifier(RefCountedPtr<XdsResolver> resolver,
|
86
|
+
Notifier(RefCountedPtr<XdsResolver> resolver, grpc_error_handle error);
|
82
87
|
explicit Notifier(RefCountedPtr<XdsResolver> resolver);
|
83
88
|
|
84
89
|
private:
|
85
90
|
enum Type { kLdsUpdate, kRdsUpdate, kError, kDoesNotExist };
|
86
91
|
|
87
|
-
static void RunInExecCtx(void* arg,
|
88
|
-
void RunInWorkSerializer(
|
92
|
+
static void RunInExecCtx(void* arg, grpc_error_handle error);
|
93
|
+
void RunInWorkSerializer(grpc_error_handle error);
|
89
94
|
|
90
95
|
RefCountedPtr<XdsResolver> resolver_;
|
91
96
|
grpc_closure closure_;
|
@@ -100,7 +105,9 @@ class XdsResolver : public Resolver {
|
|
100
105
|
void OnListenerChanged(XdsApi::LdsUpdate listener) override {
|
101
106
|
new Notifier(resolver_, std::move(listener));
|
102
107
|
}
|
103
|
-
void OnError(
|
108
|
+
void OnError(grpc_error_handle error) override {
|
109
|
+
new Notifier(resolver_, error);
|
110
|
+
}
|
104
111
|
void OnResourceDoesNotExist() override { new Notifier(resolver_); }
|
105
112
|
|
106
113
|
private:
|
@@ -114,7 +121,9 @@ class XdsResolver : public Resolver {
|
|
114
121
|
void OnRouteConfigChanged(XdsApi::RdsUpdate route_config) override {
|
115
122
|
new Notifier(resolver_, std::move(route_config));
|
116
123
|
}
|
117
|
-
void OnError(
|
124
|
+
void OnError(grpc_error_handle error) override {
|
125
|
+
new Notifier(resolver_, error);
|
126
|
+
}
|
118
127
|
void OnResourceDoesNotExist() override { new Notifier(resolver_); }
|
119
128
|
|
120
129
|
private:
|
@@ -122,7 +131,7 @@ class XdsResolver : public Resolver {
|
|
122
131
|
};
|
123
132
|
|
124
133
|
class ClusterState
|
125
|
-
: public RefCounted<ClusterState, PolymorphicRefCount,
|
134
|
+
: public RefCounted<ClusterState, PolymorphicRefCount, kUnrefNoDelete> {
|
126
135
|
public:
|
127
136
|
using ClusterStateMap =
|
128
137
|
std::map<std::string, std::unique_ptr<ClusterState>>;
|
@@ -140,7 +149,8 @@ class XdsResolver : public Resolver {
|
|
140
149
|
|
141
150
|
class XdsConfigSelector : public ConfigSelector {
|
142
151
|
public:
|
143
|
-
XdsConfigSelector(RefCountedPtr<XdsResolver> resolver,
|
152
|
+
XdsConfigSelector(RefCountedPtr<XdsResolver> resolver,
|
153
|
+
grpc_error_handle* error);
|
144
154
|
~XdsConfigSelector() override;
|
145
155
|
|
146
156
|
const char* name() const override { return "XdsConfigSelector"; }
|
@@ -179,7 +189,7 @@ class XdsResolver : public Resolver {
|
|
179
189
|
using RouteTable = std::vector<Route>;
|
180
190
|
|
181
191
|
void MaybeAddCluster(const std::string& name);
|
182
|
-
|
192
|
+
grpc_error_handle CreateMethodConfig(
|
183
193
|
const XdsApi::Route& route,
|
184
194
|
const XdsApi::Route::ClusterWeight* cluster_weight,
|
185
195
|
RefCountedPtr<ServiceConfig>* method_config);
|
@@ -188,15 +198,16 @@ class XdsResolver : public Resolver {
|
|
188
198
|
RouteTable route_table_;
|
189
199
|
std::map<absl::string_view, RefCountedPtr<ClusterState>> clusters_;
|
190
200
|
std::vector<const grpc_channel_filter*> filters_;
|
191
|
-
|
201
|
+
grpc_error_handle filter_error_ = GRPC_ERROR_NONE;
|
192
202
|
};
|
193
203
|
|
194
204
|
void OnListenerUpdate(XdsApi::LdsUpdate listener);
|
195
205
|
void OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update);
|
196
|
-
void OnError(
|
206
|
+
void OnError(grpc_error_handle error);
|
197
207
|
void OnResourceDoesNotExist();
|
198
208
|
|
199
|
-
|
209
|
+
grpc_error_handle CreateServiceConfig(
|
210
|
+
RefCountedPtr<ServiceConfig>* service_config);
|
200
211
|
void GenerateResult();
|
201
212
|
void MaybeRemoveUnusedClusters();
|
202
213
|
|
@@ -243,7 +254,7 @@ XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver,
|
|
243
254
|
}
|
244
255
|
|
245
256
|
XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver,
|
246
|
-
|
257
|
+
grpc_error_handle error)
|
247
258
|
: resolver_(std::move(resolver)), type_(kError) {
|
248
259
|
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
249
260
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, error);
|
@@ -255,14 +266,14 @@ XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver)
|
|
255
266
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
|
256
267
|
}
|
257
268
|
|
258
|
-
void XdsResolver::Notifier::RunInExecCtx(void* arg,
|
269
|
+
void XdsResolver::Notifier::RunInExecCtx(void* arg, grpc_error_handle error) {
|
259
270
|
Notifier* self = static_cast<Notifier*>(arg);
|
260
271
|
GRPC_ERROR_REF(error);
|
261
272
|
self->resolver_->work_serializer_->Run(
|
262
273
|
[self, error]() { self->RunInWorkSerializer(error); }, DEBUG_LOCATION);
|
263
274
|
}
|
264
275
|
|
265
|
-
void XdsResolver::Notifier::RunInWorkSerializer(
|
276
|
+
void XdsResolver::Notifier::RunInWorkSerializer(grpc_error_handle error) {
|
266
277
|
if (resolver_->xds_client_ == nullptr) {
|
267
278
|
GRPC_ERROR_UNREF(error);
|
268
279
|
delete this;
|
@@ -314,7 +325,7 @@ bool XdsResolver::XdsConfigSelector::Route::operator==(
|
|
314
325
|
//
|
315
326
|
|
316
327
|
XdsResolver::XdsConfigSelector::XdsConfigSelector(
|
317
|
-
RefCountedPtr<XdsResolver> resolver,
|
328
|
+
RefCountedPtr<XdsResolver> resolver, grpc_error_handle* error)
|
318
329
|
: resolver_(std::move(resolver)) {
|
319
330
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
|
320
331
|
gpr_log(GPR_INFO, "[xds_resolver %p] creating XdsConfigSelector %p",
|
@@ -425,7 +436,7 @@ const XdsHttpFilterImpl::FilterConfig* FindFilterConfigOverride(
|
|
425
436
|
return nullptr;
|
426
437
|
}
|
427
438
|
|
428
|
-
|
439
|
+
grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
|
429
440
|
const XdsApi::Route& route,
|
430
441
|
const XdsApi::Route::ClusterWeight* cluster_weight,
|
431
442
|
RefCountedPtr<ServiceConfig>* method_config) {
|
@@ -482,7 +493,7 @@ grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig(
|
|
482
493
|
"\n ]"));
|
483
494
|
}
|
484
495
|
// Construct service config.
|
485
|
-
|
496
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
486
497
|
if (!fields.empty()) {
|
487
498
|
std::string json = absl::StrCat(
|
488
499
|
"{\n"
|
@@ -557,6 +568,9 @@ absl::optional<uint64_t> HeaderHashHelper(
|
|
557
568
|
std::string value_buffer;
|
558
569
|
absl::optional<absl::string_view> header_value =
|
559
570
|
GetHeaderValue(initial_metadata, policy.header_name, &value_buffer);
|
571
|
+
if (!header_value.has_value()) {
|
572
|
+
return absl::nullopt;
|
573
|
+
}
|
560
574
|
if (policy.regex != nullptr) {
|
561
575
|
// If GetHeaderValue() did not already store the value in
|
562
576
|
// value_buffer, copy it there now, so we can modify it.
|
@@ -660,7 +674,12 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
660
674
|
}
|
661
675
|
if (!hash.has_value()) {
|
662
676
|
// If there is no hash, we just choose a random value as a default.
|
663
|
-
|
677
|
+
// We cannot directly use the result of rand() as the hash value,
|
678
|
+
// since it is a 32-bit number and not a 64-bit number and will
|
679
|
+
// therefore not be evenly distributed.
|
680
|
+
uint32_t upper = rand();
|
681
|
+
uint32_t lower = rand();
|
682
|
+
hash = (static_cast<uint64_t>(upper) << 32) | lower;
|
664
683
|
}
|
665
684
|
CallConfig call_config;
|
666
685
|
if (method_config != nullptr) {
|
@@ -669,8 +688,12 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
669
688
|
call_config.service_config = std::move(method_config);
|
670
689
|
}
|
671
690
|
call_config.call_attributes[kXdsClusterAttribute] = it->first;
|
672
|
-
|
673
|
-
|
691
|
+
std::string hash_string = absl::StrCat(hash.value());
|
692
|
+
char* hash_value =
|
693
|
+
static_cast<char*>(args.arena->Alloc(hash_string.size() + 1));
|
694
|
+
memcpy(hash_value, hash_string.c_str(), hash_string.size());
|
695
|
+
hash_value[hash_string.size()] = '\0';
|
696
|
+
call_config.call_attributes[kRequestRingHashAttribute] = hash_value;
|
674
697
|
call_config.on_call_committed = [resolver, cluster_state]() {
|
675
698
|
cluster_state->Unref();
|
676
699
|
ExecCtx::Run(
|
@@ -684,7 +707,7 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
684
707
|
// the data plane mutex.
|
685
708
|
DEBUG_LOCATION,
|
686
709
|
GRPC_CLOSURE_CREATE(
|
687
|
-
[](void* arg,
|
710
|
+
[](void* arg, grpc_error_handle /*error*/) {
|
688
711
|
auto* resolver = static_cast<XdsResolver*>(arg);
|
689
712
|
resolver->work_serializer_->Run(
|
690
713
|
[resolver]() {
|
@@ -706,13 +729,13 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
706
729
|
//
|
707
730
|
|
708
731
|
void XdsResolver::StartLocked() {
|
709
|
-
|
710
|
-
xds_client_ = XdsClient::GetOrCreate(&error);
|
732
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
733
|
+
xds_client_ = XdsClient::GetOrCreate(args_, &error);
|
711
734
|
if (error != GRPC_ERROR_NONE) {
|
712
735
|
gpr_log(GPR_ERROR,
|
713
736
|
"Failed to create xds client -- channel will remain in "
|
714
737
|
"TRANSIENT_FAILURE: %s",
|
715
|
-
|
738
|
+
grpc_error_std_string(error).c_str());
|
716
739
|
result_handler_->ReturnError(error);
|
717
740
|
return;
|
718
741
|
}
|
@@ -809,11 +832,12 @@ void XdsResolver::OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update) {
|
|
809
832
|
GenerateResult();
|
810
833
|
}
|
811
834
|
|
812
|
-
void XdsResolver::OnError(
|
835
|
+
void XdsResolver::OnError(grpc_error_handle error) {
|
813
836
|
gpr_log(GPR_ERROR, "[xds_resolver %p] received error from XdsClient: %s",
|
814
|
-
this,
|
837
|
+
this, grpc_error_std_string(error).c_str());
|
815
838
|
Result result;
|
816
|
-
|
839
|
+
grpc_arg new_arg = xds_client_->MakeChannelArg();
|
840
|
+
result.args = grpc_channel_args_copy_and_add(args_, &new_arg, 1);
|
817
841
|
result.service_config_error = error;
|
818
842
|
result_handler_->ReturnResult(std::move(result));
|
819
843
|
}
|
@@ -832,7 +856,7 @@ void XdsResolver::OnResourceDoesNotExist() {
|
|
832
856
|
result_handler_->ReturnResult(std::move(result));
|
833
857
|
}
|
834
858
|
|
835
|
-
|
859
|
+
grpc_error_handle XdsResolver::CreateServiceConfig(
|
836
860
|
RefCountedPtr<ServiceConfig>* service_config) {
|
837
861
|
std::vector<std::string> clusters;
|
838
862
|
for (const auto& cluster : cluster_state_map_) {
|
@@ -859,7 +883,7 @@ grpc_error* XdsResolver::CreateServiceConfig(
|
|
859
883
|
" ]\n"
|
860
884
|
"}");
|
861
885
|
std::string json = absl::StrJoin(config_parts, "");
|
862
|
-
|
886
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
863
887
|
*service_config = ServiceConfig::Create(args_, json.c_str(), &error);
|
864
888
|
return error;
|
865
889
|
}
|
@@ -868,7 +892,7 @@ void XdsResolver::GenerateResult() {
|
|
868
892
|
if (current_virtual_host_.routes.empty()) return;
|
869
893
|
// First create XdsConfigSelector, which may add new entries to the cluster
|
870
894
|
// state map, and then CreateServiceConfig for LB policies.
|
871
|
-
|
895
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
872
896
|
auto config_selector = MakeRefCounted<XdsConfigSelector>(Ref(), &error);
|
873
897
|
if (error != GRPC_ERROR_NONE) {
|
874
898
|
OnError(error);
|
@@ -884,8 +908,12 @@ void XdsResolver::GenerateResult() {
|
|
884
908
|
gpr_log(GPR_INFO, "[xds_resolver %p] generated service config: %s", this,
|
885
909
|
result.service_config->json_string().c_str());
|
886
910
|
}
|
887
|
-
grpc_arg
|
888
|
-
|
911
|
+
grpc_arg new_args[] = {
|
912
|
+
xds_client_->MakeChannelArg(),
|
913
|
+
config_selector->MakeChannelArg(),
|
914
|
+
};
|
915
|
+
result.args =
|
916
|
+
grpc_channel_args_copy_and_add(args_, new_args, GPR_ARRAY_SIZE(new_args));
|
889
917
|
result_handler_->ReturnResult(std::move(result));
|
890
918
|
}
|
891
919
|
|