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
@@ -386,24 +386,28 @@ static bool IsDigit(char c) { return c >= '0' && c <= '9'; }
|
|
386
386
|
// by GCC 4.5.x and later versions (and our locally-modified version of GCC
|
387
387
|
// 4.4.x) to indicate functions which have been cloned during optimization.
|
388
388
|
// We treat any sequence (.<alpha>+.<digit>+)+ as a function clone suffix.
|
389
|
+
// Additionally, '_' is allowed along with the alphanumeric sequence.
|
389
390
|
static bool IsFunctionCloneSuffix(const char *str) {
|
390
391
|
size_t i = 0;
|
391
392
|
while (str[i] != '\0') {
|
392
|
-
|
393
|
-
|
394
|
-
|
393
|
+
bool parsed = false;
|
394
|
+
// Consume a single [.<alpha> | _]*[.<digit>]* sequence.
|
395
|
+
if (str[i] == '.' && (IsAlpha(str[i + 1]) || str[i + 1] == '_')) {
|
396
|
+
parsed = true;
|
397
|
+
i += 2;
|
398
|
+
while (IsAlpha(str[i]) || str[i] == '_') {
|
399
|
+
++i;
|
400
|
+
}
|
395
401
|
}
|
396
|
-
i
|
397
|
-
|
398
|
-
|
402
|
+
if (str[i] == '.' && IsDigit(str[i + 1])) {
|
403
|
+
parsed = true;
|
404
|
+
i += 2;
|
405
|
+
while (IsDigit(str[i])) {
|
406
|
+
++i;
|
407
|
+
}
|
399
408
|
}
|
400
|
-
if (
|
409
|
+
if (!parsed)
|
401
410
|
return false;
|
402
|
-
}
|
403
|
-
i += 2;
|
404
|
-
while (IsDigit(str[i])) {
|
405
|
-
++i;
|
406
|
-
}
|
407
411
|
}
|
408
412
|
return true; // Consumed everything in "str".
|
409
413
|
}
|
@@ -37,8 +37,11 @@ static const unsigned char* GetKernelRtSigreturnAddress() {
|
|
37
37
|
absl::debugging_internal::VDSOSupport vdso;
|
38
38
|
if (vdso.IsPresent()) {
|
39
39
|
absl::debugging_internal::VDSOSupport::SymbolInfo symbol_info;
|
40
|
-
|
41
|
-
|
40
|
+
auto lookup = [&](int type) {
|
41
|
+
return vdso.LookupSymbol("__kernel_rt_sigreturn", "LINUX_2.6.39", type,
|
42
|
+
&symbol_info);
|
43
|
+
};
|
44
|
+
if ((!lookup(STT_FUNC) && !lookup(STT_NOTYPE)) ||
|
42
45
|
symbol_info.address == nullptr) {
|
43
46
|
// Unexpected: VDSO is present, yet the expected symbol is missing
|
44
47
|
// or null.
|
@@ -21,6 +21,8 @@
|
|
21
21
|
#ifndef ABSL_DEBUGGING_INTERNAL_STACKTRACE_CONFIG_H_
|
22
22
|
#define ABSL_DEBUGGING_INTERNAL_STACKTRACE_CONFIG_H_
|
23
23
|
|
24
|
+
#include "absl/base/config.h"
|
25
|
+
|
24
26
|
#if defined(ABSL_STACKTRACE_INL_HEADER)
|
25
27
|
#error ABSL_STACKTRACE_INL_HEADER cannot be directly set
|
26
28
|
|
@@ -29,19 +31,8 @@
|
|
29
31
|
"absl/debugging/internal/stacktrace_win32-inl.inc"
|
30
32
|
|
31
33
|
#elif defined(__APPLE__)
|
34
|
+
#ifdef ABSL_HAVE_THREAD_LOCAL
|
32
35
|
// Thread local support required for UnwindImpl.
|
33
|
-
// Notes:
|
34
|
-
// * Xcode's clang did not support `thread_local` until version 8, and
|
35
|
-
// even then not for all iOS < 9.0.
|
36
|
-
// * Xcode 9.3 started disallowing `thread_local` for 32-bit iOS simulator
|
37
|
-
// targeting iOS 9.x.
|
38
|
-
// * Xcode 10 moves the deployment target check for iOS < 9.0 to link time
|
39
|
-
// making __has_feature unreliable there.
|
40
|
-
//
|
41
|
-
// Otherwise, `__has_feature` is only supported by Clang so it has be inside
|
42
|
-
// `defined(__APPLE__)` check.
|
43
|
-
#if __has_feature(cxx_thread_local) && \
|
44
|
-
!(TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_9_0)
|
45
36
|
#define ABSL_STACKTRACE_INL_HEADER \
|
46
37
|
"absl/debugging/internal/stacktrace_generic-inl.inc"
|
47
38
|
#endif
|
@@ -131,7 +131,12 @@ static void **NextStackFrame(void **old_sp, const void *uc) {
|
|
131
131
|
const ucontext_t* signal_context =
|
132
132
|
reinterpret_cast<const ucontext_t*>(uc);
|
133
133
|
void **const sp_before_signal =
|
134
|
-
|
134
|
+
#if defined(__PPC64__)
|
135
|
+
reinterpret_cast<void **>(signal_context->uc_mcontext.gp_regs[PT_R1]);
|
136
|
+
#else
|
137
|
+
reinterpret_cast<void **>(
|
138
|
+
signal_context->uc_mcontext.uc_regs->gregs[PT_R1]);
|
139
|
+
#endif
|
135
140
|
// Check that alleged sp before signal is nonnull and is reasonably
|
136
141
|
// aligned.
|
137
142
|
if (sp_before_signal != nullptr &&
|
@@ -118,16 +118,14 @@ bool RemoveAllSymbolDecorators(void);
|
|
118
118
|
// filename != nullptr
|
119
119
|
//
|
120
120
|
// Returns true if the file was successfully registered.
|
121
|
-
bool RegisterFileMappingHint(
|
122
|
-
|
121
|
+
bool RegisterFileMappingHint(const void* start, const void* end,
|
122
|
+
uint64_t offset, const char* filename);
|
123
123
|
|
124
124
|
// Looks up the file mapping registered by RegisterFileMappingHint for an
|
125
125
|
// address range. If there is one, the file name is stored in *filename and
|
126
126
|
// *start and *end are modified to reflect the registered mapping. Returns
|
127
127
|
// whether any hint was found.
|
128
|
-
bool GetFileMappingHint(const void** start,
|
129
|
-
const void** end,
|
130
|
-
uint64_t * offset,
|
128
|
+
bool GetFileMappingHint(const void** start, const void** end, uint64_t* offset,
|
131
129
|
const char** filename);
|
132
130
|
|
133
131
|
} // namespace debugging_internal
|
@@ -77,8 +77,8 @@ bool Symbolize(const void* pc, char* out, int out_size) {
|
|
77
77
|
|
78
78
|
char tmp_buf[1024];
|
79
79
|
if (debugging_internal::Demangle(symbol.c_str(), tmp_buf, sizeof(tmp_buf))) {
|
80
|
-
|
81
|
-
if (len + 1 <= out_size) { // +1 for '\0'
|
80
|
+
size_t len = strlen(tmp_buf);
|
81
|
+
if (len + 1 <= static_cast<size_t>(out_size)) { // +1 for '\0'
|
82
82
|
assert(len < sizeof(tmp_buf));
|
83
83
|
memmove(out, tmp_buf, len + 1);
|
84
84
|
}
|
@@ -1281,7 +1281,7 @@ static bool MaybeInitializeObjFile(ObjFile *obj) {
|
|
1281
1281
|
const int phnum = obj->elf_header.e_phnum;
|
1282
1282
|
const int phentsize = obj->elf_header.e_phentsize;
|
1283
1283
|
size_t phoff = obj->elf_header.e_phoff;
|
1284
|
-
|
1284
|
+
size_t num_executable_load_segments = 0;
|
1285
1285
|
for (int j = 0; j < phnum; j++) {
|
1286
1286
|
ElfW(Phdr) phdr;
|
1287
1287
|
if (!ReadFromOffsetExact(obj->fd, &phdr, sizeof(phdr), phoff)) {
|
@@ -1342,7 +1342,7 @@ const char *Symbolizer::GetSymbol(const void *const pc) {
|
|
1342
1342
|
// Note: some binaries have multiple "rx" LOAD segments. We must
|
1343
1343
|
// find the right one.
|
1344
1344
|
ElfW(Phdr) *phdr = nullptr;
|
1345
|
-
for (
|
1345
|
+
for (size_t j = 0; j < obj->phdr.size(); j++) {
|
1346
1346
|
ElfW(Phdr) &p = obj->phdr[j];
|
1347
1347
|
if (p.p_type != PT_LOAD) {
|
1348
1348
|
// We only expect PT_LOADs. This must be PT_NULL that we didn't
|
@@ -200,10 +200,6 @@ static uint64_t Rotate(uint64_t val, int shift) {
|
|
200
200
|
|
201
201
|
static uint64_t ShiftMix(uint64_t val) { return val ^ (val >> 47); }
|
202
202
|
|
203
|
-
static uint64_t HashLen16(uint64_t u, uint64_t v) {
|
204
|
-
return Hash128to64(uint128(u, v));
|
205
|
-
}
|
206
|
-
|
207
203
|
static uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
|
208
204
|
// Murmur-inspired hashing.
|
209
205
|
uint64_t a = (u ^ v) * mul;
|
@@ -214,6 +210,11 @@ static uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
|
|
214
210
|
return b;
|
215
211
|
}
|
216
212
|
|
213
|
+
static uint64_t HashLen16(uint64_t u, uint64_t v) {
|
214
|
+
const uint64_t kMul = 0x9ddfea08eb382d69ULL;
|
215
|
+
return HashLen16(u, v, kMul);
|
216
|
+
}
|
217
|
+
|
217
218
|
static uint64_t HashLen0to16(const char *s, size_t len) {
|
218
219
|
if (len >= 8) {
|
219
220
|
uint64_t mul = k2 + len * 2;
|
@@ -253,9 +254,8 @@ static uint64_t HashLen17to32(const char *s, size_t len) {
|
|
253
254
|
|
254
255
|
// Return a 16-byte hash for 48 bytes. Quick and dirty.
|
255
256
|
// Callers do best to use "random-looking" values for a and b.
|
256
|
-
static std::pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
|
257
|
-
|
258
|
-
uint64_t a, uint64_t b) {
|
257
|
+
static std::pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
|
258
|
+
uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
|
259
259
|
a += w;
|
260
260
|
b = Rotate(b + a + z, 21);
|
261
261
|
uint64_t c = a;
|
@@ -266,8 +266,9 @@ static std::pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(uint64_t w, uint64_t
|
|
266
266
|
}
|
267
267
|
|
268
268
|
// Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
|
269
|
-
static std::pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(const char *s,
|
270
|
-
|
269
|
+
static std::pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(const char *s,
|
270
|
+
uint64_t a,
|
271
|
+
uint64_t b) {
|
271
272
|
return WeakHashLen32WithSeeds(Fetch64(s), Fetch64(s + 8), Fetch64(s + 16),
|
272
273
|
Fetch64(s + 24), a, b);
|
273
274
|
}
|
@@ -310,8 +311,10 @@ uint64_t CityHash64(const char *s, size_t len) {
|
|
310
311
|
uint64_t x = Fetch64(s + len - 40);
|
311
312
|
uint64_t y = Fetch64(s + len - 16) + Fetch64(s + len - 56);
|
312
313
|
uint64_t z = HashLen16(Fetch64(s + len - 48) + len, Fetch64(s + len - 24));
|
313
|
-
std::pair<uint64_t, uint64_t> v =
|
314
|
-
|
314
|
+
std::pair<uint64_t, uint64_t> v =
|
315
|
+
WeakHashLen32WithSeeds(s + len - 64, len, z);
|
316
|
+
std::pair<uint64_t, uint64_t> w =
|
317
|
+
WeakHashLen32WithSeeds(s + len - 32, y + k1, x);
|
315
318
|
x = x * k1 + Fetch64(s);
|
316
319
|
|
317
320
|
// Decrease len to the nearest multiple of 64, and operate on 64-byte chunks.
|
@@ -337,7 +340,7 @@ uint64_t CityHash64WithSeed(const char *s, size_t len, uint64_t seed) {
|
|
337
340
|
}
|
338
341
|
|
339
342
|
uint64_t CityHash64WithSeeds(const char *s, size_t len, uint64_t seed0,
|
340
|
-
|
343
|
+
uint64_t seed1) {
|
341
344
|
return HashLen16(CityHash64(s, len) - seed0, seed1);
|
342
345
|
}
|
343
346
|
|
@@ -56,11 +56,6 @@ namespace absl {
|
|
56
56
|
ABSL_NAMESPACE_BEGIN
|
57
57
|
namespace hash_internal {
|
58
58
|
|
59
|
-
typedef std::pair<uint64_t, uint64_t> uint128;
|
60
|
-
|
61
|
-
inline uint64_t Uint128Low64(const uint128 &x) { return x.first; }
|
62
|
-
inline uint64_t Uint128High64(const uint128 &x) { return x.second; }
|
63
|
-
|
64
59
|
// Hash function for a byte array.
|
65
60
|
uint64_t CityHash64(const char *s, size_t len);
|
66
61
|
|
@@ -71,24 +66,11 @@ uint64_t CityHash64WithSeed(const char *s, size_t len, uint64_t seed);
|
|
71
66
|
// Hash function for a byte array. For convenience, two seeds are also
|
72
67
|
// hashed into the result.
|
73
68
|
uint64_t CityHash64WithSeeds(const char *s, size_t len, uint64_t seed0,
|
74
|
-
|
69
|
+
uint64_t seed1);
|
75
70
|
|
76
71
|
// Hash function for a byte array. Most useful in 32-bit binaries.
|
77
72
|
uint32_t CityHash32(const char *s, size_t len);
|
78
73
|
|
79
|
-
// Hash 128 input bits down to 64 bits of output.
|
80
|
-
// This is intended to be a reasonably good hash function.
|
81
|
-
inline uint64_t Hash128to64(const uint128 &x) {
|
82
|
-
// Murmur-inspired hashing.
|
83
|
-
const uint64_t kMul = 0x9ddfea08eb382d69ULL;
|
84
|
-
uint64_t a = (Uint128Low64(x) ^ Uint128High64(x)) * kMul;
|
85
|
-
a ^= (a >> 47);
|
86
|
-
uint64_t b = (Uint128High64(x) ^ a) * kMul;
|
87
|
-
b ^= (b >> 47);
|
88
|
-
b *= kMul;
|
89
|
-
return b;
|
90
|
-
}
|
91
|
-
|
92
74
|
} // namespace hash_internal
|
93
75
|
ABSL_NAMESPACE_END
|
94
76
|
} // namespace absl
|
@@ -18,9 +18,9 @@ namespace absl {
|
|
18
18
|
ABSL_NAMESPACE_BEGIN
|
19
19
|
namespace hash_internal {
|
20
20
|
|
21
|
-
uint64_t
|
22
|
-
|
23
|
-
|
21
|
+
uint64_t HashState::CombineLargeContiguousImpl32(uint64_t state,
|
22
|
+
const unsigned char* first,
|
23
|
+
size_t len) {
|
24
24
|
while (len >= PiecewiseChunkSize()) {
|
25
25
|
state =
|
26
26
|
Mix(state, absl::hash_internal::CityHash32(reinterpret_cast<const char*>(first),
|
@@ -33,13 +33,11 @@ uint64_t CityHashState::CombineLargeContiguousImpl32(uint64_t state,
|
|
33
33
|
std::integral_constant<int, 4>{});
|
34
34
|
}
|
35
35
|
|
36
|
-
uint64_t
|
37
|
-
|
38
|
-
|
36
|
+
uint64_t HashState::CombineLargeContiguousImpl64(uint64_t state,
|
37
|
+
const unsigned char* first,
|
38
|
+
size_t len) {
|
39
39
|
while (len >= PiecewiseChunkSize()) {
|
40
|
-
state =
|
41
|
-
Mix(state, absl::hash_internal::CityHash64(reinterpret_cast<const char*>(first),
|
42
|
-
PiecewiseChunkSize()));
|
40
|
+
state = Mix(state, Hash64(first, PiecewiseChunkSize()));
|
43
41
|
len -= PiecewiseChunkSize();
|
44
42
|
first += PiecewiseChunkSize();
|
45
43
|
}
|
@@ -48,7 +46,24 @@ uint64_t CityHashState::CombineLargeContiguousImpl64(uint64_t state,
|
|
48
46
|
std::integral_constant<int, 8>{});
|
49
47
|
}
|
50
48
|
|
51
|
-
ABSL_CONST_INIT const void* const
|
49
|
+
ABSL_CONST_INIT const void* const HashState::kSeed = &kSeed;
|
50
|
+
|
51
|
+
// The salt array used by Wyhash. This array is NOT the mechanism used to make
|
52
|
+
// absl::Hash non-deterministic between program invocations. See `Seed()` for
|
53
|
+
// that mechanism.
|
54
|
+
//
|
55
|
+
// Any random values are fine. These values are just digits from the decimal
|
56
|
+
// part of pi.
|
57
|
+
// https://en.wikipedia.org/wiki/Nothing-up-my-sleeve_number
|
58
|
+
constexpr uint64_t kWyhashSalt[5] = {
|
59
|
+
uint64_t{0x243F6A8885A308D3}, uint64_t{0x13198A2E03707344},
|
60
|
+
uint64_t{0xA4093822299F31D0}, uint64_t{0x082EFA98EC4E6C89},
|
61
|
+
uint64_t{0x452821E638D01377},
|
62
|
+
};
|
63
|
+
|
64
|
+
uint64_t HashState::WyhashImpl(const unsigned char* data, size_t len) {
|
65
|
+
return Wyhash(data, len, Seed(), kWyhashSalt);
|
66
|
+
}
|
52
67
|
|
53
68
|
} // namespace hash_internal
|
54
69
|
ABSL_NAMESPACE_END
|
@@ -38,9 +38,11 @@
|
|
38
38
|
#include <utility>
|
39
39
|
#include <vector>
|
40
40
|
|
41
|
-
#include "absl/base/
|
41
|
+
#include "absl/base/config.h"
|
42
|
+
#include "absl/base/internal/unaligned_access.h"
|
42
43
|
#include "absl/base/port.h"
|
43
44
|
#include "absl/container/fixed_array.h"
|
45
|
+
#include "absl/hash/internal/wyhash.h"
|
44
46
|
#include "absl/meta/type_traits.h"
|
45
47
|
#include "absl/numeric/int128.h"
|
46
48
|
#include "absl/strings/string_view.h"
|
@@ -712,9 +714,8 @@ template <typename T>
|
|
712
714
|
struct is_hashable
|
713
715
|
: std::integral_constant<bool, HashSelect::template Apply<T>::value> {};
|
714
716
|
|
715
|
-
//
|
716
|
-
class ABSL_DLL
|
717
|
-
: public HashStateBase<CityHashState> {
|
717
|
+
// HashState
|
718
|
+
class ABSL_DLL HashState : public HashStateBase<HashState> {
|
718
719
|
// absl::uint128 is not an alias or a thin wrapper around the intrinsic.
|
719
720
|
// We use the intrinsic when available to improve performance.
|
720
721
|
#ifdef ABSL_HAVE_INTRINSIC_INT128
|
@@ -733,23 +734,22 @@ class ABSL_DLL CityHashState
|
|
733
734
|
|
734
735
|
public:
|
735
736
|
// Move only
|
736
|
-
|
737
|
-
|
737
|
+
HashState(HashState&&) = default;
|
738
|
+
HashState& operator=(HashState&&) = default;
|
738
739
|
|
739
|
-
//
|
740
|
+
// HashState::combine_contiguous()
|
740
741
|
//
|
741
742
|
// Fundamental base case for hash recursion: mixes the given range of bytes
|
742
743
|
// into the hash state.
|
743
|
-
static
|
744
|
-
|
745
|
-
|
746
|
-
return CityHashState(
|
744
|
+
static HashState combine_contiguous(HashState hash_state,
|
745
|
+
const unsigned char* first, size_t size) {
|
746
|
+
return HashState(
|
747
747
|
CombineContiguousImpl(hash_state.state_, first, size,
|
748
748
|
std::integral_constant<int, sizeof(size_t)>{}));
|
749
749
|
}
|
750
|
-
using
|
750
|
+
using HashState::HashStateBase::combine_contiguous;
|
751
751
|
|
752
|
-
//
|
752
|
+
// HashState::hash()
|
753
753
|
//
|
754
754
|
// For performance reasons in non-opt mode, we specialize this for
|
755
755
|
// integral types.
|
@@ -761,24 +761,24 @@ class ABSL_DLL CityHashState
|
|
761
761
|
return static_cast<size_t>(Mix(Seed(), static_cast<uint64_t>(value)));
|
762
762
|
}
|
763
763
|
|
764
|
-
// Overload of
|
764
|
+
// Overload of HashState::hash()
|
765
765
|
template <typename T, absl::enable_if_t<!IntegralFastPath<T>::value, int> = 0>
|
766
766
|
static size_t hash(const T& value) {
|
767
|
-
return static_cast<size_t>(combine(
|
767
|
+
return static_cast<size_t>(combine(HashState{}, value).state_);
|
768
768
|
}
|
769
769
|
|
770
770
|
private:
|
771
771
|
// Invoked only once for a given argument; that plus the fact that this is
|
772
772
|
// move-only ensures that there is only one non-moved-from object.
|
773
|
-
|
773
|
+
HashState() : state_(Seed()) {}
|
774
774
|
|
775
775
|
// Workaround for MSVC bug.
|
776
776
|
// We make the type copyable to fix the calling convention, even though we
|
777
777
|
// never actually copy it. Keep it private to not affect the public API of the
|
778
778
|
// type.
|
779
|
-
|
779
|
+
HashState(const HashState&) = default;
|
780
780
|
|
781
|
-
explicit
|
781
|
+
explicit HashState(uint64_t state) : state_(state) {}
|
782
782
|
|
783
783
|
// Implementation of the base case for combine_contiguous where we actually
|
784
784
|
// mix the bytes into the state.
|
@@ -791,7 +791,8 @@ class ABSL_DLL CityHashState
|
|
791
791
|
static uint64_t CombineContiguousImpl(uint64_t state,
|
792
792
|
const unsigned char* first, size_t len,
|
793
793
|
std::integral_constant<int, 8>
|
794
|
-
/* sizeof_size_t*/);
|
794
|
+
/* sizeof_size_t */);
|
795
|
+
|
795
796
|
|
796
797
|
// Slow dispatch path for calls to CombineContiguousImpl with a size argument
|
797
798
|
// larger than PiecewiseChunkSize(). Has the same effect as calling
|
@@ -804,26 +805,54 @@ class ABSL_DLL CityHashState
|
|
804
805
|
size_t len);
|
805
806
|
|
806
807
|
// Reads 9 to 16 bytes from p.
|
807
|
-
// The
|
808
|
-
// .second.
|
808
|
+
// The least significant 8 bytes are in .first, the rest (zero padded) bytes
|
809
|
+
// are in .second.
|
809
810
|
static std::pair<uint64_t, uint64_t> Read9To16(const unsigned char* p,
|
810
811
|
size_t len) {
|
811
|
-
uint64_t
|
812
|
-
|
812
|
+
uint64_t low_mem = absl::base_internal::UnalignedLoad64(p);
|
813
|
+
uint64_t high_mem = absl::base_internal::UnalignedLoad64(p + len - 8);
|
814
|
+
#ifdef ABSL_IS_LITTLE_ENDIAN
|
815
|
+
uint64_t most_significant = high_mem;
|
816
|
+
uint64_t least_significant = low_mem;
|
817
|
+
#else
|
818
|
+
uint64_t most_significant = low_mem;
|
819
|
+
uint64_t least_significant = high_mem;
|
820
|
+
#endif
|
821
|
+
return {least_significant, most_significant >> (128 - len * 8)};
|
813
822
|
}
|
814
823
|
|
815
824
|
// Reads 4 to 8 bytes from p. Zero pads to fill uint64_t.
|
816
825
|
static uint64_t Read4To8(const unsigned char* p, size_t len) {
|
817
|
-
|
818
|
-
|
819
|
-
|
826
|
+
uint32_t low_mem = absl::base_internal::UnalignedLoad32(p);
|
827
|
+
uint32_t high_mem = absl::base_internal::UnalignedLoad32(p + len - 4);
|
828
|
+
#ifdef ABSL_IS_LITTLE_ENDIAN
|
829
|
+
uint32_t most_significant = high_mem;
|
830
|
+
uint32_t least_significant = low_mem;
|
831
|
+
#else
|
832
|
+
uint32_t most_significant = low_mem;
|
833
|
+
uint32_t least_significant = high_mem;
|
834
|
+
#endif
|
835
|
+
return (static_cast<uint64_t>(most_significant) << (len - 4) * 8) |
|
836
|
+
least_significant;
|
820
837
|
}
|
821
838
|
|
822
839
|
// Reads 1 to 3 bytes from p. Zero pads to fill uint32_t.
|
823
840
|
static uint32_t Read1To3(const unsigned char* p, size_t len) {
|
824
|
-
|
825
|
-
|
826
|
-
|
841
|
+
unsigned char mem0 = p[0];
|
842
|
+
unsigned char mem1 = p[len / 2];
|
843
|
+
unsigned char mem2 = p[len - 1];
|
844
|
+
#ifdef ABSL_IS_LITTLE_ENDIAN
|
845
|
+
unsigned char significant2 = mem2;
|
846
|
+
unsigned char significant1 = mem1;
|
847
|
+
unsigned char significant0 = mem0;
|
848
|
+
#else
|
849
|
+
unsigned char significant2 = mem0;
|
850
|
+
unsigned char significant1 = mem1;
|
851
|
+
unsigned char significant0 = mem2;
|
852
|
+
#endif
|
853
|
+
return static_cast<uint32_t>(significant0 | //
|
854
|
+
(significant1 << (len / 2 * 8)) | //
|
855
|
+
(significant2 << ((len - 1) * 8)));
|
827
856
|
}
|
828
857
|
|
829
858
|
ABSL_ATTRIBUTE_ALWAYS_INLINE static uint64_t Mix(uint64_t state, uint64_t v) {
|
@@ -838,6 +867,19 @@ class ABSL_DLL CityHashState
|
|
838
867
|
return static_cast<uint64_t>(m ^ (m >> (sizeof(m) * 8 / 2)));
|
839
868
|
}
|
840
869
|
|
870
|
+
// An extern to avoid bloat on a direct call to Wyhash() with fixed values for
|
871
|
+
// both the seed and salt parameters.
|
872
|
+
static uint64_t WyhashImpl(const unsigned char* data, size_t len);
|
873
|
+
|
874
|
+
ABSL_ATTRIBUTE_ALWAYS_INLINE static uint64_t Hash64(const unsigned char* data,
|
875
|
+
size_t len) {
|
876
|
+
#ifdef ABSL_HAVE_INTRINSIC_INT128
|
877
|
+
return WyhashImpl(data, len);
|
878
|
+
#else
|
879
|
+
return absl::hash_internal::CityHash64(reinterpret_cast<const char*>(data), len);
|
880
|
+
#endif
|
881
|
+
}
|
882
|
+
|
841
883
|
// Seed()
|
842
884
|
//
|
843
885
|
// A non-deterministic seed.
|
@@ -855,15 +897,22 @@ class ABSL_DLL CityHashState
|
|
855
897
|
// On other platforms this is still going to be non-deterministic but most
|
856
898
|
// probably per-build and not per-process.
|
857
899
|
ABSL_ATTRIBUTE_ALWAYS_INLINE static uint64_t Seed() {
|
900
|
+
#if (!defined(__clang__) || __clang_major__ > 11) && \
|
901
|
+
!defined(__apple_build_version__)
|
902
|
+
return static_cast<uint64_t>(reinterpret_cast<uintptr_t>(&kSeed));
|
903
|
+
#else
|
904
|
+
// Workaround the absence of
|
905
|
+
// https://github.com/llvm/llvm-project/commit/bc15bf66dcca76cc06fe71fca35b74dc4d521021.
|
858
906
|
return static_cast<uint64_t>(reinterpret_cast<uintptr_t>(kSeed));
|
907
|
+
#endif
|
859
908
|
}
|
860
909
|
static const void* const kSeed;
|
861
910
|
|
862
911
|
uint64_t state_;
|
863
912
|
};
|
864
913
|
|
865
|
-
//
|
866
|
-
inline uint64_t
|
914
|
+
// HashState::CombineContiguousImpl()
|
915
|
+
inline uint64_t HashState::CombineContiguousImpl(
|
867
916
|
uint64_t state, const unsigned char* first, size_t len,
|
868
917
|
std::integral_constant<int, 4> /* sizeof_size_t */) {
|
869
918
|
// For large values we use CityHash, for small ones we just use a
|
@@ -885,18 +934,18 @@ inline uint64_t CityHashState::CombineContiguousImpl(
|
|
885
934
|
return Mix(state, v);
|
886
935
|
}
|
887
936
|
|
888
|
-
// Overload of
|
889
|
-
inline uint64_t
|
937
|
+
// Overload of HashState::CombineContiguousImpl()
|
938
|
+
inline uint64_t HashState::CombineContiguousImpl(
|
890
939
|
uint64_t state, const unsigned char* first, size_t len,
|
891
940
|
std::integral_constant<int, 8> /* sizeof_size_t */) {
|
892
|
-
// For large values we use
|
893
|
-
// multiplicative hash.
|
941
|
+
// For large values we use Wyhash or CityHash depending on the platform, for
|
942
|
+
// small ones we just use a multiplicative hash.
|
894
943
|
uint64_t v;
|
895
944
|
if (len > 16) {
|
896
945
|
if (ABSL_PREDICT_FALSE(len > PiecewiseChunkSize())) {
|
897
946
|
return CombineLargeContiguousImpl64(state, first, len);
|
898
947
|
}
|
899
|
-
v =
|
948
|
+
v = Hash64(first, len);
|
900
949
|
} else if (len > 8) {
|
901
950
|
auto p = Read9To16(first, len);
|
902
951
|
state = Mix(state, p.first);
|
@@ -927,7 +976,7 @@ struct PoisonedHash : private AggregateBarrier {
|
|
927
976
|
|
928
977
|
template <typename T>
|
929
978
|
struct HashImpl {
|
930
|
-
size_t operator()(const T& value) const { return
|
979
|
+
size_t operator()(const T& value) const { return HashState::hash(value); }
|
931
980
|
};
|
932
981
|
|
933
982
|
template <typename T>
|