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 @@ class SubchannelNode : public BaseNode {
|
|
63
63
|
private:
|
64
64
|
Atomic<grpc_connectivity_state> connectivity_state_{GRPC_CHANNEL_IDLE};
|
65
65
|
Mutex socket_mu_;
|
66
|
-
RefCountedPtr<SocketNode> child_socket_;
|
66
|
+
RefCountedPtr<SocketNode> child_socket_ ABSL_GUARDED_BY(socket_mu_);
|
67
67
|
std::string target_;
|
68
68
|
CallCountingHelper call_counter_;
|
69
69
|
ChannelTrace trace_;
|
@@ -34,6 +34,7 @@
|
|
34
34
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
35
35
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
36
36
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
37
|
+
#include "src/core/ext/filters/client_channel/retry_service_config.h"
|
37
38
|
#include "src/core/ext/filters/client_channel/retry_throttle.h"
|
38
39
|
#include "src/core/ext/filters/client_channel/service_config_parser.h"
|
39
40
|
#include "src/core/lib/surface/channel_init.h"
|
@@ -46,6 +47,7 @@ static bool append_filter(grpc_channel_stack_builder* builder, void* arg) {
|
|
46
47
|
void grpc_client_channel_init(void) {
|
47
48
|
grpc_core::ServiceConfigParser::Init();
|
48
49
|
grpc_core::internal::ClientChannelServiceConfigParser::Register();
|
50
|
+
grpc_core::internal::RetryServiceConfigParser::Register();
|
49
51
|
grpc_core::LoadBalancingPolicyRegistry::Builder::InitRegistry();
|
50
52
|
grpc_core::ResolverRegistry::Builder::InitRegistry();
|
51
53
|
grpc_core::internal::ServerRetryThrottleMap::Init();
|
@@ -54,7 +56,8 @@ void grpc_client_channel_init(void) {
|
|
54
56
|
grpc_core::GlobalSubchannelPool::Init();
|
55
57
|
grpc_channel_init_register_stage(
|
56
58
|
GRPC_CLIENT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY, append_filter,
|
57
|
-
const_cast<grpc_channel_filter*>(
|
59
|
+
const_cast<grpc_channel_filter*>(
|
60
|
+
&grpc_core::ClientChannel::kFilterVtable));
|
58
61
|
grpc_http_connect_register_handshaker_factory();
|
59
62
|
grpc_client_channel_global_init_backup_polling();
|
60
63
|
}
|
@@ -52,7 +52,7 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
52
52
|
|
53
53
|
struct CallConfig {
|
54
54
|
// Can be set to indicate the call should be failed.
|
55
|
-
|
55
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
56
56
|
// The per-method parsed configs that will be passed to
|
57
57
|
// ServiceConfigCallData.
|
58
58
|
const ServiceConfigParser::ParsedConfigVector* method_configs = nullptr;
|
@@ -66,7 +66,7 @@ class SubchannelConnector : public InternallyRefCounted<SubchannelConnector> {
|
|
66
66
|
|
67
67
|
// Cancels any in-flight connection attempt and shuts down the
|
68
68
|
// connector.
|
69
|
-
virtual void Shutdown(
|
69
|
+
virtual void Shutdown(grpc_error_handle error) = 0;
|
70
70
|
|
71
71
|
void Orphan() override {
|
72
72
|
Shutdown(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Subchannel disconnected"));
|
@@ -37,7 +37,7 @@ namespace grpc_core {
|
|
37
37
|
// DynamicFilters::Call
|
38
38
|
//
|
39
39
|
|
40
|
-
DynamicFilters::Call::Call(Args args,
|
40
|
+
DynamicFilters::Call::Call(Args args, grpc_error_handle* error)
|
41
41
|
: channel_stack_(std::move(args.channel_stack)) {
|
42
42
|
grpc_call_stack* call_stack = CALL_TO_CALL_STACK(this);
|
43
43
|
const grpc_call_element_args call_args = {
|
@@ -53,8 +53,7 @@ DynamicFilters::Call::Call(Args args, grpc_error** error)
|
|
53
53
|
*error = grpc_call_stack_init(channel_stack_->channel_stack_, 1, Destroy,
|
54
54
|
this, &call_args);
|
55
55
|
if (GPR_UNLIKELY(*error != GRPC_ERROR_NONE)) {
|
56
|
-
|
57
|
-
gpr_log(GPR_ERROR, "error: %s", error_string);
|
56
|
+
gpr_log(GPR_ERROR, "error: %s", grpc_error_std_string(*error).c_str());
|
58
57
|
return;
|
59
58
|
}
|
60
59
|
grpc_call_stack_set_pollset_or_pollset_set(call_stack, args.pollent);
|
@@ -94,7 +93,7 @@ void DynamicFilters::Call::Unref(const DebugLocation& /*location*/,
|
|
94
93
|
GRPC_CALL_STACK_UNREF(CALL_TO_CALL_STACK(this), reason);
|
95
94
|
}
|
96
95
|
|
97
|
-
void DynamicFilters::Call::Destroy(void* arg,
|
96
|
+
void DynamicFilters::Call::Destroy(void* arg, grpc_error_handle /*error*/) {
|
98
97
|
DynamicFilters::Call* self = static_cast<DynamicFilters::Call*>(arg);
|
99
98
|
// Keep some members before destroying the subchannel call.
|
100
99
|
grpc_closure* after_call_stack_destroy = self->after_call_stack_destroy_;
|
@@ -124,13 +123,13 @@ void DynamicFilters::Call::IncrementRefCount(
|
|
124
123
|
|
125
124
|
namespace {
|
126
125
|
|
127
|
-
void DestroyChannelStack(void* arg,
|
126
|
+
void DestroyChannelStack(void* arg, grpc_error_handle /*error*/) {
|
128
127
|
grpc_channel_stack* channel_stack = static_cast<grpc_channel_stack*>(arg);
|
129
128
|
grpc_channel_stack_destroy(channel_stack);
|
130
129
|
gpr_free(channel_stack);
|
131
130
|
}
|
132
131
|
|
133
|
-
std::pair<grpc_channel_stack*,
|
132
|
+
std::pair<grpc_channel_stack*, grpc_error_handle> CreateChannelStack(
|
134
133
|
const grpc_channel_args* args,
|
135
134
|
std::vector<const grpc_channel_filter*> filters) {
|
136
135
|
// Allocate memory for channel stack.
|
@@ -139,13 +138,13 @@ std::pair<grpc_channel_stack*, grpc_error*> CreateChannelStack(
|
|
139
138
|
grpc_channel_stack* channel_stack =
|
140
139
|
reinterpret_cast<grpc_channel_stack*>(gpr_zalloc(channel_stack_size));
|
141
140
|
// Initialize stack.
|
142
|
-
|
141
|
+
grpc_error_handle error = grpc_channel_stack_init(
|
143
142
|
/*initial_refs=*/1, DestroyChannelStack, channel_stack, filters.data(),
|
144
143
|
filters.size(), args, /*optional_transport=*/nullptr, "DynamicFilters",
|
145
144
|
channel_stack);
|
146
145
|
if (error != GRPC_ERROR_NONE) {
|
147
146
|
gpr_log(GPR_ERROR, "error initializing client internal stack: %s",
|
148
|
-
|
147
|
+
grpc_error_std_string(error).c_str());
|
149
148
|
grpc_channel_stack_destroy(channel_stack);
|
150
149
|
gpr_free(channel_stack);
|
151
150
|
return {nullptr, error};
|
@@ -163,7 +162,7 @@ RefCountedPtr<DynamicFilters> DynamicFilters::Create(
|
|
163
162
|
if (p.second != GRPC_ERROR_NONE) {
|
164
163
|
// Channel stack creation failed with requested filters.
|
165
164
|
// Create with lame filter instead.
|
166
|
-
|
165
|
+
grpc_error_handle error = p.second;
|
167
166
|
grpc_arg error_arg = MakeLameClientErrorArg(error);
|
168
167
|
grpc_channel_args* new_args =
|
169
168
|
grpc_channel_args_copy_and_add(args, &error_arg, 1);
|
@@ -180,7 +179,7 @@ DynamicFilters::~DynamicFilters() {
|
|
180
179
|
}
|
181
180
|
|
182
181
|
RefCountedPtr<DynamicFilters::Call> DynamicFilters::CreateCall(
|
183
|
-
DynamicFilters::Call::Args args,
|
182
|
+
DynamicFilters::Call::Args args, grpc_error_handle* error) {
|
184
183
|
size_t allocation_size = GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(Call)) +
|
185
184
|
channel_stack_->call_stack_size;
|
186
185
|
Call* call = static_cast<Call*>(args.arena->Alloc(allocation_size));
|
@@ -46,7 +46,7 @@ class DynamicFilters : public RefCounted<DynamicFilters> {
|
|
46
46
|
CallCombiner* call_combiner;
|
47
47
|
};
|
48
48
|
|
49
|
-
Call(Args args,
|
49
|
+
Call(Args args, grpc_error_handle* error);
|
50
50
|
|
51
51
|
// Continues processing a transport stream op batch.
|
52
52
|
void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch);
|
@@ -73,7 +73,7 @@ class DynamicFilters : public RefCounted<DynamicFilters> {
|
|
73
73
|
void IncrementRefCount();
|
74
74
|
void IncrementRefCount(const DebugLocation& location, const char* reason);
|
75
75
|
|
76
|
-
static void Destroy(void* arg,
|
76
|
+
static void Destroy(void* arg, grpc_error_handle error);
|
77
77
|
|
78
78
|
RefCountedPtr<DynamicFilters> channel_stack_;
|
79
79
|
grpc_closure* after_call_stack_destroy_ = nullptr;
|
@@ -88,7 +88,7 @@ class DynamicFilters : public RefCounted<DynamicFilters> {
|
|
88
88
|
|
89
89
|
~DynamicFilters() override;
|
90
90
|
|
91
|
-
RefCountedPtr<Call> CreateCall(Call::Args args,
|
91
|
+
RefCountedPtr<Call> CreateCall(Call::Args args, grpc_error_handle* error);
|
92
92
|
|
93
93
|
private:
|
94
94
|
grpc_channel_stack* channel_stack_;
|
@@ -157,7 +157,7 @@ void HealthCheckClient::StartRetryTimerLocked() {
|
|
157
157
|
grpc_timer_init(&retry_timer_, next_try, &retry_timer_callback_);
|
158
158
|
}
|
159
159
|
|
160
|
-
void HealthCheckClient::OnRetryTimer(void* arg,
|
160
|
+
void HealthCheckClient::OnRetryTimer(void* arg, grpc_error_handle error) {
|
161
161
|
HealthCheckClient* self = static_cast<HealthCheckClient*>(arg);
|
162
162
|
{
|
163
163
|
MutexLock lock(&self->mu_);
|
@@ -202,7 +202,7 @@ void EncodeRequest(const std::string& service_name,
|
|
202
202
|
|
203
203
|
// Returns true if healthy.
|
204
204
|
// If there was an error parsing the response, sets *error and returns false.
|
205
|
-
bool DecodeResponse(grpc_slice_buffer* slice_buffer,
|
205
|
+
bool DecodeResponse(grpc_slice_buffer* slice_buffer, grpc_error_handle* error) {
|
206
206
|
// If message is empty, assume unhealthy.
|
207
207
|
if (slice_buffer->length == 0) {
|
208
208
|
*error =
|
@@ -269,11 +269,8 @@ HealthCheckClient::CallState::~CallState() {
|
|
269
269
|
// Unset the call combiner cancellation closure. This has the
|
270
270
|
// effect of scheduling the previously set cancellation closure, if
|
271
271
|
// any, so that it can release any internal references it may be
|
272
|
-
// holding to the call stack.
|
273
|
-
// filters that schedule cancel notification closures on exec_ctx do not
|
274
|
-
// need to take a ref of the call stack to guarantee closure liveness.
|
272
|
+
// holding to the call stack.
|
275
273
|
call_combiner_.SetNotifyOnCancel(nullptr);
|
276
|
-
ExecCtx::Get()->Flush();
|
277
274
|
arena_->Destroy();
|
278
275
|
}
|
279
276
|
|
@@ -293,7 +290,7 @@ void HealthCheckClient::CallState::StartCall() {
|
|
293
290
|
context_,
|
294
291
|
&call_combiner_,
|
295
292
|
};
|
296
|
-
|
293
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
297
294
|
call_ = SubchannelCall::Create(std::move(args), &error).release();
|
298
295
|
// Register after-destruction callback.
|
299
296
|
GRPC_CLOSURE_INIT(&after_call_stack_destruction_, AfterCallStackDestruction,
|
@@ -304,7 +301,8 @@ void HealthCheckClient::CallState::StartCall() {
|
|
304
301
|
gpr_log(GPR_ERROR,
|
305
302
|
"HealthCheckClient %p CallState %p: error creating health "
|
306
303
|
"checking call on subchannel (%s); will retry",
|
307
|
-
health_check_client_.get(), this,
|
304
|
+
health_check_client_.get(), this,
|
305
|
+
grpc_error_std_string(error).c_str());
|
308
306
|
GRPC_ERROR_UNREF(error);
|
309
307
|
CallEndedLocked(/*retry=*/true);
|
310
308
|
return;
|
@@ -381,7 +379,7 @@ void HealthCheckClient::CallState::StartCall() {
|
|
381
379
|
}
|
382
380
|
|
383
381
|
void HealthCheckClient::CallState::StartBatchInCallCombiner(
|
384
|
-
void* arg,
|
382
|
+
void* arg, grpc_error_handle /*error*/) {
|
385
383
|
grpc_transport_stream_op_batch* batch =
|
386
384
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
387
385
|
SubchannelCall* call =
|
@@ -399,14 +397,14 @@ void HealthCheckClient::CallState::StartBatch(
|
|
399
397
|
}
|
400
398
|
|
401
399
|
void HealthCheckClient::CallState::AfterCallStackDestruction(
|
402
|
-
void* arg,
|
400
|
+
void* arg, grpc_error_handle /*error*/) {
|
403
401
|
HealthCheckClient::CallState* self =
|
404
402
|
static_cast<HealthCheckClient::CallState*>(arg);
|
405
403
|
delete self;
|
406
404
|
}
|
407
405
|
|
408
|
-
void HealthCheckClient::CallState::OnCancelComplete(
|
409
|
-
|
406
|
+
void HealthCheckClient::CallState::OnCancelComplete(
|
407
|
+
void* arg, grpc_error_handle /*error*/) {
|
410
408
|
HealthCheckClient::CallState* self =
|
411
409
|
static_cast<HealthCheckClient::CallState*>(arg);
|
412
410
|
GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "health_cancel");
|
@@ -414,7 +412,7 @@ void HealthCheckClient::CallState::OnCancelComplete(void* arg,
|
|
414
412
|
}
|
415
413
|
|
416
414
|
void HealthCheckClient::CallState::StartCancel(void* arg,
|
417
|
-
|
415
|
+
grpc_error_handle /*error*/) {
|
418
416
|
HealthCheckClient::CallState* self =
|
419
417
|
static_cast<HealthCheckClient::CallState*>(arg);
|
420
418
|
auto* batch = grpc_make_transport_stream_op(
|
@@ -437,7 +435,7 @@ void HealthCheckClient::CallState::Cancel() {
|
|
437
435
|
}
|
438
436
|
|
439
437
|
void HealthCheckClient::CallState::OnComplete(void* arg,
|
440
|
-
|
438
|
+
grpc_error_handle /*error*/) {
|
441
439
|
HealthCheckClient::CallState* self =
|
442
440
|
static_cast<HealthCheckClient::CallState*>(arg);
|
443
441
|
GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "on_complete");
|
@@ -447,7 +445,7 @@ void HealthCheckClient::CallState::OnComplete(void* arg,
|
|
447
445
|
}
|
448
446
|
|
449
447
|
void HealthCheckClient::CallState::RecvInitialMetadataReady(
|
450
|
-
void* arg,
|
448
|
+
void* arg, grpc_error_handle /*error*/) {
|
451
449
|
HealthCheckClient::CallState* self =
|
452
450
|
static_cast<HealthCheckClient::CallState*>(arg);
|
453
451
|
GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_initial_metadata_ready");
|
@@ -455,7 +453,8 @@ void HealthCheckClient::CallState::RecvInitialMetadataReady(
|
|
455
453
|
self->call_->Unref(DEBUG_LOCATION, "recv_initial_metadata_ready");
|
456
454
|
}
|
457
455
|
|
458
|
-
void HealthCheckClient::CallState::DoneReadingRecvMessage(
|
456
|
+
void HealthCheckClient::CallState::DoneReadingRecvMessage(
|
457
|
+
grpc_error_handle error) {
|
459
458
|
recv_message_.reset();
|
460
459
|
if (error != GRPC_ERROR_NONE) {
|
461
460
|
GRPC_ERROR_UNREF(error);
|
@@ -467,10 +466,10 @@ void HealthCheckClient::CallState::DoneReadingRecvMessage(grpc_error* error) {
|
|
467
466
|
const bool healthy = DecodeResponse(&recv_message_buffer_, &error);
|
468
467
|
const grpc_connectivity_state state =
|
469
468
|
healthy ? GRPC_CHANNEL_READY : GRPC_CHANNEL_TRANSIENT_FAILURE;
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
469
|
+
health_check_client_->SetHealthStatus(
|
470
|
+
state, error == GRPC_ERROR_NONE && !healthy
|
471
|
+
? "backend unhealthy"
|
472
|
+
: grpc_error_std_string(error).c_str());
|
474
473
|
seen_response_.Store(true, MemoryOrder::RELEASE);
|
475
474
|
grpc_slice_buffer_destroy_internal(&recv_message_buffer_);
|
476
475
|
// Start another recv_message batch.
|
@@ -485,9 +484,9 @@ void HealthCheckClient::CallState::DoneReadingRecvMessage(grpc_error* error) {
|
|
485
484
|
StartBatch(&recv_message_batch_);
|
486
485
|
}
|
487
486
|
|
488
|
-
|
487
|
+
grpc_error_handle HealthCheckClient::CallState::PullSliceFromRecvMessage() {
|
489
488
|
grpc_slice slice;
|
490
|
-
|
489
|
+
grpc_error_handle error = recv_message_->Pull(&slice);
|
491
490
|
if (error == GRPC_ERROR_NONE) {
|
492
491
|
grpc_slice_buffer_add(&recv_message_buffer_, slice);
|
493
492
|
}
|
@@ -496,7 +495,7 @@ grpc_error* HealthCheckClient::CallState::PullSliceFromRecvMessage() {
|
|
496
495
|
|
497
496
|
void HealthCheckClient::CallState::ContinueReadingRecvMessage() {
|
498
497
|
while (recv_message_->Next(SIZE_MAX, &recv_message_ready_)) {
|
499
|
-
|
498
|
+
grpc_error_handle error = PullSliceFromRecvMessage();
|
500
499
|
if (error != GRPC_ERROR_NONE) {
|
501
500
|
DoneReadingRecvMessage(error);
|
502
501
|
return;
|
@@ -509,7 +508,7 @@ void HealthCheckClient::CallState::ContinueReadingRecvMessage() {
|
|
509
508
|
}
|
510
509
|
|
511
510
|
void HealthCheckClient::CallState::OnByteStreamNext(void* arg,
|
512
|
-
|
511
|
+
grpc_error_handle error) {
|
513
512
|
HealthCheckClient::CallState* self =
|
514
513
|
static_cast<HealthCheckClient::CallState*>(arg);
|
515
514
|
if (error != GRPC_ERROR_NONE) {
|
@@ -528,8 +527,8 @@ void HealthCheckClient::CallState::OnByteStreamNext(void* arg,
|
|
528
527
|
}
|
529
528
|
}
|
530
529
|
|
531
|
-
void HealthCheckClient::CallState::RecvMessageReady(
|
532
|
-
|
530
|
+
void HealthCheckClient::CallState::RecvMessageReady(
|
531
|
+
void* arg, grpc_error_handle /*error*/) {
|
533
532
|
HealthCheckClient::CallState* self =
|
534
533
|
static_cast<HealthCheckClient::CallState*>(arg);
|
535
534
|
GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_message_ready");
|
@@ -545,7 +544,7 @@ void HealthCheckClient::CallState::RecvMessageReady(void* arg,
|
|
545
544
|
}
|
546
545
|
|
547
546
|
void HealthCheckClient::CallState::RecvTrailingMetadataReady(
|
548
|
-
void* arg,
|
547
|
+
void* arg, grpc_error_handle error) {
|
549
548
|
HealthCheckClient::CallState* self =
|
550
549
|
static_cast<HealthCheckClient::CallState*>(arg);
|
551
550
|
GRPC_CALL_COMBINER_STOP(&self->call_combiner_,
|
@@ -64,30 +64,30 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
|
64
64
|
|
65
65
|
void Orphan() override;
|
66
66
|
|
67
|
-
void StartCall();
|
67
|
+
void StartCall() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&HealthCheckClient::mu_);
|
68
68
|
|
69
69
|
private:
|
70
70
|
void Cancel();
|
71
71
|
|
72
72
|
void StartBatch(grpc_transport_stream_op_batch* batch);
|
73
|
-
static void StartBatchInCallCombiner(void* arg,
|
73
|
+
static void StartBatchInCallCombiner(void* arg, grpc_error_handle error);
|
74
74
|
|
75
|
-
|
76
|
-
|
75
|
+
void CallEndedLocked(bool retry)
|
76
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(health_check_client_->mu_);
|
77
77
|
|
78
|
-
static void OnComplete(void* arg,
|
79
|
-
static void RecvInitialMetadataReady(void* arg,
|
80
|
-
static void RecvMessageReady(void* arg,
|
81
|
-
static void RecvTrailingMetadataReady(void* arg,
|
82
|
-
static void StartCancel(void* arg,
|
83
|
-
static void OnCancelComplete(void* arg,
|
78
|
+
static void OnComplete(void* arg, grpc_error_handle error);
|
79
|
+
static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
|
80
|
+
static void RecvMessageReady(void* arg, grpc_error_handle error);
|
81
|
+
static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
|
82
|
+
static void StartCancel(void* arg, grpc_error_handle error);
|
83
|
+
static void OnCancelComplete(void* arg, grpc_error_handle error);
|
84
84
|
|
85
|
-
static void OnByteStreamNext(void* arg,
|
85
|
+
static void OnByteStreamNext(void* arg, grpc_error_handle error);
|
86
86
|
void ContinueReadingRecvMessage();
|
87
|
-
|
88
|
-
void DoneReadingRecvMessage(
|
87
|
+
grpc_error_handle PullSliceFromRecvMessage();
|
88
|
+
void DoneReadingRecvMessage(grpc_error_handle error);
|
89
89
|
|
90
|
-
static void AfterCallStackDestruction(void* arg,
|
90
|
+
static void AfterCallStackDestruction(void* arg, grpc_error_handle error);
|
91
91
|
|
92
92
|
RefCountedPtr<HealthCheckClient> health_check_client_;
|
93
93
|
grpc_polling_entity pollent_;
|
@@ -141,14 +141,14 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
|
141
141
|
};
|
142
142
|
|
143
143
|
void StartCall();
|
144
|
-
void StartCallLocked()
|
144
|
+
void StartCallLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
145
145
|
|
146
|
-
void StartRetryTimerLocked()
|
147
|
-
static void OnRetryTimer(void* arg,
|
146
|
+
void StartRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
147
|
+
static void OnRetryTimer(void* arg, grpc_error_handle error);
|
148
148
|
|
149
149
|
void SetHealthStatus(grpc_connectivity_state state, const char* reason);
|
150
|
-
void SetHealthStatusLocked(grpc_connectivity_state state,
|
151
|
-
|
150
|
+
void SetHealthStatusLocked(grpc_connectivity_state state, const char* reason)
|
151
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
152
152
|
|
153
153
|
std::string service_name_;
|
154
154
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
@@ -156,18 +156,19 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
|
156
156
|
RefCountedPtr<channelz::SubchannelNode> channelz_node_;
|
157
157
|
|
158
158
|
Mutex mu_;
|
159
|
-
RefCountedPtr<ConnectivityStateWatcherInterface> watcher_
|
160
|
-
|
159
|
+
RefCountedPtr<ConnectivityStateWatcherInterface> watcher_
|
160
|
+
ABSL_GUARDED_BY(mu_);
|
161
|
+
bool shutting_down_ ABSL_GUARDED_BY(mu_) = false;
|
161
162
|
|
162
163
|
// The data associated with the current health check call. It holds a ref
|
163
164
|
// to this HealthCheckClient object.
|
164
|
-
OrphanablePtr<CallState> call_state_;
|
165
|
+
OrphanablePtr<CallState> call_state_ ABSL_GUARDED_BY(mu_);
|
165
166
|
|
166
167
|
// Call retry state.
|
167
|
-
BackOff retry_backoff_;
|
168
|
-
grpc_timer retry_timer_;
|
169
|
-
grpc_closure retry_timer_callback_;
|
170
|
-
bool retry_timer_callback_pending_ = false;
|
168
|
+
BackOff retry_backoff_ ABSL_GUARDED_BY(mu_);
|
169
|
+
grpc_timer retry_timer_ ABSL_GUARDED_BY(mu_);
|
170
|
+
grpc_closure retry_timer_callback_ ABSL_GUARDED_BY(mu_);
|
171
|
+
bool retry_timer_callback_pending_ ABSL_GUARDED_BY(mu_) = false;
|
171
172
|
};
|
172
173
|
|
173
174
|
} // namespace grpc_core
|
@@ -47,7 +47,7 @@ namespace {
|
|
47
47
|
class HttpConnectHandshaker : public Handshaker {
|
48
48
|
public:
|
49
49
|
HttpConnectHandshaker();
|
50
|
-
void Shutdown(
|
50
|
+
void Shutdown(grpc_error_handle why) override;
|
51
51
|
void DoHandshake(grpc_tcp_server_acceptor* acceptor,
|
52
52
|
grpc_closure* on_handshake_done,
|
53
53
|
HandshakerArgs* args) override;
|
@@ -55,30 +55,31 @@ class HttpConnectHandshaker : public Handshaker {
|
|
55
55
|
|
56
56
|
private:
|
57
57
|
~HttpConnectHandshaker() override;
|
58
|
-
void CleanupArgsForFailureLocked();
|
59
|
-
void HandshakeFailedLocked(
|
60
|
-
|
61
|
-
static void
|
62
|
-
static void
|
63
|
-
static void
|
58
|
+
void CleanupArgsForFailureLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
59
|
+
void HandshakeFailedLocked(grpc_error_handle error)
|
60
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
61
|
+
static void OnWriteDone(void* arg, grpc_error_handle error);
|
62
|
+
static void OnReadDone(void* arg, grpc_error_handle error);
|
63
|
+
static void OnWriteDoneScheduler(void* arg, grpc_error_handle error);
|
64
|
+
static void OnReadDoneScheduler(void* arg, grpc_error_handle error);
|
64
65
|
|
65
66
|
Mutex mu_;
|
66
67
|
|
67
|
-
bool is_shutdown_ = false;
|
68
|
+
bool is_shutdown_ ABSL_GUARDED_BY(mu_) = false;
|
68
69
|
// Endpoint and read buffer to destroy after a shutdown.
|
69
|
-
grpc_endpoint* endpoint_to_destroy_ = nullptr;
|
70
|
-
grpc_slice_buffer* read_buffer_to_destroy_ = nullptr;
|
70
|
+
grpc_endpoint* endpoint_to_destroy_ ABSL_GUARDED_BY(mu_) = nullptr;
|
71
|
+
grpc_slice_buffer* read_buffer_to_destroy_ ABSL_GUARDED_BY(mu_) = nullptr;
|
71
72
|
|
72
73
|
// State saved while performing the handshake.
|
73
74
|
HandshakerArgs* args_ = nullptr;
|
74
75
|
grpc_closure* on_handshake_done_ = nullptr;
|
75
76
|
|
76
77
|
// Objects for processing the HTTP CONNECT request and response.
|
77
|
-
grpc_slice_buffer write_buffer_;
|
78
|
-
grpc_closure request_done_closure_;
|
79
|
-
grpc_closure response_read_closure_;
|
80
|
-
grpc_http_parser http_parser_;
|
81
|
-
grpc_http_response http_response_;
|
78
|
+
grpc_slice_buffer write_buffer_ ABSL_GUARDED_BY(mu_);
|
79
|
+
grpc_closure request_done_closure_ ABSL_GUARDED_BY(mu_);
|
80
|
+
grpc_closure response_read_closure_ ABSL_GUARDED_BY(mu_);
|
81
|
+
grpc_http_parser http_parser_ ABSL_GUARDED_BY(mu_);
|
82
|
+
grpc_http_response http_response_ ABSL_GUARDED_BY(mu_);
|
82
83
|
};
|
83
84
|
|
84
85
|
HttpConnectHandshaker::~HttpConnectHandshaker() {
|
@@ -107,7 +108,7 @@ void HttpConnectHandshaker::CleanupArgsForFailureLocked() {
|
|
107
108
|
|
108
109
|
// If the handshake failed or we're shutting down, clean up and invoke the
|
109
110
|
// callback with the error.
|
110
|
-
void HttpConnectHandshaker::HandshakeFailedLocked(
|
111
|
+
void HttpConnectHandshaker::HandshakeFailedLocked(grpc_error_handle error) {
|
111
112
|
if (error == GRPC_ERROR_NONE) {
|
112
113
|
// If we were shut down after an endpoint operation succeeded but
|
113
114
|
// before the endpoint callback was invoked, we need to generate our
|
@@ -133,7 +134,8 @@ void HttpConnectHandshaker::HandshakeFailedLocked(grpc_error* error) {
|
|
133
134
|
|
134
135
|
// This callback can be invoked inline while already holding onto the mutex. To
|
135
136
|
// avoid deadlocks, schedule OnWriteDone on ExecCtx.
|
136
|
-
void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg,
|
137
|
+
void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg,
|
138
|
+
grpc_error_handle error) {
|
137
139
|
auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
|
138
140
|
grpc_core::ExecCtx::Run(
|
139
141
|
DEBUG_LOCATION,
|
@@ -144,7 +146,7 @@ void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg, grpc_error* error) {
|
|
144
146
|
}
|
145
147
|
|
146
148
|
// Callback invoked when finished writing HTTP CONNECT request.
|
147
|
-
void HttpConnectHandshaker::OnWriteDone(void* arg,
|
149
|
+
void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error_handle error) {
|
148
150
|
auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
|
149
151
|
ReleasableMutexLock lock(&handshaker->mu_);
|
150
152
|
if (error != GRPC_ERROR_NONE || handshaker->is_shutdown_) {
|
@@ -167,7 +169,8 @@ void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error* error) {
|
|
167
169
|
|
168
170
|
// This callback can be invoked inline while already holding onto the mutex. To
|
169
171
|
// avoid deadlocks, schedule OnReadDone on ExecCtx.
|
170
|
-
void HttpConnectHandshaker::OnReadDoneScheduler(void* arg,
|
172
|
+
void HttpConnectHandshaker::OnReadDoneScheduler(void* arg,
|
173
|
+
grpc_error_handle error) {
|
171
174
|
auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
|
172
175
|
grpc_core::ExecCtx::Run(
|
173
176
|
DEBUG_LOCATION,
|
@@ -178,7 +181,7 @@ void HttpConnectHandshaker::OnReadDoneScheduler(void* arg, grpc_error* error) {
|
|
178
181
|
}
|
179
182
|
|
180
183
|
// Callback invoked for reading HTTP CONNECT response.
|
181
|
-
void HttpConnectHandshaker::OnReadDone(void* arg,
|
184
|
+
void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error_handle error) {
|
182
185
|
auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
|
183
186
|
ReleasableMutexLock lock(&handshaker->mu_);
|
184
187
|
if (error != GRPC_ERROR_NONE || handshaker->is_shutdown_) {
|
@@ -264,7 +267,7 @@ done:
|
|
264
267
|
// Public handshaker methods
|
265
268
|
//
|
266
269
|
|
267
|
-
void HttpConnectHandshaker::Shutdown(
|
270
|
+
void HttpConnectHandshaker::Shutdown(grpc_error_handle why) {
|
268
271
|
{
|
269
272
|
MutexLock lock(&mu_);
|
270
273
|
if (!is_shutdown_) {
|