grpc 1.37.1 → 1.38.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +64 -58
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/channel_args.h +28 -0
- data/include/grpc/event_engine/event_engine.h +336 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice_allocator.h +81 -0
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security_constants.h +14 -0
- data/include/grpc/impl/codegen/grpc_types.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +5 -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 +628 -3101
- 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 +26 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- 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/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/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 +36 -30
- 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 +84 -61
- 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.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +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_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 +17 -9
- 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 +13 -11
- 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 +43 -28
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
- data/src/core/ext/filters/client_channel/server_address.cc +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 +16 -15
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -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 +1 -1
- 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 +2 -2
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
- 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 +31 -27
- data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
- data/src/core/ext/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 +101 -93
- data/src/core/ext/xds/xds_api.h +6 -6
- 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 +3 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -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/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/slice_allocator.cc +59 -0
- data/src/core/lib/event_engine/sockaddr.cc +38 -0
- 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 +180 -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_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -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/exec_ctx.cc +4 -4
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +5 -5
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +3 -3
- data/src/core/lib/iomgr/resolve_address.h +6 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +11 -10
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
- 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 +36 -34
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
- data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +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_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/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 +9 -9
- 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/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 +14 -4
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +22 -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 +46 -45
- data/src/core/lib/surface/call.h +2 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +46 -47
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/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 +19 -8
- 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 +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/tsi/alts/crypt/gsec.h +4 -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/rb_grpc_imports.generated.h +1 -1
- 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 +477 -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 +1 -1
- 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/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/err/err.c +87 -80
- 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/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/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +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 +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -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 +45 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +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_val.c +2 -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/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
- 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/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +185 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -121
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- 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 +74 -15
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +98 -64
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- metadata +68 -45
- 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
@@ -63,7 +63,7 @@ grpc_slice GetSystemRootCerts() {
|
|
63
63
|
grpc_slice valid_bundle_slice = grpc_empty_slice();
|
64
64
|
size_t num_cert_files_ = GPR_ARRAY_SIZE(kLinuxCertFiles);
|
65
65
|
for (size_t i = 0; i < num_cert_files_; i++) {
|
66
|
-
|
66
|
+
grpc_error_handle error =
|
67
67
|
grpc_load_file(kLinuxCertFiles[i], 1, &valid_bundle_slice);
|
68
68
|
if (error == GRPC_ERROR_NONE) {
|
69
69
|
return valid_bundle_slice;
|
@@ -29,12 +29,12 @@
|
|
29
29
|
#include <grpc/support/string_util.h>
|
30
30
|
|
31
31
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
32
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
32
33
|
#include "src/core/lib/channel/channel_args.h"
|
33
34
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
34
35
|
#include "src/core/lib/iomgr/pollset.h"
|
35
36
|
#include "src/core/lib/iomgr/resolve_address.h"
|
36
37
|
#include "src/core/lib/iomgr/sockaddr.h"
|
37
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
38
38
|
#include "src/core/lib/iomgr/socket_utils.h"
|
39
39
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
40
40
|
#include "src/core/lib/security/credentials/local/local_credentials.h"
|
@@ -103,7 +103,7 @@ void local_check_peer(tsi_peer peer, grpc_endpoint* ep,
|
|
103
103
|
}
|
104
104
|
}
|
105
105
|
}
|
106
|
-
|
106
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
107
107
|
if (!is_endpoint_local) {
|
108
108
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
109
109
|
"Endpoint is neither UDS or TCP loopback address.");
|
@@ -181,10 +181,15 @@ class grpc_local_channel_security_connector final
|
|
181
181
|
creds->connect_type());
|
182
182
|
}
|
183
183
|
|
184
|
+
void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
|
185
|
+
grpc_error_handle error) override {
|
186
|
+
GRPC_ERROR_UNREF(error);
|
187
|
+
}
|
188
|
+
|
184
189
|
bool check_call_host(absl::string_view host,
|
185
190
|
grpc_auth_context* /*auth_context*/,
|
186
191
|
grpc_closure* /*on_call_host_checked*/,
|
187
|
-
|
192
|
+
grpc_error_handle* error) override {
|
188
193
|
if (host.empty() || host != target_name_) {
|
189
194
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
190
195
|
"local call host does not match target name");
|
@@ -193,7 +198,7 @@ class grpc_local_channel_security_connector final
|
|
193
198
|
}
|
194
199
|
|
195
200
|
void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/,
|
196
|
-
|
201
|
+
grpc_error_handle error) override {
|
197
202
|
GRPC_ERROR_UNREF(error);
|
198
203
|
}
|
199
204
|
|
@@ -230,6 +235,11 @@ class grpc_local_server_security_connector final
|
|
230
235
|
creds->connect_type());
|
231
236
|
}
|
232
237
|
|
238
|
+
void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
|
239
|
+
grpc_error_handle error) override {
|
240
|
+
GRPC_ERROR_UNREF(error);
|
241
|
+
}
|
242
|
+
|
233
243
|
int cmp(const grpc_security_connector* other) const override {
|
234
244
|
return server_security_connector_cmp(
|
235
245
|
static_cast<const grpc_server_security_connector*>(other));
|
@@ -55,13 +55,18 @@ class grpc_security_connector
|
|
55
55
|
url_scheme_(url_scheme) {}
|
56
56
|
~grpc_security_connector() override = default;
|
57
57
|
|
58
|
-
|
59
|
-
|
58
|
+
// Checks the peer. Callee takes ownership of the peer object.
|
59
|
+
// When done, sets *auth_context and invokes on_peer_checked.
|
60
60
|
virtual void check_peer(
|
61
61
|
tsi_peer peer, grpc_endpoint* ep,
|
62
62
|
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
|
63
63
|
grpc_closure* on_peer_checked) = 0;
|
64
64
|
|
65
|
+
// Cancels the pending check_peer() request associated with on_peer_checked.
|
66
|
+
// If there is no such request pending, this is a no-op.
|
67
|
+
virtual void cancel_check_peer(grpc_closure* on_peer_checked,
|
68
|
+
grpc_error_handle error) = 0;
|
69
|
+
|
65
70
|
/* Compares two security connectors. */
|
66
71
|
virtual int cmp(const grpc_security_connector* other) const = 0;
|
67
72
|
|
@@ -103,12 +108,12 @@ class grpc_channel_security_connector : public grpc_security_connector {
|
|
103
108
|
virtual bool check_call_host(absl::string_view host,
|
104
109
|
grpc_auth_context* auth_context,
|
105
110
|
grpc_closure* on_call_host_checked,
|
106
|
-
|
111
|
+
grpc_error_handle* error) = 0;
|
107
112
|
/// Cancels a pending asynchronous call to
|
108
113
|
/// grpc_channel_security_connector_check_call_host() with
|
109
114
|
/// \a on_call_host_checked as its callback.
|
110
115
|
virtual void cancel_check_call_host(grpc_closure* on_call_host_checked,
|
111
|
-
|
116
|
+
grpc_error_handle error) = 0;
|
112
117
|
/// Registers handshakers with \a handshake_mgr.
|
113
118
|
virtual void add_handshakers(const grpc_channel_args* args,
|
114
119
|
grpc_pollset_set* interested_parties,
|
@@ -45,10 +45,10 @@
|
|
45
45
|
#include "src/core/tsi/transport_security.h"
|
46
46
|
|
47
47
|
namespace {
|
48
|
-
|
48
|
+
grpc_error_handle ssl_check_peer(
|
49
49
|
const char* peer_name, const tsi_peer* peer,
|
50
50
|
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context) {
|
51
|
-
|
51
|
+
grpc_error_handle error = grpc_ssl_check_alpn(peer);
|
52
52
|
if (error != GRPC_ERROR_NONE) {
|
53
53
|
return error;
|
54
54
|
}
|
@@ -145,7 +145,7 @@ class grpc_ssl_channel_security_connector final
|
|
145
145
|
const char* target_name = overridden_target_name_.empty()
|
146
146
|
? target_name_.c_str()
|
147
147
|
: overridden_target_name_.c_str();
|
148
|
-
|
148
|
+
grpc_error_handle error = ssl_check_peer(target_name, &peer, auth_context);
|
149
149
|
if (error == GRPC_ERROR_NONE &&
|
150
150
|
verify_options_->verify_peer_callback != nullptr) {
|
151
151
|
const tsi_peer_property* p =
|
@@ -173,6 +173,11 @@ class grpc_ssl_channel_security_connector final
|
|
173
173
|
tsi_peer_destruct(&peer);
|
174
174
|
}
|
175
175
|
|
176
|
+
void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
|
177
|
+
grpc_error_handle error) override {
|
178
|
+
GRPC_ERROR_UNREF(error);
|
179
|
+
}
|
180
|
+
|
176
181
|
int cmp(const grpc_security_connector* other_sc) const override {
|
177
182
|
auto* other =
|
178
183
|
reinterpret_cast<const grpc_ssl_channel_security_connector*>(other_sc);
|
@@ -185,14 +190,14 @@ class grpc_ssl_channel_security_connector final
|
|
185
190
|
|
186
191
|
bool check_call_host(absl::string_view host, grpc_auth_context* auth_context,
|
187
192
|
grpc_closure* /*on_call_host_checked*/,
|
188
|
-
|
193
|
+
grpc_error_handle* error) override {
|
189
194
|
return grpc_ssl_check_call_host(host, target_name_.c_str(),
|
190
195
|
overridden_target_name_.c_str(),
|
191
196
|
auth_context, error);
|
192
197
|
}
|
193
198
|
|
194
199
|
void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/,
|
195
|
-
|
200
|
+
grpc_error_handle error) override {
|
196
201
|
GRPC_ERROR_UNREF(error);
|
197
202
|
}
|
198
203
|
|
@@ -288,11 +293,16 @@ class grpc_ssl_server_security_connector
|
|
288
293
|
void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
|
289
294
|
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
|
290
295
|
grpc_closure* on_peer_checked) override {
|
291
|
-
|
296
|
+
grpc_error_handle error = ssl_check_peer(nullptr, &peer, auth_context);
|
292
297
|
tsi_peer_destruct(&peer);
|
293
298
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
|
294
299
|
}
|
295
300
|
|
301
|
+
void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
|
302
|
+
grpc_error_handle error) override {
|
303
|
+
GRPC_ERROR_UNREF(error);
|
304
|
+
}
|
305
|
+
|
296
306
|
int cmp(const grpc_security_connector* other) const override {
|
297
307
|
return server_security_connector_cmp(
|
298
308
|
static_cast<const grpc_server_security_connector*>(other));
|
@@ -152,7 +152,7 @@ tsi_tls_version grpc_get_tsi_tls_version(grpc_tls_version tls_version) {
|
|
152
152
|
}
|
153
153
|
}
|
154
154
|
|
155
|
-
|
155
|
+
grpc_error_handle grpc_ssl_check_alpn(const tsi_peer* peer) {
|
156
156
|
#if TSI_OPENSSL_ALPN_SUPPORT
|
157
157
|
/* Check the ALPN if ALPN is supported. */
|
158
158
|
const tsi_peer_property* p =
|
@@ -169,8 +169,8 @@ grpc_error* grpc_ssl_check_alpn(const tsi_peer* peer) {
|
|
169
169
|
return GRPC_ERROR_NONE;
|
170
170
|
}
|
171
171
|
|
172
|
-
|
173
|
-
|
172
|
+
grpc_error_handle grpc_ssl_check_peer_name(absl::string_view peer_name,
|
173
|
+
const tsi_peer* peer) {
|
174
174
|
/* Check the peer name if specified. */
|
175
175
|
if (!peer_name.empty() && !grpc_ssl_host_matches_name(peer, peer_name)) {
|
176
176
|
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
@@ -184,7 +184,7 @@ bool grpc_ssl_check_call_host(absl::string_view host,
|
|
184
184
|
absl::string_view target_name,
|
185
185
|
absl::string_view overridden_target_name,
|
186
186
|
grpc_auth_context* auth_context,
|
187
|
-
|
187
|
+
grpc_error_handle* error) {
|
188
188
|
grpc_security_status status = GRPC_SECURITY_ERROR;
|
189
189
|
tsi_peer peer = grpc_shallow_peer_from_ssl_auth_context(auth_context);
|
190
190
|
if (grpc_ssl_host_matches_name(&peer, host)) status = GRPC_SECURITY_OK;
|
@@ -305,6 +305,9 @@ grpc_core::RefCountedPtr<grpc_auth_context> grpc_ssl_peer_to_auth_context(
|
|
305
305
|
grpc_auth_context_add_property(
|
306
306
|
ctx.get(), GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME,
|
307
307
|
prop->value.data, prop->value.length);
|
308
|
+
} else if (strcmp(prop->name, TSI_X509_DNS_PEER_PROPERTY) == 0) {
|
309
|
+
grpc_auth_context_add_property(ctx.get(), GRPC_PEER_DNS_PROPERTY_NAME,
|
310
|
+
prop->value.data, prop->value.length);
|
308
311
|
} else if (strcmp(prop->name, TSI_X509_URI_PEER_PROPERTY) == 0) {
|
309
312
|
uri_count++;
|
310
313
|
absl::string_view spiffe_id(prop->value.data, prop->value.length);
|
@@ -313,6 +316,12 @@ grpc_core::RefCountedPtr<grpc_auth_context> grpc_ssl_peer_to_auth_context(
|
|
313
316
|
spiffe_length = prop->value.length;
|
314
317
|
has_spiffe_id = true;
|
315
318
|
}
|
319
|
+
} else if (strcmp(prop->name, TSI_X509_EMAIL_PEER_PROPERTY) == 0) {
|
320
|
+
grpc_auth_context_add_property(ctx.get(), GRPC_PEER_EMAIL_PROPERTY_NAME,
|
321
|
+
prop->value.data, prop->value.length);
|
322
|
+
} else if (strcmp(prop->name, TSI_X509_IP_PEER_PROPERTY) == 0) {
|
323
|
+
grpc_auth_context_add_property(ctx.get(), GRPC_PEER_IP_PROPERTY_NAME,
|
324
|
+
prop->value.data, prop->value.length);
|
316
325
|
}
|
317
326
|
}
|
318
327
|
if (peer_identity_property_name != nullptr) {
|
@@ -376,9 +385,18 @@ tsi_peer grpc_shallow_peer_from_ssl_auth_context(
|
|
376
385
|
0) {
|
377
386
|
add_shallow_auth_property_to_peer(&peer, prop,
|
378
387
|
TSI_X509_PEM_CERT_CHAIN_PROPERTY);
|
388
|
+
} else if (strcmp(prop->name, GRPC_PEER_DNS_PROPERTY_NAME) == 0) {
|
389
|
+
add_shallow_auth_property_to_peer(&peer, prop,
|
390
|
+
TSI_X509_DNS_PEER_PROPERTY);
|
379
391
|
} else if (strcmp(prop->name, GRPC_PEER_SPIFFE_ID_PROPERTY_NAME) == 0) {
|
380
392
|
add_shallow_auth_property_to_peer(&peer, prop,
|
381
393
|
TSI_X509_URI_PEER_PROPERTY);
|
394
|
+
} else if (strcmp(prop->name, GRPC_PEER_EMAIL_PROPERTY_NAME) == 0) {
|
395
|
+
add_shallow_auth_property_to_peer(&peer, prop,
|
396
|
+
TSI_X509_EMAIL_PEER_PROPERTY);
|
397
|
+
} else if (strcmp(prop->name, GRPC_PEER_IP_PROPERTY_NAME) == 0) {
|
398
|
+
add_shallow_auth_property_to_peer(&peer, prop,
|
399
|
+
TSI_X509_IP_PEER_PROPERTY);
|
382
400
|
}
|
383
401
|
}
|
384
402
|
}
|
@@ -44,11 +44,11 @@
|
|
44
44
|
#define GRPC_SSL_URL_SCHEME "https"
|
45
45
|
|
46
46
|
/* Check ALPN information returned from SSL handshakes. */
|
47
|
-
|
47
|
+
grpc_error_handle grpc_ssl_check_alpn(const tsi_peer* peer);
|
48
48
|
|
49
49
|
/* Check peer name information returned from SSL handshakes. */
|
50
|
-
|
51
|
-
|
50
|
+
grpc_error_handle grpc_ssl_check_peer_name(absl::string_view peer_name,
|
51
|
+
const tsi_peer* peer);
|
52
52
|
/* Compare targer_name information extracted from SSL security connectors. */
|
53
53
|
int grpc_ssl_cmp_target_name(absl::string_view target_name,
|
54
54
|
absl::string_view other_target_name,
|
@@ -59,7 +59,7 @@ bool grpc_ssl_check_call_host(absl::string_view host,
|
|
59
59
|
absl::string_view target_name,
|
60
60
|
absl::string_view overridden_target_name,
|
61
61
|
grpc_auth_context* auth_context,
|
62
|
-
|
62
|
+
grpc_error_handle* error);
|
63
63
|
/* Return HTTP2-compliant cipher suites that gRPC accepts by default. */
|
64
64
|
const char* grpc_get_ssl_cipher_suites(void);
|
65
65
|
|
@@ -46,7 +46,7 @@ namespace grpc_core {
|
|
46
46
|
namespace {
|
47
47
|
|
48
48
|
tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair(
|
49
|
-
const
|
49
|
+
const PemKeyCertPairList& cert_pair_list) {
|
50
50
|
tsi_ssl_pem_key_cert_pair* tsi_pairs = nullptr;
|
51
51
|
size_t num_key_cert_pairs = cert_pair_list.size();
|
52
52
|
if (num_key_cert_pairs > 0) {
|
@@ -68,11 +68,11 @@ tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair(
|
|
68
68
|
} // namespace
|
69
69
|
|
70
70
|
// -------------------channel security connector-------------------
|
71
|
-
|
71
|
+
RefCountedPtr<grpc_channel_security_connector>
|
72
72
|
TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
RefCountedPtr<grpc_channel_credentials> channel_creds,
|
74
|
+
RefCountedPtr<grpc_tls_credentials_options> options,
|
75
|
+
RefCountedPtr<grpc_call_credentials> request_metadata_creds,
|
76
76
|
const char* target_name, const char* overridden_target_name,
|
77
77
|
tsi_ssl_session_cache* ssl_session_cache) {
|
78
78
|
if (channel_creds == nullptr) {
|
@@ -93,18 +93,16 @@ TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
|
|
93
93
|
"TlsChannelSecurityConnectorCreate()");
|
94
94
|
return nullptr;
|
95
95
|
}
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
overridden_target_name, ssl_session_cache);
|
101
|
-
return c;
|
96
|
+
return MakeRefCounted<TlsChannelSecurityConnector>(
|
97
|
+
std::move(channel_creds), std::move(options),
|
98
|
+
std::move(request_metadata_creds), target_name, overridden_target_name,
|
99
|
+
ssl_session_cache);
|
102
100
|
}
|
103
101
|
|
104
102
|
TlsChannelSecurityConnector::TlsChannelSecurityConnector(
|
105
|
-
|
106
|
-
|
107
|
-
|
103
|
+
RefCountedPtr<grpc_channel_credentials> channel_creds,
|
104
|
+
RefCountedPtr<grpc_tls_credentials_options> options,
|
105
|
+
RefCountedPtr<grpc_call_credentials> request_metadata_creds,
|
108
106
|
const char* target_name, const char* overridden_target_name,
|
109
107
|
tsi_ssl_session_cache* ssl_session_cache)
|
110
108
|
: grpc_channel_security_connector(GRPC_SSL_URL_SCHEME,
|
@@ -120,7 +118,7 @@ TlsChannelSecurityConnector::TlsChannelSecurityConnector(
|
|
120
118
|
check_arg_ = ServerAuthorizationCheckArgCreate(this);
|
121
119
|
absl::string_view host;
|
122
120
|
absl::string_view port;
|
123
|
-
|
121
|
+
SplitHostPort(target_name, &host, &port);
|
124
122
|
target_name_ = std::string(host);
|
125
123
|
// Create a watcher.
|
126
124
|
auto watcher_ptr = absl::make_unique<TlsChannelCertificateWatcher>(this);
|
@@ -172,8 +170,8 @@ TlsChannelSecurityConnector::~TlsChannelSecurityConnector() {
|
|
172
170
|
|
173
171
|
void TlsChannelSecurityConnector::add_handshakers(
|
174
172
|
const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
|
175
|
-
|
176
|
-
|
173
|
+
HandshakeManager* handshake_mgr) {
|
174
|
+
MutexLock lock(&mu_);
|
177
175
|
if (client_handshaker_factory_ != nullptr) {
|
178
176
|
// Instantiate TSI handshaker.
|
179
177
|
tsi_handshaker* tsi_hs = nullptr;
|
@@ -188,7 +186,7 @@ void TlsChannelSecurityConnector::add_handshakers(
|
|
188
186
|
return;
|
189
187
|
}
|
190
188
|
// Create handshakers.
|
191
|
-
handshake_mgr->Add(
|
189
|
+
handshake_mgr->Add(SecurityHandshakerCreate(tsi_hs, this, args));
|
192
190
|
return;
|
193
191
|
}
|
194
192
|
// TODO(ZhenLian): Implement the logic(delegation to
|
@@ -199,14 +197,14 @@ void TlsChannelSecurityConnector::add_handshakers(
|
|
199
197
|
|
200
198
|
void TlsChannelSecurityConnector::check_peer(
|
201
199
|
tsi_peer peer, grpc_endpoint* /*ep*/,
|
202
|
-
|
200
|
+
RefCountedPtr<grpc_auth_context>* auth_context,
|
203
201
|
grpc_closure* on_peer_checked) {
|
204
202
|
const char* target_name = overridden_target_name_.empty()
|
205
203
|
? target_name_.c_str()
|
206
204
|
: overridden_target_name_.c_str();
|
207
|
-
|
205
|
+
grpc_error_handle error = grpc_ssl_check_alpn(&peer);
|
208
206
|
if (error != GRPC_ERROR_NONE) {
|
209
|
-
|
207
|
+
ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
|
210
208
|
tsi_peer_destruct(&peer);
|
211
209
|
return;
|
212
210
|
}
|
@@ -216,7 +214,7 @@ void TlsChannelSecurityConnector::check_peer(
|
|
216
214
|
/* Do the default host name check if specifying the target name. */
|
217
215
|
error = internal::TlsCheckHostName(target_name, &peer);
|
218
216
|
if (error != GRPC_ERROR_NONE) {
|
219
|
-
|
217
|
+
ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
|
220
218
|
tsi_peer_destruct(&peer);
|
221
219
|
return;
|
222
220
|
}
|
@@ -299,7 +297,7 @@ void TlsChannelSecurityConnector::check_peer(
|
|
299
297
|
error = ProcessServerAuthorizationCheckResult(check_arg_);
|
300
298
|
}
|
301
299
|
}
|
302
|
-
|
300
|
+
ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
|
303
301
|
tsi_peer_destruct(&peer);
|
304
302
|
}
|
305
303
|
|
@@ -317,7 +315,7 @@ int TlsChannelSecurityConnector::cmp(
|
|
317
315
|
|
318
316
|
bool TlsChannelSecurityConnector::check_call_host(
|
319
317
|
absl::string_view host, grpc_auth_context* auth_context,
|
320
|
-
grpc_closure* /*on_call_host_checked*/,
|
318
|
+
grpc_closure* /*on_call_host_checked*/, grpc_error_handle* error) {
|
321
319
|
if (options_->server_verification_option() ==
|
322
320
|
GRPC_TLS_SKIP_HOSTNAME_VERIFICATION ||
|
323
321
|
options_->server_verification_option() ==
|
@@ -330,16 +328,15 @@ bool TlsChannelSecurityConnector::check_call_host(
|
|
330
328
|
}
|
331
329
|
|
332
330
|
void TlsChannelSecurityConnector::cancel_check_call_host(
|
333
|
-
grpc_closure* /*on_call_host_checked*/,
|
331
|
+
grpc_closure* /*on_call_host_checked*/, grpc_error_handle error) {
|
334
332
|
GRPC_ERROR_UNREF(error);
|
335
333
|
}
|
336
334
|
|
337
335
|
void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::
|
338
|
-
OnCertificatesChanged(
|
339
|
-
|
340
|
-
absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) {
|
336
|
+
OnCertificatesChanged(absl::optional<absl::string_view> root_certs,
|
337
|
+
absl::optional<PemKeyCertPairList> key_cert_pairs) {
|
341
338
|
GPR_ASSERT(security_connector_ != nullptr);
|
342
|
-
|
339
|
+
MutexLock lock(&security_connector_->mu_);
|
343
340
|
if (root_certs.has_value()) {
|
344
341
|
security_connector_->pem_root_certs_ = root_certs;
|
345
342
|
}
|
@@ -362,16 +359,16 @@ void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::
|
|
362
359
|
// TODO(ZhenLian): implement the logic to signal waiting handshakers once
|
363
360
|
// BlockOnInitialCredentialHandshaker is implemented.
|
364
361
|
void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::OnError(
|
365
|
-
|
362
|
+
grpc_error_handle root_cert_error, grpc_error_handle identity_cert_error) {
|
366
363
|
if (root_cert_error != GRPC_ERROR_NONE) {
|
367
364
|
gpr_log(GPR_ERROR,
|
368
365
|
"TlsChannelCertificateWatcher getting root_cert_error: %s",
|
369
|
-
|
366
|
+
grpc_error_std_string(root_cert_error).c_str());
|
370
367
|
}
|
371
368
|
if (identity_cert_error != GRPC_ERROR_NONE) {
|
372
369
|
gpr_log(GPR_ERROR,
|
373
370
|
"TlsChannelCertificateWatcher getting identity_cert_error: %s",
|
374
|
-
|
371
|
+
grpc_error_std_string(identity_cert_error).c_str());
|
375
372
|
}
|
376
373
|
GRPC_ERROR_UNREF(root_cert_error);
|
377
374
|
GRPC_ERROR_UNREF(identity_cert_error);
|
@@ -417,16 +414,17 @@ TlsChannelSecurityConnector::UpdateHandshakerFactoryLocked() {
|
|
417
414
|
void TlsChannelSecurityConnector::ServerAuthorizationCheckDone(
|
418
415
|
grpc_tls_server_authorization_check_arg* arg) {
|
419
416
|
GPR_ASSERT(arg != nullptr);
|
420
|
-
|
421
|
-
|
417
|
+
ExecCtx exec_ctx;
|
418
|
+
grpc_error_handle error = ProcessServerAuthorizationCheckResult(arg);
|
422
419
|
TlsChannelSecurityConnector* connector =
|
423
420
|
static_cast<TlsChannelSecurityConnector*>(arg->cb_user_data);
|
424
|
-
|
421
|
+
ExecCtx::Run(DEBUG_LOCATION, connector->on_peer_checked_, error);
|
425
422
|
}
|
426
423
|
|
427
|
-
|
424
|
+
grpc_error_handle
|
425
|
+
TlsChannelSecurityConnector::ProcessServerAuthorizationCheckResult(
|
428
426
|
grpc_tls_server_authorization_check_arg* arg) {
|
429
|
-
|
427
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
430
428
|
/* Server authorization check is cancelled by caller. */
|
431
429
|
if (arg->status == GRPC_STATUS_CANCELLED) {
|
432
430
|
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
@@ -491,10 +489,10 @@ void TlsChannelSecurityConnector::ServerAuthorizationCheckArgDestroy(
|
|
491
489
|
}
|
492
490
|
|
493
491
|
// -------------------server security connector-------------------
|
494
|
-
|
492
|
+
RefCountedPtr<grpc_server_security_connector>
|
495
493
|
TlsServerSecurityConnector::CreateTlsServerSecurityConnector(
|
496
|
-
|
497
|
-
|
494
|
+
RefCountedPtr<grpc_server_credentials> server_creds,
|
495
|
+
RefCountedPtr<grpc_tls_credentials_options> options) {
|
498
496
|
if (server_creds == nullptr) {
|
499
497
|
gpr_log(GPR_ERROR,
|
500
498
|
"server_creds is nullptr in "
|
@@ -507,15 +505,13 @@ TlsServerSecurityConnector::CreateTlsServerSecurityConnector(
|
|
507
505
|
"TlsServerSecurityConnectorCreate()");
|
508
506
|
return nullptr;
|
509
507
|
}
|
510
|
-
|
511
|
-
|
512
|
-
std::move(server_creds), std::move(options));
|
513
|
-
return c;
|
508
|
+
return MakeRefCounted<TlsServerSecurityConnector>(std::move(server_creds),
|
509
|
+
std::move(options));
|
514
510
|
}
|
515
511
|
|
516
512
|
TlsServerSecurityConnector::TlsServerSecurityConnector(
|
517
|
-
|
518
|
-
|
513
|
+
RefCountedPtr<grpc_server_credentials> server_creds,
|
514
|
+
RefCountedPtr<grpc_tls_credentials_options> options)
|
519
515
|
: grpc_server_security_connector(GRPC_SSL_URL_SCHEME,
|
520
516
|
std::move(server_creds)),
|
521
517
|
options_(std::move(options)) {
|
@@ -551,8 +547,8 @@ TlsServerSecurityConnector::~TlsServerSecurityConnector() {
|
|
551
547
|
|
552
548
|
void TlsServerSecurityConnector::add_handshakers(
|
553
549
|
const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
|
554
|
-
|
555
|
-
|
550
|
+
HandshakeManager* handshake_mgr) {
|
551
|
+
MutexLock lock(&mu_);
|
556
552
|
if (server_handshaker_factory_ != nullptr) {
|
557
553
|
// Instantiate TSI handshaker.
|
558
554
|
tsi_handshaker* tsi_hs = nullptr;
|
@@ -564,7 +560,7 @@ void TlsServerSecurityConnector::add_handshakers(
|
|
564
560
|
return;
|
565
561
|
}
|
566
562
|
// Create handshakers.
|
567
|
-
handshake_mgr->Add(
|
563
|
+
handshake_mgr->Add(SecurityHandshakerCreate(tsi_hs, this, args));
|
568
564
|
return;
|
569
565
|
}
|
570
566
|
// TODO(ZhenLian): Implement the logic(delegation to
|
@@ -575,13 +571,13 @@ void TlsServerSecurityConnector::add_handshakers(
|
|
575
571
|
|
576
572
|
void TlsServerSecurityConnector::check_peer(
|
577
573
|
tsi_peer peer, grpc_endpoint* /*ep*/,
|
578
|
-
|
574
|
+
RefCountedPtr<grpc_auth_context>* auth_context,
|
579
575
|
grpc_closure* on_peer_checked) {
|
580
|
-
|
576
|
+
grpc_error_handle error = grpc_ssl_check_alpn(&peer);
|
581
577
|
*auth_context =
|
582
578
|
grpc_ssl_peer_to_auth_context(&peer, GRPC_TLS_TRANSPORT_SECURITY_TYPE);
|
583
579
|
tsi_peer_destruct(&peer);
|
584
|
-
|
580
|
+
ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
|
585
581
|
}
|
586
582
|
|
587
583
|
int TlsServerSecurityConnector::cmp(
|
@@ -591,11 +587,10 @@ int TlsServerSecurityConnector::cmp(
|
|
591
587
|
}
|
592
588
|
|
593
589
|
void TlsServerSecurityConnector::TlsServerCertificateWatcher::
|
594
|
-
OnCertificatesChanged(
|
595
|
-
|
596
|
-
absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) {
|
590
|
+
OnCertificatesChanged(absl::optional<absl::string_view> root_certs,
|
591
|
+
absl::optional<PemKeyCertPairList> key_cert_pairs) {
|
597
592
|
GPR_ASSERT(security_connector_ != nullptr);
|
598
|
-
|
593
|
+
MutexLock lock(&security_connector_->mu_);
|
599
594
|
if (root_certs.has_value()) {
|
600
595
|
security_connector_->pem_root_certs_ = root_certs;
|
601
596
|
}
|
@@ -622,16 +617,16 @@ void TlsServerSecurityConnector::TlsServerCertificateWatcher::
|
|
622
617
|
// TODO(ZhenLian): implement the logic to signal waiting handshakers once
|
623
618
|
// BlockOnInitialCredentialHandshaker is implemented.
|
624
619
|
void TlsServerSecurityConnector::TlsServerCertificateWatcher::OnError(
|
625
|
-
|
620
|
+
grpc_error_handle root_cert_error, grpc_error_handle identity_cert_error) {
|
626
621
|
if (root_cert_error != GRPC_ERROR_NONE) {
|
627
622
|
gpr_log(GPR_ERROR,
|
628
623
|
"TlsServerCertificateWatcher getting root_cert_error: %s",
|
629
|
-
|
624
|
+
grpc_error_std_string(root_cert_error).c_str());
|
630
625
|
}
|
631
626
|
if (identity_cert_error != GRPC_ERROR_NONE) {
|
632
627
|
gpr_log(GPR_ERROR,
|
633
628
|
"TlsServerCertificateWatcher getting identity_cert_error: %s",
|
634
|
-
|
629
|
+
grpc_error_std_string(identity_cert_error).c_str());
|
635
630
|
}
|
636
631
|
GRPC_ERROR_UNREF(root_cert_error);
|
637
632
|
GRPC_ERROR_UNREF(identity_cert_error);
|
@@ -672,7 +667,8 @@ TlsServerSecurityConnector::UpdateHandshakerFactoryLocked() {
|
|
672
667
|
|
673
668
|
namespace internal {
|
674
669
|
|
675
|
-
|
670
|
+
grpc_error_handle TlsCheckHostName(const char* peer_name,
|
671
|
+
const tsi_peer* peer) {
|
676
672
|
/* Check the peer name if specified. */
|
677
673
|
if (peer_name != nullptr && !grpc_ssl_host_matches_name(peer, peer_name)) {
|
678
674
|
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|