grpc 1.37.1 → 1.40.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 +112 -59
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +48 -0
- data/include/grpc/event_engine/event_engine.h +330 -0
- data/include/grpc/event_engine/port.h +41 -0
- data/include/grpc/event_engine/slice_allocator.h +66 -0
- data/include/grpc/grpc.h +11 -4
- data/include/grpc/grpc_security.h +32 -0
- data/include/grpc/grpc_security_constants.h +15 -0
- data/include/grpc/impl/codegen/grpc_types.h +44 -19
- data/include/grpc/impl/codegen/port_platform.h +46 -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 +975 -3282
- data/src/core/ext/filters/client_channel/client_channel.h +513 -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 +20 -7
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +28 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +30 -29
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +53 -51
- 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 +14 -23
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +16 -16
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -17
- 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 +17 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +53 -65
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +36 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +33 -55
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +151 -163
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +70 -46
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -12
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +20 -13
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +158 -102
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2598 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- data/src/core/ext/filters/client_channel/server_address.cc +1 -1
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_call_data.h +45 -5
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
- data/src/core/ext/filters/client_channel/subchannel.h +7 -6
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +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 +33 -23
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +3 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +49 -46
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +5 -4
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +66 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +141 -126
- 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 +9 -9
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +15 -16
- 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 +11 -10
- 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 +652 -736
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +195 -74
- 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 +33 -28
- data/src/core/ext/transport/chttp2/transport/parsing.cc +129 -106
- data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +72 -60
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +56 -35
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +180 -76
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +97 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +45 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +67 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +66 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +227 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +32 -24
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -73
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +8 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +27 -19
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +57 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +29 -17
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +15 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +85 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +274 -91
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +11 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +33 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +115 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +1 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +82 -66
- data/src/core/ext/upb-generated/validate/validate.upb.h +220 -124
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +15 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +53 -52
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +318 -277
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +437 -410
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +198 -170
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +219 -163
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +29 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +135 -125
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +131 -123
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +32 -24
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +69 -55
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +684 -664
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +441 -375
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +122 -114
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +112 -79
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +35 -32
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +182 -160
- 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 +665 -317
- data/src/core/ext/xds/xds_api.h +52 -14
- data/src/core/ext/xds/xds_bootstrap.cc +101 -160
- 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 +370 -215
- data/src/core/ext/xds/xds_client.h +38 -28
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- data/src/core/ext/xds/xds_http_filters.cc +3 -2
- data/src/core/ext/xds/xds_http_filters.h +3 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +16 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +16 -11
- data/src/core/lib/channel/call_tracer.h +85 -0
- data/src/core/lib/channel/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +11 -10
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +21 -13
- data/src/core/lib/channel/channelz.h +3 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/context.h +3 -0
- data/src/core/lib/channel/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- data/src/core/lib/channel/status_util.h +4 -0
- data/src/core/lib/compression/stream_compression.h +1 -1
- data/src/core/lib/compression/stream_compression_gzip.h +1 -1
- data/src/core/lib/compression/stream_compression_identity.h +1 -1
- data/src/core/lib/debug/stats.h +1 -1
- data/src/core/lib/event_engine/endpoint_config.cc +46 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -2
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +183 -0
- data/src/core/lib/gprpp/sync.h +2 -30
- 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 +8 -10
- data/src/core/lib/iomgr/buffer_list.h +4 -5
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +168 -61
- data/src/core/lib/iomgr/error.h +217 -106
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +5 -5
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
- data/src/core/lib/iomgr/event_engine/closure.h +33 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
- data/src/core/lib/iomgr/exec_ctx.cc +12 -4
- data/src/core/lib/iomgr/exec_ctx.h +4 -5
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
- data/src/core/lib/iomgr/executor/threadpool.h +2 -2
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +3 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -12
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +7 -7
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_uv.cc +3 -1
- data/src/core/lib/iomgr/pollset_uv.h +5 -1
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +7 -5
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +8 -4
- data/src/core/lib/iomgr/resolve_address.h +12 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +13 -10
- data/src/core/lib/iomgr/sockaddr.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +15 -2
- data/src/core/lib/iomgr/socket_mutator.h +26 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +24 -22
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +22 -19
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +7 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +78 -73
- data/src/core/lib/iomgr/tcp_posix.h +8 -0
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +26 -25
- data/src/core/lib/iomgr/tcp_server_posix.cc +29 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -18
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +25 -23
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer.h +6 -1
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +6 -6
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- 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 +5 -6
- data/src/core/lib/matchers/matchers.cc +46 -58
- data/src/core/lib/matchers/matchers.h +30 -29
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
- data/src/core/lib/security/authorization/evaluate_args.h +91 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -10
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +68 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -9
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +27 -4
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +60 -76
- 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 +45 -36
- data/src/core/lib/security/transport/server_auth_filter.cc +17 -18
- 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/slice/slice_internal.h +1 -0
- data/src/core/lib/surface/call.cc +72 -52
- data/src/core/lib/surface/call.h +13 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +68 -69
- data/src/core/lib/surface/completion_queue.h +3 -2
- data/src/core/lib/surface/completion_queue_factory.cc +1 -2
- data/src/core/lib/surface/init.cc +1 -3
- data/src/core/lib/surface/init.h +10 -1
- data/src/core/lib/surface/lame_client.cc +11 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +31 -23
- data/src/core/lib/surface/server.h +19 -18
- 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 +2 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +21 -10
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +37 -37
- data/src/core/lib/transport/metadata_batch.h +19 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +6 -4
- data/src/core/lib/transport/transport_op_string.cc +6 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/crypt/gsec.h +6 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +11 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +483 -461
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +367 -315
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +47 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +20 -49
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +283 -85
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +13 -19
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +445 -152
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -1
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +66 -30
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +154 -24
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +414 -135
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +51 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +664 -702
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +65 -7
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +213 -118
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +77 -195
- metadata +116 -51
- data/src/core/lib/gpr/arena.h +0 -47
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -34,11 +34,11 @@ namespace grpc_core {
|
|
34
34
|
// added to the server. Takes ownership of the args. Caller takes ownership of
|
35
35
|
// returned args. On failure, the error parameter will be set.
|
36
36
|
using Chttp2ServerArgsModifier =
|
37
|
-
std::function<grpc_channel_args*(grpc_channel_args*,
|
37
|
+
std::function<grpc_channel_args*(grpc_channel_args*, grpc_error_handle*)>;
|
38
38
|
|
39
39
|
/// Adds a port to \a server. Sets \a port_num to the port number.
|
40
40
|
/// Takes ownership of \a args.
|
41
|
-
|
41
|
+
grpc_error_handle Chttp2ServerAddPort(
|
42
42
|
Server* server, const char* addr, grpc_channel_args* args,
|
43
43
|
Chttp2ServerArgsModifier connection_args_modifier, int* port_num);
|
44
44
|
|
@@ -30,7 +30,7 @@
|
|
30
30
|
namespace {
|
31
31
|
|
32
32
|
grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
|
33
|
-
|
33
|
+
grpc_error_handle* /*error*/) {
|
34
34
|
return args;
|
35
35
|
}
|
36
36
|
|
@@ -41,13 +41,12 @@ int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) {
|
|
41
41
|
int port_num = 0;
|
42
42
|
GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2,
|
43
43
|
(server, addr));
|
44
|
-
|
44
|
+
grpc_error_handle err = grpc_core::Chttp2ServerAddPort(
|
45
45
|
server->core_server.get(), addr,
|
46
46
|
grpc_channel_args_copy(server->core_server->channel_args()),
|
47
47
|
ModifyArgsForConnection, &port_num);
|
48
48
|
if (err != GRPC_ERROR_NONE) {
|
49
|
-
|
50
|
-
gpr_log(GPR_ERROR, "%s", msg);
|
49
|
+
gpr_log(GPR_ERROR, "%s", grpc_error_std_string(err).c_str());
|
51
50
|
|
52
51
|
GRPC_ERROR_UNREF(err);
|
53
52
|
}
|
@@ -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
|
}
|
@@ -68,8 +68,9 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
|
|
68
68
|
|
69
69
|
#else // !GPR_SUPPORT_CHANNELS_FROM_FD
|
70
70
|
|
71
|
-
void grpc_server_add_insecure_channel_from_fd(grpc_server* server
|
72
|
-
void* reserved
|
71
|
+
void grpc_server_add_insecure_channel_from_fd(grpc_server* /* server */,
|
72
|
+
void* /* reserved */,
|
73
|
+
int /* fd */) {
|
73
74
|
GPR_ASSERT(0);
|
74
75
|
}
|
75
76
|
|
@@ -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
|
}
|
@@ -146,7 +146,7 @@ bool grpc_base64_decode_partial(struct grpc_base64_decode_context* ctx) {
|
|
146
146
|
switch (input_tail) {
|
147
147
|
case 3:
|
148
148
|
ctx->output_cur[1] = COMPOSE_OUTPUT_BYTE_1(ctx->input_cur);
|
149
|
-
|
149
|
+
ABSL_FALLTHROUGH_INTENDED;
|
150
150
|
case 2:
|
151
151
|
ctx->output_cur[0] = COMPOSE_OUTPUT_BYTE_0(ctx->input_cur);
|
152
152
|
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#include <grpc/support/port_platform.h>
|
15
|
+
|
16
|
+
#include "grpc/event_engine/slice_allocator.h"
|
17
|
+
|
18
|
+
#include <functional>
|
19
|
+
|
20
|
+
#include "absl/memory/memory.h"
|
21
|
+
#include "absl/status/status.h"
|
22
|
+
|
23
|
+
#include "src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h"
|
24
|
+
#include "src/core/lib/iomgr/resource_quota.h"
|
25
|
+
|
26
|
+
namespace grpc_event_engine {
|
27
|
+
namespace experimental {
|
28
|
+
|
29
|
+
Chttp2SliceAllocator::Chttp2SliceAllocator(grpc_resource_user* user)
|
30
|
+
: resource_user_(user) {}
|
31
|
+
|
32
|
+
Chttp2SliceAllocator::~Chttp2SliceAllocator() {
|
33
|
+
if (resource_user_ != nullptr) {
|
34
|
+
grpc_resource_user_unref(resource_user_);
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
absl::Status Chttp2SliceAllocator::Allocate(
|
39
|
+
size_t size, SliceBuffer* dest, SliceAllocator::AllocateCallback cb) {
|
40
|
+
// TODO(hork): merge the implementation from the uv-ee branch.
|
41
|
+
(void)size;
|
42
|
+
(void)dest;
|
43
|
+
(void)cb;
|
44
|
+
return absl::OkStatus();
|
45
|
+
}
|
46
|
+
|
47
|
+
Chttp2SliceAllocatorFactory::Chttp2SliceAllocatorFactory(
|
48
|
+
grpc_resource_quota* quota)
|
49
|
+
: resource_quota_(quota) {
|
50
|
+
grpc_resource_quota_ref_internal(resource_quota_);
|
51
|
+
}
|
52
|
+
|
53
|
+
Chttp2SliceAllocatorFactory::~Chttp2SliceAllocatorFactory() {
|
54
|
+
if (resource_quota_ != nullptr) {
|
55
|
+
grpc_resource_quota_unref_internal(resource_quota_);
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
std::unique_ptr<SliceAllocator>
|
60
|
+
Chttp2SliceAllocatorFactory::CreateSliceAllocator(absl::string_view peer_name) {
|
61
|
+
return absl::make_unique<Chttp2SliceAllocator>(
|
62
|
+
grpc_resource_user_create(resource_quota_, peer_name.data()));
|
63
|
+
}
|
64
|
+
|
65
|
+
} // namespace experimental
|
66
|
+
} // namespace grpc_event_engine
|
@@ -0,0 +1,74 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CHTTP2_SLICE_ALLOCATOR_H
|
15
|
+
#define GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CHTTP2_SLICE_ALLOCATOR_H
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include "grpc/event_engine/slice_allocator.h"
|
20
|
+
|
21
|
+
#include <functional>
|
22
|
+
|
23
|
+
#include "absl/status/status.h"
|
24
|
+
|
25
|
+
#include "src/core/lib/iomgr/resource_quota.h"
|
26
|
+
|
27
|
+
namespace grpc_event_engine {
|
28
|
+
namespace experimental {
|
29
|
+
|
30
|
+
class Chttp2SliceAllocator
|
31
|
+
: public grpc_event_engine::experimental::SliceAllocator {
|
32
|
+
public:
|
33
|
+
/// gRPC-internal constructor. Takes ownership of a resource_user ref from the
|
34
|
+
/// caller.
|
35
|
+
explicit Chttp2SliceAllocator(grpc_resource_user* user);
|
36
|
+
// Not copyable
|
37
|
+
Chttp2SliceAllocator(Chttp2SliceAllocator& other) = delete;
|
38
|
+
Chttp2SliceAllocator& operator=(const Chttp2SliceAllocator& other) = delete;
|
39
|
+
// Not Moveable
|
40
|
+
Chttp2SliceAllocator(Chttp2SliceAllocator&& other) = delete;
|
41
|
+
Chttp2SliceAllocator& operator=(Chttp2SliceAllocator&& other) = delete;
|
42
|
+
~Chttp2SliceAllocator() override;
|
43
|
+
absl::Status Allocate(size_t size, SliceBuffer* dest,
|
44
|
+
SliceAllocator::AllocateCallback cb) override;
|
45
|
+
|
46
|
+
private:
|
47
|
+
grpc_resource_user* resource_user_;
|
48
|
+
};
|
49
|
+
|
50
|
+
class Chttp2SliceAllocatorFactory
|
51
|
+
: public grpc_event_engine::experimental::SliceAllocatorFactory {
|
52
|
+
public:
|
53
|
+
// gRPC-internal constructor
|
54
|
+
explicit Chttp2SliceAllocatorFactory(grpc_resource_quota* quota);
|
55
|
+
// Not copyable
|
56
|
+
Chttp2SliceAllocatorFactory(Chttp2SliceAllocatorFactory& other) = delete;
|
57
|
+
Chttp2SliceAllocatorFactory& operator=(
|
58
|
+
const Chttp2SliceAllocatorFactory& other) = delete;
|
59
|
+
// Not Moveable
|
60
|
+
Chttp2SliceAllocatorFactory(Chttp2SliceAllocatorFactory&& other) = delete;
|
61
|
+
Chttp2SliceAllocatorFactory& operator=(Chttp2SliceAllocatorFactory&& other) =
|
62
|
+
delete;
|
63
|
+
~Chttp2SliceAllocatorFactory() override;
|
64
|
+
std::unique_ptr<SliceAllocator> CreateSliceAllocator(
|
65
|
+
absl::string_view peer_name) override;
|
66
|
+
|
67
|
+
private:
|
68
|
+
grpc_resource_quota* resource_quota_;
|
69
|
+
};
|
70
|
+
|
71
|
+
} // namespace experimental
|
72
|
+
} // namespace grpc_event_engine
|
73
|
+
|
74
|
+
#endif // GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CHTTP2_SLICE_ALLOCATOR_H
|
@@ -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
|
@@ -212,7 +215,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
212
215
|
cl = nullptr;
|
213
216
|
|
214
217
|
grpc_slice_buffer_destroy_internal(&read_buffer);
|
215
|
-
grpc_chttp2_hpack_parser_destroy(&hpack_parser);
|
216
218
|
grpc_chttp2_goaway_parser_destroy(&goaway_parser);
|
217
219
|
|
218
220
|
for (i = 0; i < STREAM_LIST_COUNT; i++) {
|
@@ -482,7 +484,6 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
482
484
|
settings[j][i] = grpc_chttp2_settings_parameters[i].default_value;
|
483
485
|
}
|
484
486
|
}
|
485
|
-
grpc_chttp2_hpack_parser_init(&hpack_parser);
|
486
487
|
grpc_chttp2_goaway_parser_init(&goaway_parser);
|
487
488
|
|
488
489
|
// configure http2 the way we like it
|
@@ -534,7 +535,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
534
535
|
}
|
535
536
|
}
|
536
537
|
|
537
|
-
static void destroy_transport_locked(void* tp,
|
538
|
+
static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
|
538
539
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
539
540
|
t->destroying = 1;
|
540
541
|
close_transport_locked(
|
@@ -552,7 +553,7 @@ static void destroy_transport(grpc_transport* gt) {
|
|
552
553
|
}
|
553
554
|
|
554
555
|
static void close_transport_locked(grpc_chttp2_transport* t,
|
555
|
-
|
556
|
+
grpc_error_handle error) {
|
556
557
|
end_all_the_calls(t, GRPC_ERROR_REF(error));
|
557
558
|
cancel_pings(t, GRPC_ERROR_REF(error));
|
558
559
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
@@ -561,7 +562,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
561
562
|
GRPC_STATUS_UNAVAILABLE);
|
562
563
|
}
|
563
564
|
if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
564
|
-
if (t->close_transport_on_writes_finished ==
|
565
|
+
if (t->close_transport_on_writes_finished == GRPC_ERROR_NONE) {
|
565
566
|
t->close_transport_on_writes_finished =
|
566
567
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
567
568
|
"Delayed close due to in-progress write");
|
@@ -731,7 +732,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs,
|
|
731
732
|
return 0;
|
732
733
|
}
|
733
734
|
|
734
|
-
static void destroy_stream_locked(void* sp,
|
735
|
+
static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
|
735
736
|
GPR_TIMER_SCOPE("destroy_stream", 0);
|
736
737
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
|
737
738
|
s->~grpc_chttp2_stream();
|
@@ -818,9 +819,9 @@ static void set_write_state(grpc_chttp2_transport* t,
|
|
818
819
|
// from peer while we had some pending writes)
|
819
820
|
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
820
821
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
|
821
|
-
if (t->close_transport_on_writes_finished !=
|
822
|
-
|
823
|
-
t->close_transport_on_writes_finished =
|
822
|
+
if (t->close_transport_on_writes_finished != GRPC_ERROR_NONE) {
|
823
|
+
grpc_error_handle err = t->close_transport_on_writes_finished;
|
824
|
+
t->close_transport_on_writes_finished = GRPC_ERROR_NONE;
|
824
825
|
close_transport_locked(t, err);
|
825
826
|
}
|
826
827
|
}
|
@@ -951,7 +952,8 @@ static const char* begin_writing_desc(bool partial) {
|
|
951
952
|
}
|
952
953
|
}
|
953
954
|
|
954
|
-
static void write_action_begin_locked(void* gt,
|
955
|
+
static void write_action_begin_locked(void* gt,
|
956
|
+
grpc_error_handle /*error_ignored*/) {
|
955
957
|
GPR_TIMER_SCOPE("write_action_begin_locked", 0);
|
956
958
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
957
959
|
GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
|
@@ -990,7 +992,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
990
992
|
}
|
991
993
|
}
|
992
994
|
|
993
|
-
static void write_action(void* gt,
|
995
|
+
static void write_action(void* gt, grpc_error_handle /*error*/) {
|
994
996
|
GPR_TIMER_SCOPE("write_action", 0);
|
995
997
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
996
998
|
void* cl = t->cl;
|
@@ -1002,7 +1004,7 @@ static void write_action(void* gt, grpc_error* /*error*/) {
|
|
1002
1004
|
cl);
|
1003
1005
|
}
|
1004
1006
|
|
1005
|
-
static void write_action_end(void* tp,
|
1007
|
+
static void write_action_end(void* tp, grpc_error_handle error) {
|
1006
1008
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1007
1009
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
|
1008
1010
|
write_action_end_locked, t, nullptr),
|
@@ -1011,7 +1013,7 @@ static void write_action_end(void* tp, grpc_error* error) {
|
|
1011
1013
|
|
1012
1014
|
// Callback from the grpc_endpoint after bytes have been written by calling
|
1013
1015
|
// sendmsg
|
1014
|
-
static void write_action_end_locked(void* tp,
|
1016
|
+
static void write_action_end_locked(void* tp, grpc_error_handle error) {
|
1015
1017
|
GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
|
1016
1018
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1017
1019
|
|
@@ -1100,7 +1102,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1100
1102
|
// received a GOAWAY with a non NO_ERROR code.
|
1101
1103
|
if (goaway_error != GRPC_HTTP2_NO_ERROR) {
|
1102
1104
|
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
|
1103
|
-
goaway_error,
|
1105
|
+
goaway_error, grpc_error_std_string(t->goaway_error).c_str());
|
1104
1106
|
}
|
1105
1107
|
absl::Status status = grpc_error_to_absl_status(t->goaway_error);
|
1106
1108
|
// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
|
@@ -1206,7 +1208,8 @@ static void null_then_sched_closure(grpc_closure** closure) {
|
|
1206
1208
|
void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
1207
1209
|
grpc_chttp2_stream* /*s*/,
|
1208
1210
|
grpc_closure** pclosure,
|
1209
|
-
|
1211
|
+
grpc_error_handle error,
|
1212
|
+
const char* desc) {
|
1210
1213
|
grpc_closure* closure = *pclosure;
|
1211
1214
|
*pclosure = nullptr;
|
1212
1215
|
if (closure == nullptr) {
|
@@ -1215,7 +1218,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1215
1218
|
}
|
1216
1219
|
closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
|
1217
1220
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1218
|
-
const char* errstr = grpc_error_string(error);
|
1219
1221
|
gpr_log(
|
1220
1222
|
GPR_INFO,
|
1221
1223
|
"complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
|
@@ -1225,7 +1227,8 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1225
1227
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1226
1228
|
static_cast<int>(closure->next_data.scratch %
|
1227
1229
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1228
|
-
desc,
|
1230
|
+
desc, grpc_error_std_string(error).c_str(),
|
1231
|
+
write_state_name(t->write_state));
|
1229
1232
|
}
|
1230
1233
|
if (error != GRPC_ERROR_NONE) {
|
1231
1234
|
if (closure->error_data.error == GRPC_ERROR_NONE) {
|
@@ -1283,7 +1286,6 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1283
1286
|
if (s->fetching_send_message == nullptr) {
|
1284
1287
|
// Stream was cancelled before message fetch completed
|
1285
1288
|
abort(); /* TODO(ctiller): what cleanup here? */
|
1286
|
-
return; /* early out */
|
1287
1289
|
}
|
1288
1290
|
if (s->fetched_send_message_length == s->fetching_send_message->length()) {
|
1289
1291
|
int64_t notify_offset = s->next_message_end_offset;
|
@@ -1314,7 +1316,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1314
1316
|
UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
|
1315
1317
|
::complete_fetch, s,
|
1316
1318
|
grpc_schedule_on_exec_ctx))) {
|
1317
|
-
|
1319
|
+
grpc_error_handle error =
|
1320
|
+
s->fetching_send_message->Pull(&s->fetching_slice);
|
1318
1321
|
if (error != GRPC_ERROR_NONE) {
|
1319
1322
|
s->fetching_send_message.reset();
|
1320
1323
|
grpc_chttp2_cancel_stream(t, s, error);
|
@@ -1325,14 +1328,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1325
1328
|
}
|
1326
1329
|
}
|
1327
1330
|
|
1328
|
-
static void complete_fetch(void* gs,
|
1331
|
+
static void complete_fetch(void* gs, grpc_error_handle error) {
|
1329
1332
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
|
1330
1333
|
s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
|
1331
1334
|
::complete_fetch_locked, s, nullptr),
|
1332
1335
|
GRPC_ERROR_REF(error));
|
1333
1336
|
}
|
1334
1337
|
|
1335
|
-
static void complete_fetch_locked(void* gs,
|
1338
|
+
static void complete_fetch_locked(void* gs, grpc_error_handle error) {
|
1336
1339
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
|
1337
1340
|
grpc_chttp2_transport* t = s->t;
|
1338
1341
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1362,7 +1365,7 @@ static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
|
|
1362
1365
|
}
|
1363
1366
|
|
1364
1367
|
static void perform_stream_op_locked(void* stream_op,
|
1365
|
-
|
1368
|
+
grpc_error_handle /*error_ignored*/) {
|
1366
1369
|
GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
|
1367
1370
|
|
1368
1371
|
grpc_transport_stream_op_batch* op =
|
@@ -1576,6 +1579,8 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1576
1579
|
GPR_ASSERT(!s->pending_byte_stream);
|
1577
1580
|
s->recv_message_ready = op_payload->recv_message.recv_message_ready;
|
1578
1581
|
s->recv_message = op_payload->recv_message.recv_message;
|
1582
|
+
s->call_failed_before_recv_message =
|
1583
|
+
op_payload->recv_message.call_failed_before_recv_message;
|
1579
1584
|
if (s->id != 0) {
|
1580
1585
|
if (!s->read_closed) {
|
1581
1586
|
before = s->frame_storage.length +
|
@@ -1585,8 +1590,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1585
1590
|
grpc_chttp2_maybe_complete_recv_message(t, s);
|
1586
1591
|
if (s->id != 0) {
|
1587
1592
|
if (!s->read_closed && s->frame_storage.length == 0) {
|
1588
|
-
size_t after = s->
|
1589
|
-
s->unprocessed_incoming_frames_buffer_cached_length;
|
1593
|
+
size_t after = s->unprocessed_incoming_frames_buffer_cached_length;
|
1590
1594
|
s->flow_control->IncomingByteStreamUpdate(GRPC_HEADER_SIZE_IN_BYTES,
|
1591
1595
|
before - after);
|
1592
1596
|
grpc_chttp2_act_on_flowctl_action(s->flow_control->MakeAction(), t, s);
|
@@ -1646,7 +1650,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1646
1650
|
GRPC_ERROR_NONE);
|
1647
1651
|
}
|
1648
1652
|
|
1649
|
-
static void cancel_pings(grpc_chttp2_transport* t,
|
1653
|
+
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1650
1654
|
// callback remaining pings: they're not allowed to call into the transport,
|
1651
1655
|
// and maybe they hold resources that need to be freed
|
1652
1656
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
@@ -1713,14 +1717,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1713
1717
|
GRPC_ERROR_NONE);
|
1714
1718
|
}
|
1715
1719
|
|
1716
|
-
void grpc_chttp2_retry_initiate_ping(void* tp,
|
1720
|
+
void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
|
1717
1721
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1718
1722
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
|
1719
1723
|
retry_initiate_ping_locked, t, nullptr),
|
1720
1724
|
GRPC_ERROR_REF(error));
|
1721
1725
|
}
|
1722
1726
|
|
1723
|
-
static void retry_initiate_ping_locked(void* tp,
|
1727
|
+
static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
|
1724
1728
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1725
1729
|
t->ping_state.is_delayed_ping_timer_set = false;
|
1726
1730
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1743,10 +1747,10 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
|
1743
1747
|
}
|
1744
1748
|
}
|
1745
1749
|
|
1746
|
-
static void send_goaway(grpc_chttp2_transport* t,
|
1750
|
+
static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1747
1751
|
// We want to log this irrespective of whether http tracing is enabled
|
1748
1752
|
gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
|
1749
|
-
|
1753
|
+
grpc_error_std_string(error).c_str());
|
1750
1754
|
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
|
1751
1755
|
grpc_http2_error_code http_error;
|
1752
1756
|
grpc_slice slice;
|
@@ -1784,12 +1788,12 @@ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
|
|
1784
1788
|
}
|
1785
1789
|
|
1786
1790
|
static void perform_transport_op_locked(void* stream_op,
|
1787
|
-
|
1791
|
+
grpc_error_handle /*error_ignored*/) {
|
1788
1792
|
grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
|
1789
1793
|
grpc_chttp2_transport* t =
|
1790
1794
|
static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
|
1791
1795
|
|
1792
|
-
if (op->goaway_error) {
|
1796
|
+
if (op->goaway_error != GRPC_ERROR_NONE) {
|
1793
1797
|
send_goaway(t, op->goaway_error);
|
1794
1798
|
}
|
1795
1799
|
|
@@ -1864,7 +1868,7 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
|
1864
1868
|
|
1865
1869
|
void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
|
1866
1870
|
grpc_chttp2_stream* s) {
|
1867
|
-
|
1871
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1868
1872
|
if (s->recv_message_ready != nullptr) {
|
1869
1873
|
*s->recv_message = nullptr;
|
1870
1874
|
if (s->final_metadata_requested && s->seen_error) {
|
@@ -1941,6 +1945,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
|
|
1941
1945
|
null_then_sched_closure(&s->recv_message_ready);
|
1942
1946
|
} else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
|
1943
1947
|
*s->recv_message = nullptr;
|
1948
|
+
if (s->call_failed_before_recv_message != nullptr) {
|
1949
|
+
*s->call_failed_before_recv_message =
|
1950
|
+
(s->published_metadata[1] != GRPC_METADATA_PUBLISHED_AT_CLOSE);
|
1951
|
+
}
|
1944
1952
|
null_then_sched_closure(&s->recv_message_ready);
|
1945
1953
|
}
|
1946
1954
|
GRPC_ERROR_UNREF(error);
|
@@ -2014,7 +2022,7 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
2014
2022
|
}
|
2015
2023
|
|
2016
2024
|
static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
2017
|
-
|
2025
|
+
grpc_error_handle error) {
|
2018
2026
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
2019
2027
|
grpc_chttp2_stream_map_delete(&t->stream_map, id));
|
2020
2028
|
GPR_DEBUG_ASSERT(s);
|
@@ -2057,7 +2065,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2057
2065
|
}
|
2058
2066
|
|
2059
2067
|
void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2060
|
-
|
2068
|
+
grpc_error_handle due_to_error) {
|
2061
2069
|
if (!t->is_client && !s->sent_trailing_metadata &&
|
2062
2070
|
grpc_error_has_clear_grpc_status(due_to_error)) {
|
2063
2071
|
close_from_api(t, s, due_to_error);
|
@@ -2081,7 +2089,7 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2081
2089
|
}
|
2082
2090
|
|
2083
2091
|
void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2084
|
-
|
2092
|
+
grpc_error_handle error) {
|
2085
2093
|
grpc_status_code status;
|
2086
2094
|
grpc_slice slice;
|
2087
2095
|
grpc_error_get_status(error, s->deadline, &status, &slice, nullptr, nullptr);
|
@@ -2118,7 +2126,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2118
2126
|
GRPC_ERROR_UNREF(error);
|
2119
2127
|
}
|
2120
2128
|
|
2121
|
-
static void add_error(
|
2129
|
+
static void add_error(grpc_error_handle error, grpc_error_handle* refs,
|
2130
|
+
size_t* nrefs) {
|
2122
2131
|
if (error == GRPC_ERROR_NONE) return;
|
2123
2132
|
for (size_t i = 0; i < *nrefs; i++) {
|
2124
2133
|
if (error == refs[i]) {
|
@@ -2129,14 +2138,15 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
|
|
2129
2138
|
++*nrefs;
|
2130
2139
|
}
|
2131
2140
|
|
2132
|
-
static
|
2133
|
-
|
2134
|
-
|
2141
|
+
static grpc_error_handle removal_error(grpc_error_handle extra_error,
|
2142
|
+
grpc_chttp2_stream* s,
|
2143
|
+
const char* main_error_msg) {
|
2144
|
+
grpc_error_handle refs[3];
|
2135
2145
|
size_t nrefs = 0;
|
2136
2146
|
add_error(s->read_closed_error, refs, &nrefs);
|
2137
2147
|
add_error(s->write_closed_error, refs, &nrefs);
|
2138
2148
|
add_error(extra_error, refs, &nrefs);
|
2139
|
-
|
2149
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2140
2150
|
if (nrefs > 0) {
|
2141
2151
|
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
|
2142
2152
|
refs, nrefs);
|
@@ -2146,7 +2156,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
|
|
2146
2156
|
}
|
2147
2157
|
|
2148
2158
|
static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2149
|
-
grpc_chttp2_write_cb** list,
|
2159
|
+
grpc_chttp2_write_cb** list,
|
2160
|
+
grpc_error_handle error) {
|
2150
2161
|
while (*list) {
|
2151
2162
|
grpc_chttp2_write_cb* cb = *list;
|
2152
2163
|
*list = cb->next;
|
@@ -2159,7 +2170,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2159
2170
|
}
|
2160
2171
|
|
2161
2172
|
void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
2162
|
-
grpc_chttp2_stream* s,
|
2173
|
+
grpc_chttp2_stream* s,
|
2174
|
+
grpc_error_handle error) {
|
2163
2175
|
error =
|
2164
2176
|
removal_error(error, s, "Pending writes failed due to stream closure");
|
2165
2177
|
s->send_initial_metadata = nullptr;
|
@@ -2183,10 +2195,10 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2183
2195
|
|
2184
2196
|
void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
2185
2197
|
grpc_chttp2_stream* s, int close_reads,
|
2186
|
-
int close_writes,
|
2198
|
+
int close_writes, grpc_error_handle error) {
|
2187
2199
|
if (s->read_closed && s->write_closed) {
|
2188
2200
|
// already closed, but we should still fake the status if needed.
|
2189
|
-
|
2201
|
+
grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
|
2190
2202
|
if (overall_error != GRPC_ERROR_NONE) {
|
2191
2203
|
grpc_chttp2_fake_status(t, s, overall_error);
|
2192
2204
|
}
|
@@ -2207,7 +2219,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2207
2219
|
}
|
2208
2220
|
if (s->read_closed && s->write_closed) {
|
2209
2221
|
became_closed = true;
|
2210
|
-
|
2222
|
+
grpc_error_handle overall_error =
|
2211
2223
|
removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
|
2212
2224
|
if (s->id != 0) {
|
2213
2225
|
remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
|
@@ -2236,7 +2248,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2236
2248
|
}
|
2237
2249
|
|
2238
2250
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2239
|
-
|
2251
|
+
grpc_error_handle error) {
|
2240
2252
|
grpc_slice hdr;
|
2241
2253
|
grpc_slice status_hdr;
|
2242
2254
|
grpc_slice http_status_hdr;
|
@@ -2394,7 +2406,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2394
2406
|
}
|
2395
2407
|
|
2396
2408
|
struct cancel_stream_cb_args {
|
2397
|
-
|
2409
|
+
grpc_error_handle error;
|
2398
2410
|
grpc_chttp2_transport* t;
|
2399
2411
|
};
|
2400
2412
|
|
@@ -2404,7 +2416,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
|
|
2404
2416
|
grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
|
2405
2417
|
}
|
2406
2418
|
|
2407
|
-
static void end_all_the_calls(grpc_chttp2_transport* t,
|
2419
|
+
static void end_all_the_calls(grpc_chttp2_transport* t,
|
2420
|
+
grpc_error_handle error) {
|
2408
2421
|
intptr_t http2_error;
|
2409
2422
|
// If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
|
2410
2423
|
if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
|
@@ -2430,7 +2443,7 @@ static void WithUrgency(grpc_chttp2_transport* t,
|
|
2430
2443
|
break;
|
2431
2444
|
case grpc_core::chttp2::FlowControlAction::Urgency::UPDATE_IMMEDIATELY:
|
2432
2445
|
grpc_chttp2_initiate_write(t, reason);
|
2433
|
-
|
2446
|
+
ABSL_FALLTHROUGH_INTENDED;
|
2434
2447
|
case grpc_core::chttp2::FlowControlAction::Urgency::QUEUE_UPDATE:
|
2435
2448
|
action();
|
2436
2449
|
break;
|
@@ -2458,15 +2471,15 @@ void grpc_chttp2_act_on_flowctl_action(
|
|
2458
2471
|
});
|
2459
2472
|
}
|
2460
2473
|
|
2461
|
-
static
|
2474
|
+
static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
|
2462
2475
|
grpc_http_parser parser;
|
2463
2476
|
size_t i = 0;
|
2464
|
-
|
2477
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2465
2478
|
grpc_http_response response;
|
2466
2479
|
|
2467
2480
|
grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
|
2468
2481
|
|
2469
|
-
|
2482
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
2470
2483
|
for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
|
2471
2484
|
parse_error =
|
2472
2485
|
grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
|
@@ -2487,34 +2500,34 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
|
|
2487
2500
|
return error;
|
2488
2501
|
}
|
2489
2502
|
|
2490
|
-
static void read_action(void* tp,
|
2503
|
+
static void read_action(void* tp, grpc_error_handle error) {
|
2491
2504
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2492
2505
|
t->combiner->Run(
|
2493
2506
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
|
2494
2507
|
GRPC_ERROR_REF(error));
|
2495
2508
|
}
|
2496
2509
|
|
2497
|
-
static void read_action_locked(void* tp,
|
2510
|
+
static void read_action_locked(void* tp, grpc_error_handle error) {
|
2498
2511
|
GPR_TIMER_SCOPE("reading_action_locked", 0);
|
2499
2512
|
|
2500
2513
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2501
2514
|
|
2502
2515
|
GRPC_ERROR_REF(error);
|
2503
2516
|
|
2504
|
-
|
2517
|
+
grpc_error_handle err = error;
|
2505
2518
|
if (err != GRPC_ERROR_NONE) {
|
2506
2519
|
err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
2507
2520
|
"Endpoint read failed", &err, 1),
|
2508
2521
|
GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
|
2509
2522
|
t->write_state);
|
2510
2523
|
}
|
2511
|
-
GPR_SWAP(
|
2524
|
+
GPR_SWAP(grpc_error_handle, err, error);
|
2512
2525
|
GRPC_ERROR_UNREF(err);
|
2513
2526
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2514
2527
|
GPR_TIMER_SCOPE("reading_action.parse", 0);
|
2515
2528
|
size_t i = 0;
|
2516
|
-
|
2517
|
-
|
2529
|
+
grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
|
2530
|
+
GRPC_ERROR_NONE};
|
2518
2531
|
for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
|
2519
2532
|
errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
|
2520
2533
|
}
|
@@ -2605,18 +2618,18 @@ void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
|
2605
2618
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
|
2606
2619
|
}
|
2607
2620
|
|
2608
|
-
static void start_bdp_ping(void* tp,
|
2621
|
+
static void start_bdp_ping(void* tp, grpc_error_handle error) {
|
2609
2622
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2610
2623
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
|
2611
2624
|
start_bdp_ping_locked, t, nullptr),
|
2612
2625
|
GRPC_ERROR_REF(error));
|
2613
2626
|
}
|
2614
2627
|
|
2615
|
-
static void start_bdp_ping_locked(void* tp,
|
2628
|
+
static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2616
2629
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2617
2630
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2618
2631
|
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
|
2619
|
-
|
2632
|
+
grpc_error_std_string(error).c_str());
|
2620
2633
|
}
|
2621
2634
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2622
2635
|
return;
|
@@ -2629,18 +2642,18 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2629
2642
|
t->bdp_ping_started = true;
|
2630
2643
|
}
|
2631
2644
|
|
2632
|
-
static void finish_bdp_ping(void* tp,
|
2645
|
+
static void finish_bdp_ping(void* tp, grpc_error_handle error) {
|
2633
2646
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2634
2647
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2635
2648
|
finish_bdp_ping_locked, t, nullptr),
|
2636
2649
|
GRPC_ERROR_REF(error));
|
2637
2650
|
}
|
2638
2651
|
|
2639
|
-
static void finish_bdp_ping_locked(void* tp,
|
2652
|
+
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2640
2653
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2641
2654
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2642
2655
|
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
|
2643
|
-
|
2656
|
+
grpc_error_std_string(error).c_str());
|
2644
2657
|
}
|
2645
2658
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2646
2659
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
@@ -2666,7 +2679,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2666
2679
|
&t->next_bdp_ping_timer_expired_locked);
|
2667
2680
|
}
|
2668
2681
|
|
2669
|
-
static void next_bdp_ping_timer_expired(void* tp,
|
2682
|
+
static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
|
2670
2683
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2671
2684
|
t->combiner->Run(
|
2672
2685
|
GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
|
@@ -2674,7 +2687,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
|
|
2674
2687
|
GRPC_ERROR_REF(error));
|
2675
2688
|
}
|
2676
2689
|
|
2677
|
-
static void next_bdp_ping_timer_expired_locked(void* tp,
|
2690
|
+
static void next_bdp_ping_timer_expired_locked(void* tp,
|
2691
|
+
grpc_error_handle error) {
|
2678
2692
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2679
2693
|
GPR_ASSERT(t->have_next_bdp_ping_timer);
|
2680
2694
|
t->have_next_bdp_ping_timer = false;
|
@@ -2750,14 +2764,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2750
2764
|
}
|
2751
2765
|
}
|
2752
2766
|
|
2753
|
-
static void init_keepalive_ping(void* arg,
|
2767
|
+
static void init_keepalive_ping(void* arg, grpc_error_handle error) {
|
2754
2768
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2755
2769
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
|
2756
2770
|
init_keepalive_ping_locked, t, nullptr),
|
2757
2771
|
GRPC_ERROR_REF(error));
|
2758
2772
|
}
|
2759
2773
|
|
2760
|
-
static void init_keepalive_ping_locked(void* arg,
|
2774
|
+
static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2761
2775
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2762
2776
|
GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
|
2763
2777
|
if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
|
@@ -2790,14 +2804,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2790
2804
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
|
2791
2805
|
}
|
2792
2806
|
|
2793
|
-
static void start_keepalive_ping(void* arg,
|
2807
|
+
static void start_keepalive_ping(void* arg, grpc_error_handle error) {
|
2794
2808
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2795
2809
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
2796
2810
|
start_keepalive_ping_locked, t, nullptr),
|
2797
2811
|
GRPC_ERROR_REF(error));
|
2798
2812
|
}
|
2799
2813
|
|
2800
|
-
static void start_keepalive_ping_locked(void* arg,
|
2814
|
+
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2801
2815
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2802
2816
|
if (error != GRPC_ERROR_NONE) {
|
2803
2817
|
return;
|
@@ -2818,14 +2832,14 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2818
2832
|
t->keepalive_ping_started = true;
|
2819
2833
|
}
|
2820
2834
|
|
2821
|
-
static void finish_keepalive_ping(void* arg,
|
2835
|
+
static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
|
2822
2836
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2823
2837
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2824
2838
|
finish_keepalive_ping_locked, t, nullptr),
|
2825
2839
|
GRPC_ERROR_REF(error));
|
2826
2840
|
}
|
2827
2841
|
|
2828
|
-
static void finish_keepalive_ping_locked(void* arg,
|
2842
|
+
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2829
2843
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2830
2844
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2831
2845
|
if (error == GRPC_ERROR_NONE) {
|
@@ -2856,7 +2870,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2856
2870
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
|
2857
2871
|
}
|
2858
2872
|
|
2859
|
-
static void keepalive_watchdog_fired(void* arg,
|
2873
|
+
static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
|
2860
2874
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2861
2875
|
t->combiner->Run(
|
2862
2876
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2864,7 +2878,8 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
|
|
2864
2878
|
GRPC_ERROR_REF(error));
|
2865
2879
|
}
|
2866
2880
|
|
2867
|
-
static void keepalive_watchdog_fired_locked(void* arg,
|
2881
|
+
static void keepalive_watchdog_fired_locked(void* arg,
|
2882
|
+
grpc_error_handle error) {
|
2868
2883
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2869
2884
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2870
2885
|
if (error == GRPC_ERROR_NONE) {
|
@@ -2921,7 +2936,7 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
|
|
2921
2936
|
// BYTE STREAM
|
2922
2937
|
//
|
2923
2938
|
|
2924
|
-
static void reset_byte_stream(void* arg,
|
2939
|
+
static void reset_byte_stream(void* arg, grpc_error_handle error) {
|
2925
2940
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
|
2926
2941
|
s->pending_byte_stream = false;
|
2927
2942
|
if (error == GRPC_ERROR_NONE) {
|
@@ -2952,8 +2967,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream(
|
|
2952
2967
|
stream->byte_stream_error = GRPC_ERROR_NONE;
|
2953
2968
|
}
|
2954
2969
|
|
2955
|
-
void Chttp2IncomingByteStream::OrphanLocked(
|
2956
|
-
|
2970
|
+
void Chttp2IncomingByteStream::OrphanLocked(
|
2971
|
+
void* arg, grpc_error_handle /*error_ignored*/) {
|
2957
2972
|
Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
|
2958
2973
|
grpc_chttp2_stream* s = bs->stream_;
|
2959
2974
|
grpc_chttp2_transport* t = s->t;
|
@@ -2972,7 +2987,7 @@ void Chttp2IncomingByteStream::Orphan() {
|
|
2972
2987
|
}
|
2973
2988
|
|
2974
2989
|
void Chttp2IncomingByteStream::NextLocked(void* arg,
|
2975
|
-
|
2990
|
+
grpc_error_handle /*error_ignored*/) {
|
2976
2991
|
Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
|
2977
2992
|
grpc_chttp2_transport* t = bs->transport_;
|
2978
2993
|
grpc_chttp2_stream* s = bs->stream_;
|
@@ -3042,9 +3057,9 @@ void Chttp2IncomingByteStream::MaybeCreateStreamDecompressionCtx() {
|
|
3042
3057
|
}
|
3043
3058
|
}
|
3044
3059
|
|
3045
|
-
|
3060
|
+
grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
3046
3061
|
GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
|
3047
|
-
|
3062
|
+
grpc_error_handle error;
|
3048
3063
|
if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
|
3049
3064
|
if (!stream_->unprocessed_incoming_frames_decompressed &&
|
3050
3065
|
stream_->stream_decompression_method !=
|
@@ -3087,7 +3102,7 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
|
3087
3102
|
return GRPC_ERROR_NONE;
|
3088
3103
|
}
|
3089
3104
|
|
3090
|
-
void Chttp2IncomingByteStream::PublishError(
|
3105
|
+
void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
|
3091
3106
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
3092
3107
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, stream_->on_next,
|
3093
3108
|
GRPC_ERROR_REF(error));
|
@@ -3097,10 +3112,10 @@ void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
|
|
3097
3112
|
grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
|
3098
3113
|
}
|
3099
3114
|
|
3100
|
-
|
3101
|
-
|
3115
|
+
grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
|
3116
|
+
grpc_slice* slice_out) {
|
3102
3117
|
if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
|
3103
|
-
|
3118
|
+
grpc_error_handle error =
|
3104
3119
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
|
3105
3120
|
transport_->combiner->Run(&stream_->reset_byte_stream,
|
3106
3121
|
GRPC_ERROR_REF(error));
|
@@ -3115,8 +3130,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
|
|
3115
3130
|
}
|
3116
3131
|
}
|
3117
3132
|
|
3118
|
-
|
3119
|
-
|
3133
|
+
grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
|
3134
|
+
bool reset_on_error) {
|
3120
3135
|
if (error == GRPC_ERROR_NONE) {
|
3121
3136
|
if (remaining_bytes_ != 0) {
|
3122
3137
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
|
@@ -3130,7 +3145,7 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
|
|
3130
3145
|
return error;
|
3131
3146
|
}
|
3132
3147
|
|
3133
|
-
void Chttp2IncomingByteStream::Shutdown(
|
3148
|
+
void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
|
3134
3149
|
GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
|
3135
3150
|
}
|
3136
3151
|
|
@@ -3162,14 +3177,14 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
|
|
3162
3177
|
}
|
3163
3178
|
}
|
3164
3179
|
|
3165
|
-
static void benign_reclaimer(void* arg,
|
3180
|
+
static void benign_reclaimer(void* arg, grpc_error_handle error) {
|
3166
3181
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3167
3182
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
|
3168
3183
|
benign_reclaimer_locked, t, nullptr),
|
3169
3184
|
GRPC_ERROR_REF(error));
|
3170
3185
|
}
|
3171
3186
|
|
3172
|
-
static void benign_reclaimer_locked(void* arg,
|
3187
|
+
static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
|
3173
3188
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3174
3189
|
if (error == GRPC_ERROR_NONE &&
|
3175
3190
|
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
@@ -3199,14 +3214,14 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3199
3214
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
|
3200
3215
|
}
|
3201
3216
|
|
3202
|
-
static void destructive_reclaimer(void* arg,
|
3217
|
+
static void destructive_reclaimer(void* arg, grpc_error_handle error) {
|
3203
3218
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3204
3219
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
|
3205
3220
|
destructive_reclaimer_locked, t, nullptr),
|
3206
3221
|
GRPC_ERROR_REF(error));
|
3207
3222
|
}
|
3208
3223
|
|
3209
|
-
static void destructive_reclaimer_locked(void* arg,
|
3224
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
|
3210
3225
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3211
3226
|
size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
|
3212
3227
|
t->destructive_reclaimer_registered = false;
|