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
@@ -51,7 +51,7 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
|
|
51
51
|
grpc_transport* transport = grpc_create_chttp2_transport(
|
52
52
|
server_args, server_endpoint, false /* is_client */);
|
53
53
|
|
54
|
-
|
54
|
+
grpc_error_handle error =
|
55
55
|
core_server->SetupTransport(transport, nullptr, server_args, nullptr);
|
56
56
|
if (error == GRPC_ERROR_NONE) {
|
57
57
|
for (grpc_pollset* pollset : core_server->pollsets()) {
|
@@ -60,7 +60,7 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
|
|
60
60
|
grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr);
|
61
61
|
} else {
|
62
62
|
gpr_log(GPR_ERROR, "Failed to create channel: %s",
|
63
|
-
|
63
|
+
grpc_error_std_string(error).c_str());
|
64
64
|
GRPC_ERROR_UNREF(error);
|
65
65
|
grpc_transport_destroy(transport);
|
66
66
|
}
|
@@ -40,7 +40,7 @@
|
|
40
40
|
namespace {
|
41
41
|
|
42
42
|
grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
|
43
|
-
|
43
|
+
grpc_error_handle* error) {
|
44
44
|
grpc_server_credentials* server_credentials =
|
45
45
|
grpc_find_server_credentials_in_args(args);
|
46
46
|
if (server_credentials == nullptr) {
|
@@ -69,7 +69,7 @@ grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
|
|
69
69
|
int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
|
70
70
|
grpc_server_credentials* creds) {
|
71
71
|
grpc_core::ExecCtx exec_ctx;
|
72
|
-
|
72
|
+
grpc_error_handle err = GRPC_ERROR_NONE;
|
73
73
|
grpc_core::RefCountedPtr<grpc_server_security_connector> sc;
|
74
74
|
int port_num = 0;
|
75
75
|
grpc_channel_args* args = nullptr;
|
@@ -121,8 +121,7 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
|
|
121
121
|
done:
|
122
122
|
sc.reset(DEBUG_LOCATION, "server");
|
123
123
|
if (err != GRPC_ERROR_NONE) {
|
124
|
-
|
125
|
-
gpr_log(GPR_ERROR, "%s", msg);
|
124
|
+
gpr_log(GPR_ERROR, "%s", grpc_error_std_string(err).c_str());
|
126
125
|
|
127
126
|
GRPC_ERROR_UNREF(err);
|
128
127
|
}
|
@@ -100,23 +100,23 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
|
|
100
100
|
"chttp2_refcount");
|
101
101
|
|
102
102
|
// forward declarations of various callbacks that we'll build closures around
|
103
|
-
static void write_action_begin_locked(void* t,
|
104
|
-
static void write_action(void* t,
|
105
|
-
static void write_action_end(void* t,
|
106
|
-
static void write_action_end_locked(void* t,
|
103
|
+
static void write_action_begin_locked(void* t, grpc_error_handle error);
|
104
|
+
static void write_action(void* t, grpc_error_handle error);
|
105
|
+
static void write_action_end(void* t, grpc_error_handle error);
|
106
|
+
static void write_action_end_locked(void* t, grpc_error_handle error);
|
107
107
|
|
108
|
-
static void read_action(void* t,
|
109
|
-
static void read_action_locked(void* t,
|
108
|
+
static void read_action(void* t, grpc_error_handle error);
|
109
|
+
static void read_action_locked(void* t, grpc_error_handle error);
|
110
110
|
static void continue_read_action_locked(grpc_chttp2_transport* t);
|
111
111
|
|
112
|
-
static void complete_fetch(void* gs,
|
113
|
-
static void complete_fetch_locked(void* gs,
|
112
|
+
static void complete_fetch(void* gs, grpc_error_handle error);
|
113
|
+
static void complete_fetch_locked(void* gs, grpc_error_handle error);
|
114
114
|
// Set a transport level setting, and push it to our peer
|
115
115
|
static void queue_setting_update(grpc_chttp2_transport* t,
|
116
116
|
grpc_chttp2_setting_id id, uint32_t value);
|
117
117
|
|
118
118
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
119
|
-
|
119
|
+
grpc_error_handle error);
|
120
120
|
|
121
121
|
// Start new streams that have been created if we can
|
122
122
|
static void maybe_start_some_streams(grpc_chttp2_transport* t);
|
@@ -126,40 +126,43 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
|
|
126
126
|
const absl::Status& status,
|
127
127
|
const char* reason);
|
128
128
|
|
129
|
-
static void benign_reclaimer(void* arg,
|
130
|
-
static void destructive_reclaimer(void* arg,
|
131
|
-
static void benign_reclaimer_locked(void* arg,
|
132
|
-
static void destructive_reclaimer_locked(void* arg,
|
129
|
+
static void benign_reclaimer(void* arg, grpc_error_handle error);
|
130
|
+
static void destructive_reclaimer(void* arg, grpc_error_handle error);
|
131
|
+
static void benign_reclaimer_locked(void* arg, grpc_error_handle error);
|
132
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error_handle error);
|
133
133
|
|
134
134
|
static void post_benign_reclaimer(grpc_chttp2_transport* t);
|
135
135
|
static void post_destructive_reclaimer(grpc_chttp2_transport* t);
|
136
136
|
|
137
|
-
static void close_transport_locked(grpc_chttp2_transport* t,
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
static void
|
143
|
-
static void
|
144
|
-
static void
|
145
|
-
static void
|
146
|
-
|
147
|
-
static void
|
137
|
+
static void close_transport_locked(grpc_chttp2_transport* t,
|
138
|
+
grpc_error_handle error);
|
139
|
+
static void end_all_the_calls(grpc_chttp2_transport* t,
|
140
|
+
grpc_error_handle error);
|
141
|
+
|
142
|
+
static void start_bdp_ping(void* tp, grpc_error_handle error);
|
143
|
+
static void finish_bdp_ping(void* tp, grpc_error_handle error);
|
144
|
+
static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
|
145
|
+
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
|
146
|
+
static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error);
|
147
|
+
static void next_bdp_ping_timer_expired_locked(void* tp,
|
148
|
+
grpc_error_handle error);
|
149
|
+
|
150
|
+
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
|
148
151
|
static void send_ping_locked(grpc_chttp2_transport* t,
|
149
152
|
grpc_closure* on_initiate, grpc_closure* on_ack);
|
150
|
-
static void retry_initiate_ping_locked(void* tp,
|
153
|
+
static void retry_initiate_ping_locked(void* tp, grpc_error_handle error);
|
151
154
|
|
152
155
|
// keepalive-relevant functions
|
153
|
-
static void init_keepalive_ping(void* arg,
|
154
|
-
static void init_keepalive_ping_locked(void* arg,
|
155
|
-
static void start_keepalive_ping(void* arg,
|
156
|
-
static void finish_keepalive_ping(void* arg,
|
157
|
-
static void start_keepalive_ping_locked(void* arg,
|
158
|
-
static void finish_keepalive_ping_locked(void* arg,
|
159
|
-
static void keepalive_watchdog_fired(void* arg,
|
160
|
-
static void keepalive_watchdog_fired_locked(void* arg,
|
156
|
+
static void init_keepalive_ping(void* arg, grpc_error_handle error);
|
157
|
+
static void init_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
158
|
+
static void start_keepalive_ping(void* arg, grpc_error_handle error);
|
159
|
+
static void finish_keepalive_ping(void* arg, grpc_error_handle error);
|
160
|
+
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
161
|
+
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
162
|
+
static void keepalive_watchdog_fired(void* arg, grpc_error_handle error);
|
163
|
+
static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error);
|
161
164
|
|
162
|
-
static void reset_byte_stream(void* arg,
|
165
|
+
static void reset_byte_stream(void* arg, grpc_error_handle error);
|
163
166
|
|
164
167
|
// Flow control default enabled. Can be disabled by setting
|
165
168
|
// GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
|
@@ -203,7 +206,7 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
203
206
|
grpc_slice_buffer_destroy_internal(&outbuf);
|
204
207
|
grpc_chttp2_hpack_compressor_destroy(&hpack_compressor);
|
205
208
|
|
206
|
-
|
209
|
+
grpc_error_handle error =
|
207
210
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
|
208
211
|
// ContextList::Execute follows semantics of a callback function and does not
|
209
212
|
// take a ref on error
|
@@ -534,7 +537,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
534
537
|
}
|
535
538
|
}
|
536
539
|
|
537
|
-
static void destroy_transport_locked(void* tp,
|
540
|
+
static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
|
538
541
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
539
542
|
t->destroying = 1;
|
540
543
|
close_transport_locked(
|
@@ -552,7 +555,7 @@ static void destroy_transport(grpc_transport* gt) {
|
|
552
555
|
}
|
553
556
|
|
554
557
|
static void close_transport_locked(grpc_chttp2_transport* t,
|
555
|
-
|
558
|
+
grpc_error_handle error) {
|
556
559
|
end_all_the_calls(t, GRPC_ERROR_REF(error));
|
557
560
|
cancel_pings(t, GRPC_ERROR_REF(error));
|
558
561
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
@@ -731,7 +734,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs,
|
|
731
734
|
return 0;
|
732
735
|
}
|
733
736
|
|
734
|
-
static void destroy_stream_locked(void* sp,
|
737
|
+
static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
|
735
738
|
GPR_TIMER_SCOPE("destroy_stream", 0);
|
736
739
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
|
737
740
|
s->~grpc_chttp2_stream();
|
@@ -819,7 +822,7 @@ static void set_write_state(grpc_chttp2_transport* t,
|
|
819
822
|
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
820
823
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
|
821
824
|
if (t->close_transport_on_writes_finished != nullptr) {
|
822
|
-
|
825
|
+
grpc_error_handle err = t->close_transport_on_writes_finished;
|
823
826
|
t->close_transport_on_writes_finished = nullptr;
|
824
827
|
close_transport_locked(t, err);
|
825
828
|
}
|
@@ -951,7 +954,8 @@ static const char* begin_writing_desc(bool partial) {
|
|
951
954
|
}
|
952
955
|
}
|
953
956
|
|
954
|
-
static void write_action_begin_locked(void* gt,
|
957
|
+
static void write_action_begin_locked(void* gt,
|
958
|
+
grpc_error_handle /*error_ignored*/) {
|
955
959
|
GPR_TIMER_SCOPE("write_action_begin_locked", 0);
|
956
960
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
957
961
|
GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
|
@@ -990,7 +994,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
990
994
|
}
|
991
995
|
}
|
992
996
|
|
993
|
-
static void write_action(void* gt,
|
997
|
+
static void write_action(void* gt, grpc_error_handle /*error*/) {
|
994
998
|
GPR_TIMER_SCOPE("write_action", 0);
|
995
999
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
996
1000
|
void* cl = t->cl;
|
@@ -1002,7 +1006,7 @@ static void write_action(void* gt, grpc_error* /*error*/) {
|
|
1002
1006
|
cl);
|
1003
1007
|
}
|
1004
1008
|
|
1005
|
-
static void write_action_end(void* tp,
|
1009
|
+
static void write_action_end(void* tp, grpc_error_handle error) {
|
1006
1010
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1007
1011
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
|
1008
1012
|
write_action_end_locked, t, nullptr),
|
@@ -1011,7 +1015,7 @@ static void write_action_end(void* tp, grpc_error* error) {
|
|
1011
1015
|
|
1012
1016
|
// Callback from the grpc_endpoint after bytes have been written by calling
|
1013
1017
|
// sendmsg
|
1014
|
-
static void write_action_end_locked(void* tp,
|
1018
|
+
static void write_action_end_locked(void* tp, grpc_error_handle error) {
|
1015
1019
|
GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
|
1016
1020
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1017
1021
|
|
@@ -1100,7 +1104,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1100
1104
|
// received a GOAWAY with a non NO_ERROR code.
|
1101
1105
|
if (goaway_error != GRPC_HTTP2_NO_ERROR) {
|
1102
1106
|
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
|
1103
|
-
goaway_error,
|
1107
|
+
goaway_error, grpc_error_std_string(t->goaway_error).c_str());
|
1104
1108
|
}
|
1105
1109
|
absl::Status status = grpc_error_to_absl_status(t->goaway_error);
|
1106
1110
|
// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
|
@@ -1206,7 +1210,8 @@ static void null_then_sched_closure(grpc_closure** closure) {
|
|
1206
1210
|
void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
1207
1211
|
grpc_chttp2_stream* /*s*/,
|
1208
1212
|
grpc_closure** pclosure,
|
1209
|
-
|
1213
|
+
grpc_error_handle error,
|
1214
|
+
const char* desc) {
|
1210
1215
|
grpc_closure* closure = *pclosure;
|
1211
1216
|
*pclosure = nullptr;
|
1212
1217
|
if (closure == nullptr) {
|
@@ -1215,7 +1220,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1215
1220
|
}
|
1216
1221
|
closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
|
1217
1222
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1218
|
-
const char* errstr = grpc_error_string(error);
|
1219
1223
|
gpr_log(
|
1220
1224
|
GPR_INFO,
|
1221
1225
|
"complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
|
@@ -1225,7 +1229,8 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1225
1229
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1226
1230
|
static_cast<int>(closure->next_data.scratch %
|
1227
1231
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1228
|
-
desc,
|
1232
|
+
desc, grpc_error_std_string(error).c_str(),
|
1233
|
+
write_state_name(t->write_state));
|
1229
1234
|
}
|
1230
1235
|
if (error != GRPC_ERROR_NONE) {
|
1231
1236
|
if (closure->error_data.error == GRPC_ERROR_NONE) {
|
@@ -1314,7 +1319,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1314
1319
|
UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
|
1315
1320
|
::complete_fetch, s,
|
1316
1321
|
grpc_schedule_on_exec_ctx))) {
|
1317
|
-
|
1322
|
+
grpc_error_handle error =
|
1323
|
+
s->fetching_send_message->Pull(&s->fetching_slice);
|
1318
1324
|
if (error != GRPC_ERROR_NONE) {
|
1319
1325
|
s->fetching_send_message.reset();
|
1320
1326
|
grpc_chttp2_cancel_stream(t, s, error);
|
@@ -1325,14 +1331,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1325
1331
|
}
|
1326
1332
|
}
|
1327
1333
|
|
1328
|
-
static void complete_fetch(void* gs,
|
1334
|
+
static void complete_fetch(void* gs, grpc_error_handle error) {
|
1329
1335
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
|
1330
1336
|
s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
|
1331
1337
|
::complete_fetch_locked, s, nullptr),
|
1332
1338
|
GRPC_ERROR_REF(error));
|
1333
1339
|
}
|
1334
1340
|
|
1335
|
-
static void complete_fetch_locked(void* gs,
|
1341
|
+
static void complete_fetch_locked(void* gs, grpc_error_handle error) {
|
1336
1342
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
|
1337
1343
|
grpc_chttp2_transport* t = s->t;
|
1338
1344
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1362,7 +1368,7 @@ static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
|
|
1362
1368
|
}
|
1363
1369
|
|
1364
1370
|
static void perform_stream_op_locked(void* stream_op,
|
1365
|
-
|
1371
|
+
grpc_error_handle /*error_ignored*/) {
|
1366
1372
|
GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
|
1367
1373
|
|
1368
1374
|
grpc_transport_stream_op_batch* op =
|
@@ -1646,7 +1652,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1646
1652
|
GRPC_ERROR_NONE);
|
1647
1653
|
}
|
1648
1654
|
|
1649
|
-
static void cancel_pings(grpc_chttp2_transport* t,
|
1655
|
+
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1650
1656
|
// callback remaining pings: they're not allowed to call into the transport,
|
1651
1657
|
// and maybe they hold resources that need to be freed
|
1652
1658
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
@@ -1713,14 +1719,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1713
1719
|
GRPC_ERROR_NONE);
|
1714
1720
|
}
|
1715
1721
|
|
1716
|
-
void grpc_chttp2_retry_initiate_ping(void* tp,
|
1722
|
+
void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
|
1717
1723
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1718
1724
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
|
1719
1725
|
retry_initiate_ping_locked, t, nullptr),
|
1720
1726
|
GRPC_ERROR_REF(error));
|
1721
1727
|
}
|
1722
1728
|
|
1723
|
-
static void retry_initiate_ping_locked(void* tp,
|
1729
|
+
static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
|
1724
1730
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1725
1731
|
t->ping_state.is_delayed_ping_timer_set = false;
|
1726
1732
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1743,10 +1749,10 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
|
1743
1749
|
}
|
1744
1750
|
}
|
1745
1751
|
|
1746
|
-
static void send_goaway(grpc_chttp2_transport* t,
|
1752
|
+
static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1747
1753
|
// We want to log this irrespective of whether http tracing is enabled
|
1748
1754
|
gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
|
1749
|
-
|
1755
|
+
grpc_error_std_string(error).c_str());
|
1750
1756
|
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
|
1751
1757
|
grpc_http2_error_code http_error;
|
1752
1758
|
grpc_slice slice;
|
@@ -1784,7 +1790,7 @@ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
|
|
1784
1790
|
}
|
1785
1791
|
|
1786
1792
|
static void perform_transport_op_locked(void* stream_op,
|
1787
|
-
|
1793
|
+
grpc_error_handle /*error_ignored*/) {
|
1788
1794
|
grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
|
1789
1795
|
grpc_chttp2_transport* t =
|
1790
1796
|
static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
|
@@ -1864,7 +1870,7 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
|
1864
1870
|
|
1865
1871
|
void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
|
1866
1872
|
grpc_chttp2_stream* s) {
|
1867
|
-
|
1873
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1868
1874
|
if (s->recv_message_ready != nullptr) {
|
1869
1875
|
*s->recv_message = nullptr;
|
1870
1876
|
if (s->final_metadata_requested && s->seen_error) {
|
@@ -2014,7 +2020,7 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
2014
2020
|
}
|
2015
2021
|
|
2016
2022
|
static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
2017
|
-
|
2023
|
+
grpc_error_handle error) {
|
2018
2024
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
2019
2025
|
grpc_chttp2_stream_map_delete(&t->stream_map, id));
|
2020
2026
|
GPR_DEBUG_ASSERT(s);
|
@@ -2057,7 +2063,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2057
2063
|
}
|
2058
2064
|
|
2059
2065
|
void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2060
|
-
|
2066
|
+
grpc_error_handle due_to_error) {
|
2061
2067
|
if (!t->is_client && !s->sent_trailing_metadata &&
|
2062
2068
|
grpc_error_has_clear_grpc_status(due_to_error)) {
|
2063
2069
|
close_from_api(t, s, due_to_error);
|
@@ -2081,7 +2087,7 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2081
2087
|
}
|
2082
2088
|
|
2083
2089
|
void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2084
|
-
|
2090
|
+
grpc_error_handle error) {
|
2085
2091
|
grpc_status_code status;
|
2086
2092
|
grpc_slice slice;
|
2087
2093
|
grpc_error_get_status(error, s->deadline, &status, &slice, nullptr, nullptr);
|
@@ -2118,7 +2124,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2118
2124
|
GRPC_ERROR_UNREF(error);
|
2119
2125
|
}
|
2120
2126
|
|
2121
|
-
static void add_error(
|
2127
|
+
static void add_error(grpc_error_handle error, grpc_error_handle* refs,
|
2128
|
+
size_t* nrefs) {
|
2122
2129
|
if (error == GRPC_ERROR_NONE) return;
|
2123
2130
|
for (size_t i = 0; i < *nrefs; i++) {
|
2124
2131
|
if (error == refs[i]) {
|
@@ -2129,14 +2136,15 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
|
|
2129
2136
|
++*nrefs;
|
2130
2137
|
}
|
2131
2138
|
|
2132
|
-
static
|
2133
|
-
|
2134
|
-
|
2139
|
+
static grpc_error_handle removal_error(grpc_error_handle extra_error,
|
2140
|
+
grpc_chttp2_stream* s,
|
2141
|
+
const char* main_error_msg) {
|
2142
|
+
grpc_error_handle refs[3];
|
2135
2143
|
size_t nrefs = 0;
|
2136
2144
|
add_error(s->read_closed_error, refs, &nrefs);
|
2137
2145
|
add_error(s->write_closed_error, refs, &nrefs);
|
2138
2146
|
add_error(extra_error, refs, &nrefs);
|
2139
|
-
|
2147
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2140
2148
|
if (nrefs > 0) {
|
2141
2149
|
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
|
2142
2150
|
refs, nrefs);
|
@@ -2146,7 +2154,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
|
|
2146
2154
|
}
|
2147
2155
|
|
2148
2156
|
static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2149
|
-
grpc_chttp2_write_cb** list,
|
2157
|
+
grpc_chttp2_write_cb** list,
|
2158
|
+
grpc_error_handle error) {
|
2150
2159
|
while (*list) {
|
2151
2160
|
grpc_chttp2_write_cb* cb = *list;
|
2152
2161
|
*list = cb->next;
|
@@ -2159,7 +2168,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2159
2168
|
}
|
2160
2169
|
|
2161
2170
|
void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
2162
|
-
grpc_chttp2_stream* s,
|
2171
|
+
grpc_chttp2_stream* s,
|
2172
|
+
grpc_error_handle error) {
|
2163
2173
|
error =
|
2164
2174
|
removal_error(error, s, "Pending writes failed due to stream closure");
|
2165
2175
|
s->send_initial_metadata = nullptr;
|
@@ -2183,10 +2193,10 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2183
2193
|
|
2184
2194
|
void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
2185
2195
|
grpc_chttp2_stream* s, int close_reads,
|
2186
|
-
int close_writes,
|
2196
|
+
int close_writes, grpc_error_handle error) {
|
2187
2197
|
if (s->read_closed && s->write_closed) {
|
2188
2198
|
// already closed, but we should still fake the status if needed.
|
2189
|
-
|
2199
|
+
grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
|
2190
2200
|
if (overall_error != GRPC_ERROR_NONE) {
|
2191
2201
|
grpc_chttp2_fake_status(t, s, overall_error);
|
2192
2202
|
}
|
@@ -2207,7 +2217,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2207
2217
|
}
|
2208
2218
|
if (s->read_closed && s->write_closed) {
|
2209
2219
|
became_closed = true;
|
2210
|
-
|
2220
|
+
grpc_error_handle overall_error =
|
2211
2221
|
removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
|
2212
2222
|
if (s->id != 0) {
|
2213
2223
|
remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
|
@@ -2236,7 +2246,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2236
2246
|
}
|
2237
2247
|
|
2238
2248
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2239
|
-
|
2249
|
+
grpc_error_handle error) {
|
2240
2250
|
grpc_slice hdr;
|
2241
2251
|
grpc_slice status_hdr;
|
2242
2252
|
grpc_slice http_status_hdr;
|
@@ -2394,7 +2404,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2394
2404
|
}
|
2395
2405
|
|
2396
2406
|
struct cancel_stream_cb_args {
|
2397
|
-
|
2407
|
+
grpc_error_handle error;
|
2398
2408
|
grpc_chttp2_transport* t;
|
2399
2409
|
};
|
2400
2410
|
|
@@ -2404,7 +2414,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
|
|
2404
2414
|
grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
|
2405
2415
|
}
|
2406
2416
|
|
2407
|
-
static void end_all_the_calls(grpc_chttp2_transport* t,
|
2417
|
+
static void end_all_the_calls(grpc_chttp2_transport* t,
|
2418
|
+
grpc_error_handle error) {
|
2408
2419
|
intptr_t http2_error;
|
2409
2420
|
// If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
|
2410
2421
|
if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
|
@@ -2458,15 +2469,15 @@ void grpc_chttp2_act_on_flowctl_action(
|
|
2458
2469
|
});
|
2459
2470
|
}
|
2460
2471
|
|
2461
|
-
static
|
2472
|
+
static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
|
2462
2473
|
grpc_http_parser parser;
|
2463
2474
|
size_t i = 0;
|
2464
|
-
|
2475
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2465
2476
|
grpc_http_response response;
|
2466
2477
|
|
2467
2478
|
grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
|
2468
2479
|
|
2469
|
-
|
2480
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
2470
2481
|
for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
|
2471
2482
|
parse_error =
|
2472
2483
|
grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
|
@@ -2487,34 +2498,34 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
|
|
2487
2498
|
return error;
|
2488
2499
|
}
|
2489
2500
|
|
2490
|
-
static void read_action(void* tp,
|
2501
|
+
static void read_action(void* tp, grpc_error_handle error) {
|
2491
2502
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2492
2503
|
t->combiner->Run(
|
2493
2504
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
|
2494
2505
|
GRPC_ERROR_REF(error));
|
2495
2506
|
}
|
2496
2507
|
|
2497
|
-
static void read_action_locked(void* tp,
|
2508
|
+
static void read_action_locked(void* tp, grpc_error_handle error) {
|
2498
2509
|
GPR_TIMER_SCOPE("reading_action_locked", 0);
|
2499
2510
|
|
2500
2511
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2501
2512
|
|
2502
2513
|
GRPC_ERROR_REF(error);
|
2503
2514
|
|
2504
|
-
|
2515
|
+
grpc_error_handle err = error;
|
2505
2516
|
if (err != GRPC_ERROR_NONE) {
|
2506
2517
|
err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
2507
2518
|
"Endpoint read failed", &err, 1),
|
2508
2519
|
GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
|
2509
2520
|
t->write_state);
|
2510
2521
|
}
|
2511
|
-
GPR_SWAP(
|
2522
|
+
GPR_SWAP(grpc_error_handle, err, error);
|
2512
2523
|
GRPC_ERROR_UNREF(err);
|
2513
2524
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2514
2525
|
GPR_TIMER_SCOPE("reading_action.parse", 0);
|
2515
2526
|
size_t i = 0;
|
2516
|
-
|
2517
|
-
|
2527
|
+
grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
|
2528
|
+
GRPC_ERROR_NONE};
|
2518
2529
|
for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
|
2519
2530
|
errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
|
2520
2531
|
}
|
@@ -2605,18 +2616,18 @@ void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
|
2605
2616
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
|
2606
2617
|
}
|
2607
2618
|
|
2608
|
-
static void start_bdp_ping(void* tp,
|
2619
|
+
static void start_bdp_ping(void* tp, grpc_error_handle error) {
|
2609
2620
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2610
2621
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
|
2611
2622
|
start_bdp_ping_locked, t, nullptr),
|
2612
2623
|
GRPC_ERROR_REF(error));
|
2613
2624
|
}
|
2614
2625
|
|
2615
|
-
static void start_bdp_ping_locked(void* tp,
|
2626
|
+
static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2616
2627
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2617
2628
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2618
2629
|
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
|
2619
|
-
|
2630
|
+
grpc_error_std_string(error).c_str());
|
2620
2631
|
}
|
2621
2632
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2622
2633
|
return;
|
@@ -2629,18 +2640,18 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2629
2640
|
t->bdp_ping_started = true;
|
2630
2641
|
}
|
2631
2642
|
|
2632
|
-
static void finish_bdp_ping(void* tp,
|
2643
|
+
static void finish_bdp_ping(void* tp, grpc_error_handle error) {
|
2633
2644
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2634
2645
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2635
2646
|
finish_bdp_ping_locked, t, nullptr),
|
2636
2647
|
GRPC_ERROR_REF(error));
|
2637
2648
|
}
|
2638
2649
|
|
2639
|
-
static void finish_bdp_ping_locked(void* tp,
|
2650
|
+
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2640
2651
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2641
2652
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2642
2653
|
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
|
2643
|
-
|
2654
|
+
grpc_error_std_string(error).c_str());
|
2644
2655
|
}
|
2645
2656
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2646
2657
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
@@ -2666,7 +2677,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2666
2677
|
&t->next_bdp_ping_timer_expired_locked);
|
2667
2678
|
}
|
2668
2679
|
|
2669
|
-
static void next_bdp_ping_timer_expired(void* tp,
|
2680
|
+
static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
|
2670
2681
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2671
2682
|
t->combiner->Run(
|
2672
2683
|
GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
|
@@ -2674,7 +2685,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
|
|
2674
2685
|
GRPC_ERROR_REF(error));
|
2675
2686
|
}
|
2676
2687
|
|
2677
|
-
static void next_bdp_ping_timer_expired_locked(void* tp,
|
2688
|
+
static void next_bdp_ping_timer_expired_locked(void* tp,
|
2689
|
+
grpc_error_handle error) {
|
2678
2690
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2679
2691
|
GPR_ASSERT(t->have_next_bdp_ping_timer);
|
2680
2692
|
t->have_next_bdp_ping_timer = false;
|
@@ -2750,14 +2762,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2750
2762
|
}
|
2751
2763
|
}
|
2752
2764
|
|
2753
|
-
static void init_keepalive_ping(void* arg,
|
2765
|
+
static void init_keepalive_ping(void* arg, grpc_error_handle error) {
|
2754
2766
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2755
2767
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
|
2756
2768
|
init_keepalive_ping_locked, t, nullptr),
|
2757
2769
|
GRPC_ERROR_REF(error));
|
2758
2770
|
}
|
2759
2771
|
|
2760
|
-
static void init_keepalive_ping_locked(void* arg,
|
2772
|
+
static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2761
2773
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2762
2774
|
GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
|
2763
2775
|
if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
|
@@ -2790,14 +2802,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2790
2802
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
|
2791
2803
|
}
|
2792
2804
|
|
2793
|
-
static void start_keepalive_ping(void* arg,
|
2805
|
+
static void start_keepalive_ping(void* arg, grpc_error_handle error) {
|
2794
2806
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2795
2807
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
2796
2808
|
start_keepalive_ping_locked, t, nullptr),
|
2797
2809
|
GRPC_ERROR_REF(error));
|
2798
2810
|
}
|
2799
2811
|
|
2800
|
-
static void start_keepalive_ping_locked(void* arg,
|
2812
|
+
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2801
2813
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2802
2814
|
if (error != GRPC_ERROR_NONE) {
|
2803
2815
|
return;
|
@@ -2818,14 +2830,14 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2818
2830
|
t->keepalive_ping_started = true;
|
2819
2831
|
}
|
2820
2832
|
|
2821
|
-
static void finish_keepalive_ping(void* arg,
|
2833
|
+
static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
|
2822
2834
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2823
2835
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2824
2836
|
finish_keepalive_ping_locked, t, nullptr),
|
2825
2837
|
GRPC_ERROR_REF(error));
|
2826
2838
|
}
|
2827
2839
|
|
2828
|
-
static void finish_keepalive_ping_locked(void* arg,
|
2840
|
+
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2829
2841
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2830
2842
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2831
2843
|
if (error == GRPC_ERROR_NONE) {
|
@@ -2856,7 +2868,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2856
2868
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
|
2857
2869
|
}
|
2858
2870
|
|
2859
|
-
static void keepalive_watchdog_fired(void* arg,
|
2871
|
+
static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
|
2860
2872
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2861
2873
|
t->combiner->Run(
|
2862
2874
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2864,7 +2876,8 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
|
|
2864
2876
|
GRPC_ERROR_REF(error));
|
2865
2877
|
}
|
2866
2878
|
|
2867
|
-
static void keepalive_watchdog_fired_locked(void* arg,
|
2879
|
+
static void keepalive_watchdog_fired_locked(void* arg,
|
2880
|
+
grpc_error_handle error) {
|
2868
2881
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2869
2882
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2870
2883
|
if (error == GRPC_ERROR_NONE) {
|
@@ -2921,7 +2934,7 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
|
|
2921
2934
|
// BYTE STREAM
|
2922
2935
|
//
|
2923
2936
|
|
2924
|
-
static void reset_byte_stream(void* arg,
|
2937
|
+
static void reset_byte_stream(void* arg, grpc_error_handle error) {
|
2925
2938
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
|
2926
2939
|
s->pending_byte_stream = false;
|
2927
2940
|
if (error == GRPC_ERROR_NONE) {
|
@@ -2952,8 +2965,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream(
|
|
2952
2965
|
stream->byte_stream_error = GRPC_ERROR_NONE;
|
2953
2966
|
}
|
2954
2967
|
|
2955
|
-
void Chttp2IncomingByteStream::OrphanLocked(
|
2956
|
-
|
2968
|
+
void Chttp2IncomingByteStream::OrphanLocked(
|
2969
|
+
void* arg, grpc_error_handle /*error_ignored*/) {
|
2957
2970
|
Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
|
2958
2971
|
grpc_chttp2_stream* s = bs->stream_;
|
2959
2972
|
grpc_chttp2_transport* t = s->t;
|
@@ -2972,7 +2985,7 @@ void Chttp2IncomingByteStream::Orphan() {
|
|
2972
2985
|
}
|
2973
2986
|
|
2974
2987
|
void Chttp2IncomingByteStream::NextLocked(void* arg,
|
2975
|
-
|
2988
|
+
grpc_error_handle /*error_ignored*/) {
|
2976
2989
|
Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
|
2977
2990
|
grpc_chttp2_transport* t = bs->transport_;
|
2978
2991
|
grpc_chttp2_stream* s = bs->stream_;
|
@@ -3042,9 +3055,9 @@ void Chttp2IncomingByteStream::MaybeCreateStreamDecompressionCtx() {
|
|
3042
3055
|
}
|
3043
3056
|
}
|
3044
3057
|
|
3045
|
-
|
3058
|
+
grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
3046
3059
|
GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
|
3047
|
-
|
3060
|
+
grpc_error_handle error;
|
3048
3061
|
if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
|
3049
3062
|
if (!stream_->unprocessed_incoming_frames_decompressed &&
|
3050
3063
|
stream_->stream_decompression_method !=
|
@@ -3087,7 +3100,7 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
|
3087
3100
|
return GRPC_ERROR_NONE;
|
3088
3101
|
}
|
3089
3102
|
|
3090
|
-
void Chttp2IncomingByteStream::PublishError(
|
3103
|
+
void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
|
3091
3104
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
3092
3105
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, stream_->on_next,
|
3093
3106
|
GRPC_ERROR_REF(error));
|
@@ -3097,10 +3110,10 @@ void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
|
|
3097
3110
|
grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
|
3098
3111
|
}
|
3099
3112
|
|
3100
|
-
|
3101
|
-
|
3113
|
+
grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
|
3114
|
+
grpc_slice* slice_out) {
|
3102
3115
|
if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
|
3103
|
-
|
3116
|
+
grpc_error_handle error =
|
3104
3117
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
|
3105
3118
|
transport_->combiner->Run(&stream_->reset_byte_stream,
|
3106
3119
|
GRPC_ERROR_REF(error));
|
@@ -3115,8 +3128,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
|
|
3115
3128
|
}
|
3116
3129
|
}
|
3117
3130
|
|
3118
|
-
|
3119
|
-
|
3131
|
+
grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
|
3132
|
+
bool reset_on_error) {
|
3120
3133
|
if (error == GRPC_ERROR_NONE) {
|
3121
3134
|
if (remaining_bytes_ != 0) {
|
3122
3135
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
|
@@ -3130,7 +3143,7 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
|
|
3130
3143
|
return error;
|
3131
3144
|
}
|
3132
3145
|
|
3133
|
-
void Chttp2IncomingByteStream::Shutdown(
|
3146
|
+
void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
|
3134
3147
|
GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
|
3135
3148
|
}
|
3136
3149
|
|
@@ -3162,14 +3175,14 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
|
|
3162
3175
|
}
|
3163
3176
|
}
|
3164
3177
|
|
3165
|
-
static void benign_reclaimer(void* arg,
|
3178
|
+
static void benign_reclaimer(void* arg, grpc_error_handle error) {
|
3166
3179
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3167
3180
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
|
3168
3181
|
benign_reclaimer_locked, t, nullptr),
|
3169
3182
|
GRPC_ERROR_REF(error));
|
3170
3183
|
}
|
3171
3184
|
|
3172
|
-
static void benign_reclaimer_locked(void* arg,
|
3185
|
+
static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
|
3173
3186
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3174
3187
|
if (error == GRPC_ERROR_NONE &&
|
3175
3188
|
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
@@ -3199,14 +3212,14 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3199
3212
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
|
3200
3213
|
}
|
3201
3214
|
|
3202
|
-
static void destructive_reclaimer(void* arg,
|
3215
|
+
static void destructive_reclaimer(void* arg, grpc_error_handle error) {
|
3203
3216
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3204
3217
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
|
3205
3218
|
destructive_reclaimer_locked, t, nullptr),
|
3206
3219
|
GRPC_ERROR_REF(error));
|
3207
3220
|
}
|
3208
3221
|
|
3209
|
-
static void destructive_reclaimer_locked(void* arg,
|
3222
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
|
3210
3223
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3211
3224
|
size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
|
3212
3225
|
t->destructive_reclaimer_registered = false;
|