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
@@ -35,18 +35,18 @@ class TlsChannelSecurityConnector final
|
|
35
35
|
: public grpc_channel_security_connector {
|
36
36
|
public:
|
37
37
|
// static factory method to create a TLS channel security connector.
|
38
|
-
static
|
38
|
+
static RefCountedPtr<grpc_channel_security_connector>
|
39
39
|
CreateTlsChannelSecurityConnector(
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
RefCountedPtr<grpc_channel_credentials> channel_creds,
|
41
|
+
RefCountedPtr<grpc_tls_credentials_options> options,
|
42
|
+
RefCountedPtr<grpc_call_credentials> request_metadata_creds,
|
43
43
|
const char* target_name, const char* overridden_target_name,
|
44
44
|
tsi_ssl_session_cache* ssl_session_cache);
|
45
45
|
|
46
46
|
TlsChannelSecurityConnector(
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
RefCountedPtr<grpc_channel_credentials> channel_creds,
|
48
|
+
RefCountedPtr<grpc_tls_credentials_options> options,
|
49
|
+
RefCountedPtr<grpc_call_credentials> request_metadata_creds,
|
50
50
|
const char* target_name, const char* overridden_target_name,
|
51
51
|
tsi_ssl_session_cache* ssl_session_cache);
|
52
52
|
|
@@ -54,33 +54,39 @@ class TlsChannelSecurityConnector final
|
|
54
54
|
|
55
55
|
void add_handshakers(const grpc_channel_args* args,
|
56
56
|
grpc_pollset_set* interested_parties,
|
57
|
-
|
57
|
+
HandshakeManager* handshake_mgr) override;
|
58
58
|
|
59
59
|
void check_peer(tsi_peer peer, grpc_endpoint* ep,
|
60
|
-
|
60
|
+
RefCountedPtr<grpc_auth_context>* auth_context,
|
61
61
|
grpc_closure* on_peer_checked) override;
|
62
62
|
|
63
|
+
void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
|
64
|
+
grpc_error_handle error) override {
|
65
|
+
// TODO(ZhenLian): call verifier->cancel() once the verifier is ready.
|
66
|
+
GRPC_ERROR_UNREF(error);
|
67
|
+
}
|
68
|
+
|
63
69
|
int cmp(const grpc_security_connector* other_sc) const override;
|
64
70
|
|
65
71
|
bool check_call_host(absl::string_view host, grpc_auth_context* auth_context,
|
66
72
|
grpc_closure* on_call_host_checked,
|
67
|
-
|
73
|
+
grpc_error_handle* error) override;
|
68
74
|
|
69
75
|
void cancel_check_call_host(grpc_closure* on_call_host_checked,
|
70
|
-
|
76
|
+
grpc_error_handle error) override;
|
71
77
|
|
72
78
|
tsi_ssl_client_handshaker_factory* ClientHandshakerFactoryForTesting() {
|
73
|
-
|
79
|
+
MutexLock lock(&mu_);
|
74
80
|
return client_handshaker_factory_;
|
75
81
|
};
|
76
82
|
|
77
83
|
absl::optional<absl::string_view> RootCertsForTesting() {
|
78
|
-
|
84
|
+
MutexLock lock(&mu_);
|
79
85
|
return pem_root_certs_;
|
80
86
|
}
|
81
87
|
|
82
|
-
absl::optional<
|
83
|
-
|
88
|
+
absl::optional<PemKeyCertPairList> KeyCertPairListForTesting() {
|
89
|
+
MutexLock lock(&mu_);
|
84
90
|
return pem_key_cert_pair_list_;
|
85
91
|
}
|
86
92
|
|
@@ -96,9 +102,9 @@ class TlsChannelSecurityConnector final
|
|
96
102
|
: security_connector_(security_connector) {}
|
97
103
|
void OnCertificatesChanged(
|
98
104
|
absl::optional<absl::string_view> root_certs,
|
99
|
-
absl::optional<
|
100
|
-
void OnError(
|
101
|
-
|
105
|
+
absl::optional<PemKeyCertPairList> key_cert_pairs) override;
|
106
|
+
void OnError(grpc_error_handle root_cert_error,
|
107
|
+
grpc_error_handle identity_cert_error) override;
|
102
108
|
|
103
109
|
private:
|
104
110
|
TlsChannelSecurityConnector* security_connector_ = nullptr;
|
@@ -106,7 +112,8 @@ class TlsChannelSecurityConnector final
|
|
106
112
|
|
107
113
|
// Updates |client_handshaker_factory_| when the certificates that
|
108
114
|
// |certificate_watcher_| is watching get updated.
|
109
|
-
grpc_security_status UpdateHandshakerFactoryLocked()
|
115
|
+
grpc_security_status UpdateHandshakerFactoryLocked()
|
116
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
110
117
|
|
111
118
|
// gRPC-provided callback executed by application, which servers to bring the
|
112
119
|
// control back to gRPC core.
|
@@ -114,7 +121,7 @@ class TlsChannelSecurityConnector final
|
|
114
121
|
grpc_tls_server_authorization_check_arg* arg);
|
115
122
|
|
116
123
|
// A util function to process server authorization check result.
|
117
|
-
static
|
124
|
+
static grpc_error_handle ProcessServerAuthorizationCheckResult(
|
118
125
|
grpc_tls_server_authorization_check_arg* arg);
|
119
126
|
|
120
127
|
// A util function to create a server authorization check arg instance.
|
@@ -125,57 +132,65 @@ class TlsChannelSecurityConnector final
|
|
125
132
|
static void ServerAuthorizationCheckArgDestroy(
|
126
133
|
grpc_tls_server_authorization_check_arg* arg);
|
127
134
|
|
128
|
-
|
129
|
-
grpc_core::RefCountedPtr<grpc_tls_credentials_options> options_;
|
135
|
+
RefCountedPtr<grpc_tls_credentials_options> options_;
|
130
136
|
grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
|
131
137
|
certificate_watcher_ = nullptr;
|
132
138
|
grpc_closure* on_peer_checked_ = nullptr;
|
133
139
|
std::string target_name_;
|
134
140
|
std::string overridden_target_name_;
|
135
|
-
tsi_ssl_client_handshaker_factory* client_handshaker_factory_ = nullptr;
|
136
141
|
grpc_tls_server_authorization_check_arg* check_arg_ = nullptr;
|
137
|
-
|
138
|
-
|
139
|
-
|
142
|
+
|
143
|
+
Mutex mu_;
|
144
|
+
tsi_ssl_client_handshaker_factory* client_handshaker_factory_
|
145
|
+
ABSL_GUARDED_BY(mu_) = nullptr;
|
146
|
+
tsi_ssl_session_cache* ssl_session_cache_ ABSL_GUARDED_BY(mu_) = nullptr;
|
147
|
+
absl::optional<absl::string_view> pem_root_certs_ ABSL_GUARDED_BY(mu_);
|
148
|
+
absl::optional<PemKeyCertPairList> pem_key_cert_pair_list_
|
149
|
+
ABSL_GUARDED_BY(mu_);
|
140
150
|
};
|
141
151
|
|
142
152
|
// Server security connector using TLS as transport security protocol.
|
143
153
|
class TlsServerSecurityConnector final : public grpc_server_security_connector {
|
144
154
|
public:
|
145
155
|
// static factory method to create a TLS server security connector.
|
146
|
-
static
|
156
|
+
static RefCountedPtr<grpc_server_security_connector>
|
147
157
|
CreateTlsServerSecurityConnector(
|
148
|
-
|
149
|
-
|
158
|
+
RefCountedPtr<grpc_server_credentials> server_creds,
|
159
|
+
RefCountedPtr<grpc_tls_credentials_options> options);
|
150
160
|
|
151
161
|
TlsServerSecurityConnector(
|
152
|
-
|
153
|
-
|
162
|
+
RefCountedPtr<grpc_server_credentials> server_creds,
|
163
|
+
RefCountedPtr<grpc_tls_credentials_options> options);
|
154
164
|
~TlsServerSecurityConnector() override;
|
155
165
|
|
156
166
|
void add_handshakers(const grpc_channel_args* args,
|
157
167
|
grpc_pollset_set* interested_parties,
|
158
|
-
|
168
|
+
HandshakeManager* handshake_mgr) override;
|
159
169
|
|
160
170
|
void check_peer(tsi_peer peer, grpc_endpoint* ep,
|
161
|
-
|
171
|
+
RefCountedPtr<grpc_auth_context>* auth_context,
|
162
172
|
grpc_closure* on_peer_checked) override;
|
163
173
|
|
174
|
+
void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
|
175
|
+
grpc_error_handle error) override {
|
176
|
+
// TODO(ZhenLian): call verifier->cancel() once the verifier is ready.
|
177
|
+
GRPC_ERROR_UNREF(error);
|
178
|
+
}
|
179
|
+
|
164
180
|
int cmp(const grpc_security_connector* other) const override;
|
165
181
|
|
166
182
|
tsi_ssl_server_handshaker_factory* ServerHandshakerFactoryForTesting() {
|
167
|
-
|
183
|
+
MutexLock lock(&mu_);
|
168
184
|
return server_handshaker_factory_;
|
169
185
|
};
|
170
186
|
|
171
187
|
const absl::optional<absl::string_view>& RootCertsForTesting() {
|
172
|
-
|
188
|
+
MutexLock lock(&mu_);
|
173
189
|
return pem_root_certs_;
|
174
190
|
}
|
175
191
|
|
176
|
-
const absl::optional<
|
177
|
-
|
178
|
-
grpc_core::MutexLock lock(&mu_);
|
192
|
+
const absl::optional<PemKeyCertPairList>& KeyCertPairListForTesting() {
|
193
|
+
MutexLock lock(&mu_);
|
179
194
|
return pem_key_cert_pair_list_;
|
180
195
|
}
|
181
196
|
|
@@ -191,9 +206,9 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
|
|
191
206
|
: security_connector_(security_connector) {}
|
192
207
|
void OnCertificatesChanged(
|
193
208
|
absl::optional<absl::string_view> root_certs,
|
194
|
-
absl::optional<
|
195
|
-
void OnError(
|
196
|
-
|
209
|
+
absl::optional<PemKeyCertPairList> key_cert_pairs) override;
|
210
|
+
void OnError(grpc_error_handle root_cert_error,
|
211
|
+
grpc_error_handle identity_cert_error) override;
|
197
212
|
|
198
213
|
private:
|
199
214
|
TlsServerSecurityConnector* security_connector_ = nullptr;
|
@@ -201,16 +216,19 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
|
|
201
216
|
|
202
217
|
// Updates |server_handshaker_factory_| when the certificates that
|
203
218
|
// |certificate_watcher_| is watching get updated.
|
204
|
-
grpc_security_status UpdateHandshakerFactoryLocked()
|
219
|
+
grpc_security_status UpdateHandshakerFactoryLocked()
|
220
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
205
221
|
|
206
|
-
|
207
|
-
grpc_core::RefCountedPtr<grpc_tls_credentials_options> options_;
|
222
|
+
RefCountedPtr<grpc_tls_credentials_options> options_;
|
208
223
|
grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
|
209
224
|
certificate_watcher_ = nullptr;
|
210
225
|
|
211
|
-
|
212
|
-
|
213
|
-
|
226
|
+
Mutex mu_;
|
227
|
+
tsi_ssl_server_handshaker_factory* server_handshaker_factory_
|
228
|
+
ABSL_GUARDED_BY(mu_) = nullptr;
|
229
|
+
absl::optional<absl::string_view> pem_root_certs_ ABSL_GUARDED_BY(mu_);
|
230
|
+
absl::optional<PemKeyCertPairList> pem_key_cert_pair_list_
|
231
|
+
ABSL_GUARDED_BY(mu_);
|
214
232
|
};
|
215
233
|
|
216
234
|
// ---- Functions below are exposed for testing only -----------------------
|
@@ -218,7 +236,7 @@ namespace internal {
|
|
218
236
|
|
219
237
|
// TlsCheckHostName checks if |peer_name| matches the identity information
|
220
238
|
// contained in |peer|. This is AKA hostname check.
|
221
|
-
|
239
|
+
grpc_error_handle TlsCheckHostName(const char* peer_name, const tsi_peer* peer);
|
222
240
|
|
223
241
|
} // namespace internal
|
224
242
|
|
@@ -146,7 +146,7 @@ void grpc_auth_metadata_context_reset(
|
|
146
146
|
}
|
147
147
|
}
|
148
148
|
|
149
|
-
static void add_error(
|
149
|
+
static void add_error(grpc_error_handle* combined, grpc_error_handle error) {
|
150
150
|
if (error == GRPC_ERROR_NONE) return;
|
151
151
|
if (*combined == GRPC_ERROR_NONE) {
|
152
152
|
*combined = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -155,14 +155,14 @@ static void add_error(grpc_error** combined, grpc_error* error) {
|
|
155
155
|
*combined = grpc_error_add_child(*combined, error);
|
156
156
|
}
|
157
157
|
|
158
|
-
static void on_credentials_metadata(void* arg,
|
158
|
+
static void on_credentials_metadata(void* arg, grpc_error_handle input_error) {
|
159
159
|
grpc_transport_stream_op_batch* batch =
|
160
160
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
161
161
|
grpc_call_element* elem =
|
162
162
|
static_cast<grpc_call_element*>(batch->handler_private.extra_arg);
|
163
163
|
call_data* calld = static_cast<call_data*>(elem->call_data);
|
164
164
|
grpc_auth_metadata_context_reset(&calld->auth_md_context);
|
165
|
-
|
165
|
+
grpc_error_handle error = GRPC_ERROR_REF(input_error);
|
166
166
|
if (error == GRPC_ERROR_NONE) {
|
167
167
|
GPR_ASSERT(calld->md_array.size <= MAX_CREDENTIALS_METADATA_COUNT);
|
168
168
|
GPR_ASSERT(batch->send_initial_metadata);
|
@@ -225,13 +225,14 @@ void grpc_auth_metadata_context_build(
|
|
225
225
|
gpr_free(host_and_port);
|
226
226
|
}
|
227
227
|
|
228
|
-
static void cancel_get_request_metadata(void* arg,
|
228
|
+
static void cancel_get_request_metadata(void* arg, grpc_error_handle error) {
|
229
229
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
230
230
|
call_data* calld = static_cast<call_data*>(elem->call_data);
|
231
231
|
if (error != GRPC_ERROR_NONE) {
|
232
232
|
calld->creds->cancel_get_request_metadata(&calld->md_array,
|
233
233
|
GRPC_ERROR_REF(error));
|
234
234
|
}
|
235
|
+
GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_get_request_metadata");
|
235
236
|
}
|
236
237
|
|
237
238
|
static void send_security_metadata(grpc_call_element* elem,
|
@@ -311,7 +312,7 @@ static void send_security_metadata(grpc_call_element* elem,
|
|
311
312
|
GRPC_CALL_STACK_REF(calld->owning_call, "get_request_metadata");
|
312
313
|
GRPC_CLOSURE_INIT(&calld->async_result_closure, on_credentials_metadata,
|
313
314
|
batch, grpc_schedule_on_exec_ctx);
|
314
|
-
|
315
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
315
316
|
if (calld->creds->get_request_metadata(
|
316
317
|
calld->pollent, calld->auth_md_context, &calld->md_array,
|
317
318
|
&calld->async_result_closure, &error)) {
|
@@ -320,13 +321,16 @@ static void send_security_metadata(grpc_call_element* elem,
|
|
320
321
|
GRPC_ERROR_UNREF(error);
|
321
322
|
} else {
|
322
323
|
// Async return; register cancellation closure with call combiner.
|
324
|
+
// TODO(yashykt): We would not need this ref if call combiners used
|
325
|
+
// Closure::Run() instead of ExecCtx::Run()
|
326
|
+
GRPC_CALL_STACK_REF(calld->owning_call, "cancel_get_request_metadata");
|
323
327
|
calld->call_combiner->SetNotifyOnCancel(GRPC_CLOSURE_INIT(
|
324
328
|
&calld->get_request_metadata_cancel_closure,
|
325
329
|
cancel_get_request_metadata, elem, grpc_schedule_on_exec_ctx));
|
326
330
|
}
|
327
331
|
}
|
328
332
|
|
329
|
-
static void on_host_checked(void* arg,
|
333
|
+
static void on_host_checked(void* arg, grpc_error_handle error) {
|
330
334
|
grpc_transport_stream_op_batch* batch =
|
331
335
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
332
336
|
grpc_call_element* elem =
|
@@ -348,7 +352,7 @@ static void on_host_checked(void* arg, grpc_error* error) {
|
|
348
352
|
GRPC_CALL_STACK_UNREF(calld->owning_call, "check_call_host");
|
349
353
|
}
|
350
354
|
|
351
|
-
static void cancel_check_call_host(void* arg,
|
355
|
+
static void cancel_check_call_host(void* arg, grpc_error_handle error) {
|
352
356
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
353
357
|
call_data* calld = static_cast<call_data*>(elem->call_data);
|
354
358
|
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
@@ -356,6 +360,7 @@ static void cancel_check_call_host(void* arg, grpc_error* error) {
|
|
356
360
|
chand->security_connector->cancel_check_call_host(
|
357
361
|
&calld->async_result_closure, GRPC_ERROR_REF(error));
|
358
362
|
}
|
363
|
+
GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_check_call_host");
|
359
364
|
}
|
360
365
|
|
361
366
|
static void client_auth_start_transport_stream_op_batch(
|
@@ -381,7 +386,7 @@ static void client_auth_start_transport_stream_op_batch(
|
|
381
386
|
GRPC_CLOSURE_INIT(&calld->async_result_closure, on_host_checked, batch,
|
382
387
|
grpc_schedule_on_exec_ctx);
|
383
388
|
absl::string_view call_host(grpc_core::StringViewFromSlice(calld->host));
|
384
|
-
|
389
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
385
390
|
if (chand->security_connector->check_call_host(
|
386
391
|
call_host, chand->auth_context.get(),
|
387
392
|
&calld->async_result_closure, &error)) {
|
@@ -390,6 +395,9 @@ static void client_auth_start_transport_stream_op_batch(
|
|
390
395
|
GRPC_ERROR_UNREF(error);
|
391
396
|
} else {
|
392
397
|
// Async return; register cancellation closure with call combiner.
|
398
|
+
// TODO(yashykt): We would not need this ref if call combiners used
|
399
|
+
// Closure::Run() instead of ExecCtx::Run()
|
400
|
+
GRPC_CALL_STACK_REF(calld->owning_call, "cancel_check_call_host");
|
393
401
|
calld->call_combiner->SetNotifyOnCancel(GRPC_CLOSURE_INIT(
|
394
402
|
&calld->check_call_host_cancel_closure, cancel_check_call_host,
|
395
403
|
elem, grpc_schedule_on_exec_ctx));
|
@@ -403,7 +411,7 @@ static void client_auth_start_transport_stream_op_batch(
|
|
403
411
|
}
|
404
412
|
|
405
413
|
/* Constructor for call_data */
|
406
|
-
static
|
414
|
+
static grpc_error_handle client_auth_init_call_elem(
|
407
415
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
408
416
|
new (elem->call_data) call_data(elem, *args);
|
409
417
|
return GRPC_ERROR_NONE;
|
@@ -424,7 +432,7 @@ static void client_auth_destroy_call_elem(
|
|
424
432
|
}
|
425
433
|
|
426
434
|
/* Constructor for channel_data */
|
427
|
-
static
|
435
|
+
static grpc_error_handle client_auth_init_channel_elem(
|
428
436
|
grpc_channel_element* elem, grpc_channel_element_args* args) {
|
429
437
|
/* The first and the last filters tend to be implemented differently to
|
430
438
|
handle the case that there's no 'next' filter to call on the up or down
|
@@ -43,7 +43,7 @@
|
|
43
43
|
|
44
44
|
#define STAGING_BUFFER_SIZE 8192
|
45
45
|
|
46
|
-
static void on_read(void* user_data,
|
46
|
+
static void on_read(void* user_data, grpc_error_handle error);
|
47
47
|
|
48
48
|
namespace {
|
49
49
|
struct secure_endpoint {
|
@@ -154,7 +154,7 @@ static void flush_read_staging_buffer(secure_endpoint* ep, uint8_t** cur,
|
|
154
154
|
*end = GRPC_SLICE_END_PTR(ep->read_staging_buffer);
|
155
155
|
}
|
156
156
|
|
157
|
-
static void call_read_cb(secure_endpoint* ep,
|
157
|
+
static void call_read_cb(secure_endpoint* ep, grpc_error_handle error) {
|
158
158
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_secure_endpoint)) {
|
159
159
|
size_t i;
|
160
160
|
for (i = 0; i < ep->read_buffer->count; i++) {
|
@@ -169,7 +169,7 @@ static void call_read_cb(secure_endpoint* ep, grpc_error* error) {
|
|
169
169
|
SECURE_ENDPOINT_UNREF(ep, "read");
|
170
170
|
}
|
171
171
|
|
172
|
-
static void on_read(void* user_data,
|
172
|
+
static void on_read(void* user_data, grpc_error_handle error) {
|
173
173
|
unsigned i;
|
174
174
|
uint8_t keep_looping = 0;
|
175
175
|
tsi_result result = TSI_OK;
|
@@ -373,7 +373,7 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
|
|
373
373
|
grpc_endpoint_write(ep->wrapped_ep, &ep->output_buffer, cb, arg);
|
374
374
|
}
|
375
375
|
|
376
|
-
static void endpoint_shutdown(grpc_endpoint* secure_ep,
|
376
|
+
static void endpoint_shutdown(grpc_endpoint* secure_ep, grpc_error_handle why) {
|
377
377
|
secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
|
378
378
|
grpc_endpoint_shutdown(ep->wrapped_ep, why);
|
379
379
|
}
|
@@ -51,35 +51,36 @@ class SecurityHandshaker : public Handshaker {
|
|
51
51
|
grpc_security_connector* connector,
|
52
52
|
const grpc_channel_args* args);
|
53
53
|
~SecurityHandshaker() override;
|
54
|
-
void Shutdown(
|
54
|
+
void Shutdown(grpc_error_handle why) override;
|
55
55
|
void DoHandshake(grpc_tcp_server_acceptor* acceptor,
|
56
56
|
grpc_closure* on_handshake_done,
|
57
57
|
HandshakerArgs* args) override;
|
58
58
|
const char* name() const override { return "security"; }
|
59
59
|
|
60
60
|
private:
|
61
|
-
|
62
|
-
|
61
|
+
grpc_error_handle DoHandshakerNextLocked(const unsigned char* bytes_received,
|
62
|
+
size_t bytes_received_size);
|
63
63
|
|
64
|
-
|
64
|
+
grpc_error_handle OnHandshakeNextDoneLocked(
|
65
65
|
tsi_result result, const unsigned char* bytes_to_send,
|
66
66
|
size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result);
|
67
|
-
void HandshakeFailedLocked(
|
67
|
+
void HandshakeFailedLocked(grpc_error_handle error);
|
68
68
|
void CleanupArgsForFailureLocked();
|
69
69
|
|
70
|
-
static void OnHandshakeDataReceivedFromPeerFn(void* arg,
|
71
|
-
|
72
|
-
static void
|
73
|
-
|
70
|
+
static void OnHandshakeDataReceivedFromPeerFn(void* arg,
|
71
|
+
grpc_error_handle error);
|
72
|
+
static void OnHandshakeDataSentToPeerFn(void* arg, grpc_error_handle error);
|
73
|
+
static void OnHandshakeDataReceivedFromPeerFnScheduler(
|
74
|
+
void* arg, grpc_error_handle error);
|
74
75
|
static void OnHandshakeDataSentToPeerFnScheduler(void* arg,
|
75
|
-
|
76
|
+
grpc_error_handle error);
|
76
77
|
static void OnHandshakeNextDoneGrpcWrapper(
|
77
78
|
tsi_result result, void* user_data, const unsigned char* bytes_to_send,
|
78
79
|
size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result);
|
79
|
-
static void OnPeerCheckedFn(void* arg,
|
80
|
-
void OnPeerCheckedInner(
|
80
|
+
static void OnPeerCheckedFn(void* arg, grpc_error_handle error);
|
81
|
+
void OnPeerCheckedInner(grpc_error_handle error);
|
81
82
|
size_t MoveReadBufferIntoHandshakeBuffer();
|
82
|
-
|
83
|
+
grpc_error_handle CheckPeerLocked();
|
83
84
|
|
84
85
|
// State set at creation time.
|
85
86
|
tsi_handshaker* handshaker_;
|
@@ -173,15 +174,14 @@ void SecurityHandshaker::CleanupArgsForFailureLocked() {
|
|
173
174
|
|
174
175
|
// If the handshake failed or we're shutting down, clean up and invoke the
|
175
176
|
// callback with the error.
|
176
|
-
void SecurityHandshaker::HandshakeFailedLocked(
|
177
|
+
void SecurityHandshaker::HandshakeFailedLocked(grpc_error_handle error) {
|
177
178
|
if (error == GRPC_ERROR_NONE) {
|
178
179
|
// If we were shut down after the handshake succeeded but before an
|
179
180
|
// endpoint callback was invoked, we need to generate our own error.
|
180
181
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown");
|
181
182
|
}
|
182
|
-
|
183
|
-
|
184
|
-
|
183
|
+
gpr_log(GPR_DEBUG, "Security handshake failed: %s",
|
184
|
+
grpc_error_std_string(error).c_str());
|
185
185
|
if (!is_shutdown_) {
|
186
186
|
tsi_handshaker_shutdown(handshaker_);
|
187
187
|
// TODO(ctiller): It is currently necessary to shutdown endpoints
|
@@ -225,7 +225,7 @@ MakeChannelzSecurityFromAuthContext(grpc_auth_context* auth_context) {
|
|
225
225
|
|
226
226
|
} // namespace
|
227
227
|
|
228
|
-
void SecurityHandshaker::OnPeerCheckedInner(
|
228
|
+
void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
|
229
229
|
MutexLock lock(&mu_);
|
230
230
|
if (error != GRPC_ERROR_NONE || is_shutdown_) {
|
231
231
|
HandshakeFailedLocked(error);
|
@@ -292,12 +292,12 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error* error) {
|
|
292
292
|
is_shutdown_ = true;
|
293
293
|
}
|
294
294
|
|
295
|
-
void SecurityHandshaker::OnPeerCheckedFn(void* arg,
|
295
|
+
void SecurityHandshaker::OnPeerCheckedFn(void* arg, grpc_error_handle error) {
|
296
296
|
RefCountedPtr<SecurityHandshaker>(static_cast<SecurityHandshaker*>(arg))
|
297
297
|
->OnPeerCheckedInner(GRPC_ERROR_REF(error));
|
298
298
|
}
|
299
299
|
|
300
|
-
|
300
|
+
grpc_error_handle SecurityHandshaker::CheckPeerLocked() {
|
301
301
|
tsi_peer peer;
|
302
302
|
tsi_result result =
|
303
303
|
tsi_handshaker_result_extract_peer(handshaker_result_, &peer);
|
@@ -310,10 +310,10 @@ grpc_error* SecurityHandshaker::CheckPeerLocked() {
|
|
310
310
|
return GRPC_ERROR_NONE;
|
311
311
|
}
|
312
312
|
|
313
|
-
|
313
|
+
grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
|
314
314
|
tsi_result result, const unsigned char* bytes_to_send,
|
315
315
|
size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result) {
|
316
|
-
|
316
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
317
317
|
// Handshaker was shutdown.
|
318
318
|
if (is_shutdown_) {
|
319
319
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown");
|
@@ -374,7 +374,7 @@ void SecurityHandshaker::OnHandshakeNextDoneGrpcWrapper(
|
|
374
374
|
RefCountedPtr<SecurityHandshaker> h(
|
375
375
|
static_cast<SecurityHandshaker*>(user_data));
|
376
376
|
MutexLock lock(&h->mu_);
|
377
|
-
|
377
|
+
grpc_error_handle error = h->OnHandshakeNextDoneLocked(
|
378
378
|
result, bytes_to_send, bytes_to_send_size, handshaker_result);
|
379
379
|
if (error != GRPC_ERROR_NONE) {
|
380
380
|
h->HandshakeFailedLocked(error);
|
@@ -383,7 +383,7 @@ void SecurityHandshaker::OnHandshakeNextDoneGrpcWrapper(
|
|
383
383
|
}
|
384
384
|
}
|
385
385
|
|
386
|
-
|
386
|
+
grpc_error_handle SecurityHandshaker::DoHandshakerNextLocked(
|
387
387
|
const unsigned char* bytes_received, size_t bytes_received_size) {
|
388
388
|
// Invoke TSI handshaker.
|
389
389
|
const unsigned char* bytes_to_send = nullptr;
|
@@ -406,7 +406,7 @@ grpc_error* SecurityHandshaker::DoHandshakerNextLocked(
|
|
406
406
|
// This callback might be run inline while we are still holding on to the mutex,
|
407
407
|
// so schedule OnHandshakeDataReceivedFromPeerFn on ExecCtx to avoid a deadlock.
|
408
408
|
void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler(
|
409
|
-
void* arg,
|
409
|
+
void* arg, grpc_error_handle error) {
|
410
410
|
SecurityHandshaker* h = static_cast<SecurityHandshaker*>(arg);
|
411
411
|
grpc_core::ExecCtx::Run(
|
412
412
|
DEBUG_LOCATION,
|
@@ -416,8 +416,8 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler(
|
|
416
416
|
GRPC_ERROR_REF(error));
|
417
417
|
}
|
418
418
|
|
419
|
-
void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(
|
420
|
-
|
419
|
+
void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(
|
420
|
+
void* arg, grpc_error_handle error) {
|
421
421
|
RefCountedPtr<SecurityHandshaker> h(static_cast<SecurityHandshaker*>(arg));
|
422
422
|
MutexLock lock(&h->mu_);
|
423
423
|
if (error != GRPC_ERROR_NONE || h->is_shutdown_) {
|
@@ -440,7 +440,7 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(void* arg,
|
|
440
440
|
// This callback might be run inline while we are still holding on to the mutex,
|
441
441
|
// so schedule OnHandshakeDataSentToPeerFn on ExecCtx to avoid a deadlock.
|
442
442
|
void SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler(
|
443
|
-
void* arg,
|
443
|
+
void* arg, grpc_error_handle error) {
|
444
444
|
SecurityHandshaker* h = static_cast<SecurityHandshaker*>(arg);
|
445
445
|
grpc_core::ExecCtx::Run(
|
446
446
|
DEBUG_LOCATION,
|
@@ -451,7 +451,7 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler(
|
|
451
451
|
}
|
452
452
|
|
453
453
|
void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg,
|
454
|
-
|
454
|
+
grpc_error_handle error) {
|
455
455
|
RefCountedPtr<SecurityHandshaker> h(static_cast<SecurityHandshaker*>(arg));
|
456
456
|
MutexLock lock(&h->mu_);
|
457
457
|
if (error != GRPC_ERROR_NONE || h->is_shutdown_) {
|
@@ -482,10 +482,11 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg,
|
|
482
482
|
// public handshaker API
|
483
483
|
//
|
484
484
|
|
485
|
-
void SecurityHandshaker::Shutdown(
|
485
|
+
void SecurityHandshaker::Shutdown(grpc_error_handle why) {
|
486
486
|
MutexLock lock(&mu_);
|
487
487
|
if (!is_shutdown_) {
|
488
488
|
is_shutdown_ = true;
|
489
|
+
connector_->cancel_check_peer(&on_peer_checked_, GRPC_ERROR_REF(why));
|
489
490
|
tsi_handshaker_shutdown(handshaker_);
|
490
491
|
grpc_endpoint_shutdown(args_->endpoint, GRPC_ERROR_REF(why));
|
491
492
|
CleanupArgsForFailureLocked();
|
@@ -501,7 +502,7 @@ void SecurityHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
|
|
501
502
|
args_ = args;
|
502
503
|
on_handshake_done_ = on_handshake_done;
|
503
504
|
size_t bytes_received_size = MoveReadBufferIntoHandshakeBuffer();
|
504
|
-
|
505
|
+
grpc_error_handle error =
|
505
506
|
DoHandshakerNextLocked(handshake_buffer_, bytes_received_size);
|
506
507
|
if (error != GRPC_ERROR_NONE) {
|
507
508
|
HandshakeFailedLocked(error);
|
@@ -517,7 +518,7 @@ void SecurityHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
|
|
517
518
|
class FailHandshaker : public Handshaker {
|
518
519
|
public:
|
519
520
|
const char* name() const override { return "security_fail"; }
|
520
|
-
void Shutdown(
|
521
|
+
void Shutdown(grpc_error_handle why) override { GRPC_ERROR_UNREF(why); }
|
521
522
|
void DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
|
522
523
|
grpc_closure* on_handshake_done,
|
523
524
|
HandshakerArgs* /*args*/) override {
|