grpc 1.50.0.pre1 → 1.51.0
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 +131 -42
- data/include/grpc/event_engine/event_engine.h +10 -3
- data/include/grpc/event_engine/slice_buffer.h +17 -0
- data/include/grpc/grpc.h +0 -10
- data/include/grpc/impl/codegen/grpc_types.h +1 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
- data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
- data/src/core/ext/filters/client_channel/client_channel.h +3 -4
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
- data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
- data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
- 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/native/dns_resolver.cc +2 -4
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
- data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
- data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
- data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
- data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
- data/src/core/ext/filters/client_channel/subchannel.h +2 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
- data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
- data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
- data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
- data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
- data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
- data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
- data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
- data/src/core/ext/xds/certificate_provider_store.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
- data/src/core/ext/xds/xds_api.cc +15 -68
- data/src/core/ext/xds/xds_api.h +3 -7
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
- data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
- data/src/core/ext/xds/xds_client.cc +122 -90
- data/src/core/ext/xds/xds_client.h +7 -2
- data/src/core/ext/xds/xds_client_grpc.cc +5 -24
- data/src/core/ext/xds/xds_cluster.cc +291 -183
- data/src/core/ext/xds/xds_cluster.h +11 -15
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
- data/src/core/ext/xds/xds_common_types.cc +208 -141
- data/src/core/ext/xds/xds_common_types.h +19 -13
- data/src/core/ext/xds/xds_endpoint.cc +214 -129
- data/src/core/ext/xds/xds_endpoint.h +4 -7
- data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
- data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
- data/src/core/ext/xds/xds_http_filters.cc +60 -73
- data/src/core/ext/xds/xds_http_filters.h +67 -19
- data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
- data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
- data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
- data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
- data/src/core/ext/xds/xds_listener.cc +459 -417
- data/src/core/ext/xds/xds_listener.h +43 -47
- data/src/core/ext/xds/xds_resource_type.h +3 -11
- data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
- data/src/core/ext/xds/xds_route_config.cc +94 -80
- data/src/core/ext/xds/xds_route_config.h +10 -10
- data/src/core/ext/xds/xds_routing.cc +2 -1
- data/src/core/ext/xds/xds_routing.h +2 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
- data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
- data/src/core/lib/address_utils/parse_address.cc +11 -10
- data/src/core/lib/channel/channel_args.h +16 -1
- data/src/core/lib/channel/channel_stack.cc +23 -20
- data/src/core/lib/channel/channel_stack.h +17 -4
- data/src/core/lib/channel/channel_stack_builder.cc +4 -7
- data/src/core/lib/channel/channel_stack_builder.h +14 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +4 -5
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/channel/connected_channel.cc +695 -35
- data/src/core/lib/channel/connected_channel.h +0 -4
- data/src/core/lib/channel/promise_based_filter.cc +1004 -140
- data/src/core/lib/channel/promise_based_filter.h +364 -87
- data/src/core/lib/compression/message_compress.cc +5 -5
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
- data/src/core/lib/debug/stats.cc +22 -119
- data/src/core/lib/debug/stats.h +29 -35
- data/src/core/lib/debug/stats_data.cc +224 -73
- data/src/core/lib/debug/stats_data.h +263 -122
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +38 -15
- data/src/core/lib/event_engine/default_event_engine.h +15 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/poller.h +10 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/slice.cc +7 -6
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/thread_pool.cc +106 -25
- data/src/core/lib/event_engine/thread_pool.h +32 -9
- data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
- data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
- data/src/core/lib/experiments/config.cc +1 -1
- data/src/core/lib/experiments/experiments.cc +13 -2
- data/src/core/lib/experiments/experiments.h +8 -1
- data/src/core/lib/gpr/cpu_linux.cc +6 -2
- data/src/core/lib/gpr/log_linux.cc +3 -4
- data/src/core/lib/gpr/string.h +1 -1
- data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/stat_posix.cc +5 -4
- data/src/core/lib/gprpp/stat_windows.cc +3 -2
- data/src/core/lib/gprpp/status_helper.h +1 -3
- data/src/core/lib/gprpp/strerror.cc +41 -0
- data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
- data/src/core/lib/gprpp/thd_windows.cc +1 -2
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +13 -2
- data/src/core/lib/gprpp/validation_errors.h +18 -1
- data/src/core/lib/http/httpcli.cc +40 -44
- data/src/core/lib/http/httpcli.h +6 -5
- data/src/core/lib/http/httpcli_security_connector.cc +4 -6
- data/src/core/lib/http/parser.cc +54 -65
- data/src/core/lib/iomgr/buffer_list.cc +105 -116
- data/src/core/lib/iomgr/buffer_list.h +60 -44
- data/src/core/lib/iomgr/call_combiner.cc +11 -10
- data/src/core/lib/iomgr/call_combiner.h +3 -4
- data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
- data/src/core/lib/iomgr/closure.h +49 -5
- data/src/core/lib/iomgr/combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/error.cc +27 -42
- data/src/core/lib/iomgr/error.h +22 -152
- data/src/core/lib/iomgr/ev_apple.cc +4 -4
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
- data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
- data/src/core/lib/iomgr/exec_ctx.cc +3 -4
- data/src/core/lib/iomgr/exec_ctx.h +2 -3
- data/src/core/lib/iomgr/executor.cc +1 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
- data/src/core/lib/iomgr/load_file.cc +5 -9
- data/src/core/lib/iomgr/lockfree_event.cc +10 -10
- data/src/core/lib/iomgr/pollset_windows.cc +4 -4
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +8 -3
- data/src/core/lib/iomgr/resolve_address.h +3 -4
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
- data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
- data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
- data/src/core/lib/iomgr/tcp_posix.cc +92 -108
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
- data/src/core/lib/iomgr/tcp_windows.cc +27 -34
- data/src/core/lib/iomgr/timer.h +8 -8
- data/src/core/lib/iomgr/timer_generic.cc +9 -15
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +7 -2
- data/src/core/lib/json/json_object_loader.h +22 -0
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +4 -4
- data/src/core/lib/load_balancing/lb_policy.cc +1 -1
- data/src/core/lib/load_balancing/lb_policy.h +4 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/promise/activity.cc +16 -2
- data/src/core/lib/promise/activity.h +38 -15
- data/src/core/lib/promise/arena_promise.h +80 -51
- data/src/core/lib/promise/context.h +13 -6
- data/src/core/lib/promise/detail/basic_seq.h +9 -28
- data/src/core/lib/promise/detail/promise_factory.h +58 -10
- data/src/core/lib/promise/detail/status.h +28 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
- data/src/core/lib/promise/for_each.h +129 -0
- data/src/core/lib/promise/loop.h +7 -5
- data/src/core/lib/promise/map_pipe.h +87 -0
- data/src/core/lib/promise/pipe.cc +19 -0
- data/src/core/lib/promise/pipe.h +505 -0
- data/src/core/lib/promise/poll.h +13 -0
- data/src/core/lib/promise/seq.h +3 -5
- data/src/core/lib/promise/sleep.cc +5 -4
- data/src/core/lib/promise/sleep.h +1 -2
- data/src/core/lib/promise/try_concurrently.h +341 -0
- data/src/core/lib/promise/try_seq.h +10 -13
- data/src/core/lib/resolver/server_address.cc +1 -0
- data/src/core/lib/resolver/server_address.h +1 -3
- data/src/core/lib/resource_quota/api.cc +0 -1
- data/src/core/lib/resource_quota/arena.cc +19 -0
- data/src/core/lib/resource_quota/arena.h +89 -0
- data/src/core/lib/resource_quota/memory_quota.cc +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
- data/src/core/lib/security/authorization/matchers.cc +25 -22
- data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
- data/src/core/lib/security/context/security_context.h +10 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
- 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 +2 -6
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
- data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
- data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
- data/src/core/lib/security/transport/security_handshaker.cc +53 -53
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/security/transport/tsi_error.cc +6 -3
- data/src/core/lib/security/util/json_util.cc +4 -5
- data/src/core/lib/service_config/service_config.h +1 -1
- data/src/core/lib/service_config/service_config_impl.cc +111 -158
- data/src/core/lib/service_config/service_config_impl.h +14 -17
- data/src/core/lib/service_config/service_config_parser.cc +14 -31
- data/src/core/lib/service_config/service_config_parser.h +14 -10
- data/src/core/lib/slice/b64.cc +2 -2
- data/src/core/lib/slice/slice.cc +7 -1
- data/src/core/lib/slice/slice.h +19 -6
- data/src/core/lib/slice/slice_buffer.cc +13 -14
- data/src/core/lib/slice/slice_internal.h +13 -21
- data/src/core/lib/slice/slice_refcount.h +34 -19
- data/src/core/lib/surface/byte_buffer.cc +3 -4
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +1366 -239
- data/src/core/lib/surface/call.h +44 -0
- data/src/core/lib/surface/call_details.cc +3 -3
- data/src/core/lib/surface/call_trace.cc +113 -0
- data/src/core/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +44 -49
- data/src/core/lib/surface/channel.h +9 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/channel_stack_type.cc +4 -0
- data/src/core/lib/surface/channel_stack_type.h +2 -0
- data/src/core/lib/surface/completion_queue.cc +38 -52
- data/src/core/lib/surface/init.cc +8 -39
- data/src/core/lib/surface/init_internally.h +8 -0
- data/src/core/lib/surface/lame_client.cc +10 -8
- data/src/core/lib/surface/server.cc +48 -70
- data/src/core/lib/surface/server.h +3 -4
- data/src/core/lib/surface/validate_metadata.cc +11 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +34 -28
- data/src/core/lib/transport/error_utils.h +3 -3
- data/src/core/lib/transport/handshaker.cc +14 -14
- data/src/core/lib/transport/handshaker.h +1 -1
- data/src/core/lib/transport/handshaker_factory.h +26 -0
- data/src/core/lib/transport/handshaker_registry.cc +8 -2
- data/src/core/lib/transport/handshaker_registry.h +3 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
- data/src/core/lib/transport/metadata_batch.h +17 -1
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
- data/src/core/lib/transport/transport.cc +63 -17
- data/src/core/lib/transport/transport.h +64 -68
- data/src/core/lib/transport/transport_impl.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +7 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
- data/src/core/tsi/fake_transport_security.cc +3 -3
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_spec.rb +0 -43
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +57 -20
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
- data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_buffer_api.cc +0 -35
- data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -26,7 +26,6 @@
|
|
26
26
|
#include <stdlib.h>
|
27
27
|
|
28
28
|
#include <algorithm>
|
29
|
-
#include <cstdint>
|
30
29
|
#include <string>
|
31
30
|
#include <utility>
|
32
31
|
|
@@ -49,10 +48,11 @@
|
|
49
48
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
50
49
|
#include "src/core/lib/debug/trace.h"
|
51
50
|
#include "src/core/lib/experiments/experiments.h"
|
51
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
52
52
|
#include "src/core/lib/iomgr/closure.h"
|
53
53
|
#include "src/core/lib/iomgr/combiner.h"
|
54
54
|
#include "src/core/lib/slice/slice.h"
|
55
|
-
#include "src/core/lib/slice/
|
55
|
+
#include "src/core/lib/slice/slice_refcount.h"
|
56
56
|
#include "src/core/lib/transport/http2_errors.h"
|
57
57
|
#include "src/core/lib/transport/parsed_metadata.h"
|
58
58
|
#include "src/core/lib/transport/transport.h"
|
@@ -586,15 +586,14 @@ class HPackParser::Input {
|
|
586
586
|
// Extract the parse error, leaving the current error as NONE.
|
587
587
|
grpc_error_handle TakeError() {
|
588
588
|
grpc_error_handle out = error_;
|
589
|
-
error_ =
|
589
|
+
error_ = absl::OkStatus();
|
590
590
|
return out;
|
591
591
|
}
|
592
592
|
|
593
593
|
// Set the current error - allows the rest of the code not to need to pass
|
594
594
|
// around StatusOr<> which would be prohibitive here.
|
595
595
|
GPR_ATTRIBUTE_NOINLINE void SetError(grpc_error_handle error) {
|
596
|
-
if (!
|
597
|
-
GRPC_ERROR_UNREF(error);
|
596
|
+
if (!error_.ok() || eof_error_) {
|
598
597
|
return;
|
599
598
|
}
|
600
599
|
error_ = error;
|
@@ -606,7 +605,7 @@ class HPackParser::Input {
|
|
606
605
|
template <typename F, typename T>
|
607
606
|
GPR_ATTRIBUTE_NOINLINE T MaybeSetErrorAndReturn(F error_factory,
|
608
607
|
T return_value) {
|
609
|
-
if (!
|
608
|
+
if (!error_.ok() || eof_error_) return return_value;
|
610
609
|
error_ = error_factory();
|
611
610
|
begin_ = end_;
|
612
611
|
return return_value;
|
@@ -616,7 +615,7 @@ class HPackParser::Input {
|
|
616
615
|
// is a common case)
|
617
616
|
template <typename T>
|
618
617
|
T UnexpectedEOF(T return_value) {
|
619
|
-
if (!
|
618
|
+
if (!error_.ok()) return return_value;
|
620
619
|
eof_error_ = true;
|
621
620
|
return return_value;
|
622
621
|
}
|
@@ -633,7 +632,7 @@ class HPackParser::Input {
|
|
633
632
|
uint8_t last_byte) {
|
634
633
|
return MaybeSetErrorAndReturn(
|
635
634
|
[value, last_byte] {
|
636
|
-
return
|
635
|
+
return GRPC_ERROR_CREATE(absl::StrFormat(
|
637
636
|
"integer overflow in hpack integer decoding: have 0x%08x, "
|
638
637
|
"got byte 0x%02x on byte 5",
|
639
638
|
value, last_byte));
|
@@ -650,7 +649,7 @@ class HPackParser::Input {
|
|
650
649
|
// Frontier denotes the first byte past successfully processed input
|
651
650
|
const uint8_t* frontier_;
|
652
651
|
// Current error
|
653
|
-
grpc_error_handle error_
|
652
|
+
grpc_error_handle error_;
|
654
653
|
// If the error was EOF, we flag it here..
|
655
654
|
bool eof_error_ = false;
|
656
655
|
};
|
@@ -831,10 +830,7 @@ class HPackParser::String {
|
|
831
830
|
}
|
832
831
|
if (!result.has_value()) {
|
833
832
|
return input->MaybeSetErrorAndReturn(
|
834
|
-
[] {
|
835
|
-
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
836
|
-
"illegal base64 encoding");
|
837
|
-
},
|
833
|
+
[] { return GRPC_ERROR_CREATE("illegal base64 encoding"); },
|
838
834
|
absl::optional<String>());
|
839
835
|
}
|
840
836
|
return String(std::move(*result));
|
@@ -1016,11 +1012,7 @@ class HPackParser::Parser {
|
|
1016
1012
|
if (cur == 0x80) {
|
1017
1013
|
// illegal value.
|
1018
1014
|
return input_->MaybeSetErrorAndReturn(
|
1019
|
-
[] {
|
1020
|
-
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1021
|
-
"Illegal hpack op code");
|
1022
|
-
},
|
1023
|
-
false);
|
1015
|
+
[] { return GRPC_ERROR_CREATE("Illegal hpack op code"); }, false);
|
1024
1016
|
}
|
1025
1017
|
ABSL_FALLTHROUGH_INTENDED;
|
1026
1018
|
case 9:
|
@@ -1084,7 +1076,7 @@ class HPackParser::Parser {
|
|
1084
1076
|
auto r = EmitHeader(*md);
|
1085
1077
|
// Add to the hpack table
|
1086
1078
|
grpc_error_handle err = table_->Add(std::move(*md));
|
1087
|
-
if (GPR_UNLIKELY(!
|
1079
|
+
if (GPR_UNLIKELY(!err.ok())) {
|
1088
1080
|
input_->SetError(err);
|
1089
1081
|
return false;
|
1090
1082
|
};
|
@@ -1172,14 +1164,14 @@ class HPackParser::Parser {
|
|
1172
1164
|
if (*dynamic_table_updates_allowed_ == 0) {
|
1173
1165
|
return input_->MaybeSetErrorAndReturn(
|
1174
1166
|
[] {
|
1175
|
-
return
|
1167
|
+
return GRPC_ERROR_CREATE(
|
1176
1168
|
"More than two max table size changes in a single frame");
|
1177
1169
|
},
|
1178
1170
|
false);
|
1179
1171
|
}
|
1180
1172
|
(*dynamic_table_updates_allowed_)--;
|
1181
1173
|
grpc_error_handle err = table_->SetCurrentTableSize(*size);
|
1182
|
-
if (!
|
1174
|
+
if (!err.ok()) {
|
1183
1175
|
input_->SetError(err);
|
1184
1176
|
return false;
|
1185
1177
|
}
|
@@ -1193,11 +1185,10 @@ class HPackParser::Parser {
|
|
1193
1185
|
return input_->MaybeSetErrorAndReturn(
|
1194
1186
|
[this, index] {
|
1195
1187
|
return grpc_error_set_int(
|
1196
|
-
grpc_error_set_int(
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
GRPC_ERROR_INT_SIZE,
|
1188
|
+
grpc_error_set_int(
|
1189
|
+
GRPC_ERROR_CREATE("Invalid HPACK index received"),
|
1190
|
+
StatusIntProperty::kIndex, static_cast<intptr_t>(index)),
|
1191
|
+
StatusIntProperty::kSize,
|
1201
1192
|
static_cast<intptr_t>(this->table_->num_entries()));
|
1202
1193
|
},
|
1203
1194
|
std::move(result));
|
@@ -1214,9 +1205,8 @@ class HPackParser::Parser {
|
|
1214
1205
|
return input_->MaybeSetErrorAndReturn(
|
1215
1206
|
[] {
|
1216
1207
|
return grpc_error_set_int(
|
1217
|
-
|
1218
|
-
|
1219
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED);
|
1208
|
+
GRPC_ERROR_CREATE("received initial metadata size exceeds limit"),
|
1209
|
+
StatusIntProperty::kRpcStatus, GRPC_STATUS_RESOURCE_EXHAUSTED);
|
1220
1210
|
},
|
1221
1211
|
false);
|
1222
1212
|
}
|
@@ -1259,6 +1249,9 @@ void HPackParser::BeginFrame(grpc_metadata_batch* metadata_buffer,
|
|
1259
1249
|
uint32_t metadata_size_limit, Boundary boundary,
|
1260
1250
|
Priority priority, LogInfo log_info) {
|
1261
1251
|
metadata_buffer_ = metadata_buffer;
|
1252
|
+
if (metadata_buffer != nullptr) {
|
1253
|
+
metadata_buffer->Set(GrpcStatusFromWire(), true);
|
1254
|
+
}
|
1262
1255
|
boundary_ = boundary;
|
1263
1256
|
priority_ = priority;
|
1264
1257
|
dynamic_table_updates_allowed_ = 2;
|
@@ -1282,15 +1275,15 @@ grpc_error_handle HPackParser::Parse(const grpc_slice& slice, bool is_last) {
|
|
1282
1275
|
|
1283
1276
|
grpc_error_handle HPackParser::ParseInput(Input input, bool is_last) {
|
1284
1277
|
if (ParseInputInner(&input)) {
|
1285
|
-
return
|
1278
|
+
return absl::OkStatus();
|
1286
1279
|
}
|
1287
1280
|
if (input.eof_error()) {
|
1288
1281
|
if (GPR_UNLIKELY(is_last && is_boundary())) {
|
1289
|
-
return
|
1282
|
+
return GRPC_ERROR_CREATE(
|
1290
1283
|
"Incomplete header at the end of a header/continuation sequence");
|
1291
1284
|
}
|
1292
1285
|
unparsed_bytes_ = std::vector<uint8_t>(input.frontier(), input.end_ptr());
|
1293
|
-
return
|
1286
|
+
return absl::OkStatus();
|
1294
1287
|
}
|
1295
1288
|
return input.TakeError();
|
1296
1289
|
}
|
@@ -1338,7 +1331,7 @@ static void force_client_rst_stream(void* sp, grpc_error_handle /*error*/) {
|
|
1338
1331
|
grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
|
1339
1332
|
&s->stats.outgoing);
|
1340
1333
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_FORCE_RST_STREAM);
|
1341
|
-
grpc_chttp2_mark_stream_closed(t, s, true, true,
|
1334
|
+
grpc_chttp2_mark_stream_closed(t, s, true, true, absl::OkStatus());
|
1342
1335
|
}
|
1343
1336
|
GRPC_CHTTP2_STREAM_UNREF(s, "final_rst");
|
1344
1337
|
}
|
@@ -1353,7 +1346,7 @@ grpc_error_handle grpc_chttp2_header_parser_parse(void* hpack_parser,
|
|
1353
1346
|
s->stats.incoming.header_bytes += GRPC_SLICE_LENGTH(slice);
|
1354
1347
|
}
|
1355
1348
|
grpc_error_handle error = parser->Parse(slice, is_last != 0);
|
1356
|
-
if (!
|
1349
|
+
if (!error.ok()) {
|
1357
1350
|
return error;
|
1358
1351
|
}
|
1359
1352
|
if (is_last) {
|
@@ -1362,8 +1355,7 @@ grpc_error_handle grpc_chttp2_header_parser_parse(void* hpack_parser,
|
|
1362
1355
|
if (s != nullptr) {
|
1363
1356
|
if (parser->is_boundary()) {
|
1364
1357
|
if (s->header_frames_received == 2) {
|
1365
|
-
return
|
1366
|
-
"Too many trailer frames");
|
1358
|
+
return GRPC_ERROR_CREATE("Too many trailer frames");
|
1367
1359
|
}
|
1368
1360
|
s->published_metadata[s->header_frames_received] =
|
1369
1361
|
GRPC_METADATA_PUBLISHED_FROM_WIRE;
|
@@ -1379,12 +1371,12 @@ grpc_error_handle grpc_chttp2_header_parser_parse(void* hpack_parser,
|
|
1379
1371
|
GRPC_CHTTP2_STREAM_REF(s, "final_rst");
|
1380
1372
|
t->combiner->FinallyRun(
|
1381
1373
|
GRPC_CLOSURE_CREATE(force_client_rst_stream, s, nullptr),
|
1382
|
-
|
1374
|
+
absl::OkStatus());
|
1383
1375
|
}
|
1384
|
-
grpc_chttp2_mark_stream_closed(t, s, true, false,
|
1376
|
+
grpc_chttp2_mark_stream_closed(t, s, true, false, absl::OkStatus());
|
1385
1377
|
}
|
1386
1378
|
}
|
1387
1379
|
parser->FinishFrame();
|
1388
1380
|
}
|
1389
|
-
return
|
1381
|
+
return absl::OkStatus();
|
1390
1382
|
}
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include <cstring>
|
28
28
|
#include <utility>
|
29
29
|
|
30
|
+
#include "absl/status/status.h"
|
30
31
|
#include "absl/strings/str_format.h"
|
31
32
|
#include "absl/strings/string_view.h"
|
32
33
|
|
@@ -100,10 +101,10 @@ void HPackTable::SetMaxBytes(uint32_t max_bytes) {
|
|
100
101
|
|
101
102
|
grpc_error_handle HPackTable::SetCurrentTableSize(uint32_t bytes) {
|
102
103
|
if (current_table_bytes_ == bytes) {
|
103
|
-
return
|
104
|
+
return absl::OkStatus();
|
104
105
|
}
|
105
106
|
if (bytes > max_bytes_) {
|
106
|
-
return
|
107
|
+
return GRPC_ERROR_CREATE(absl::StrFormat(
|
107
108
|
"Attempt to make hpack table %d bytes when max is %d bytes", bytes,
|
108
109
|
max_bytes_));
|
109
110
|
}
|
@@ -117,12 +118,12 @@ grpc_error_handle HPackTable::SetCurrentTableSize(uint32_t bytes) {
|
|
117
118
|
uint32_t new_cap = std::max(hpack_constants::EntriesForBytes(bytes),
|
118
119
|
hpack_constants::kInitialTableEntries);
|
119
120
|
entries_.Rebuild(new_cap);
|
120
|
-
return
|
121
|
+
return absl::OkStatus();
|
121
122
|
}
|
122
123
|
|
123
124
|
grpc_error_handle HPackTable::Add(Memento md) {
|
124
125
|
if (current_table_bytes_ > max_bytes_) {
|
125
|
-
return
|
126
|
+
return GRPC_ERROR_CREATE(absl::StrFormat(
|
126
127
|
"HPACK max table size reduced to %d but not reflected by hpack "
|
127
128
|
"stream (still at %d)",
|
128
129
|
max_bytes_, current_table_bytes_));
|
@@ -140,7 +141,7 @@ grpc_error_handle HPackTable::Add(Memento md) {
|
|
140
141
|
while (entries_.num_entries()) {
|
141
142
|
EvictOne();
|
142
143
|
}
|
143
|
-
return
|
144
|
+
return absl::OkStatus();
|
144
145
|
}
|
145
146
|
|
146
147
|
// evict entries to ensure no overflow
|
@@ -152,7 +153,7 @@ grpc_error_handle HPackTable::Add(Memento md) {
|
|
152
153
|
// copy the finalized entry in
|
153
154
|
mem_used_ += md.transport_size();
|
154
155
|
entries_.Put(std::move(md));
|
155
|
-
return
|
156
|
+
return absl::OkStatus();
|
156
157
|
}
|
157
158
|
|
158
159
|
namespace {
|
@@ -60,6 +60,7 @@
|
|
60
60
|
#include "src/core/lib/resource_quota/arena.h"
|
61
61
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
62
62
|
#include "src/core/lib/slice/slice_buffer.h"
|
63
|
+
#include "src/core/lib/surface/init_internally.h"
|
63
64
|
#include "src/core/lib/transport/connectivity_state.h"
|
64
65
|
#include "src/core/lib/transport/metadata_batch.h"
|
65
66
|
#include "src/core/lib/transport/transport.h"
|
@@ -236,7 +237,21 @@ typedef enum {
|
|
236
237
|
GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED,
|
237
238
|
} grpc_chttp2_keepalive_state;
|
238
239
|
|
239
|
-
struct grpc_chttp2_transport
|
240
|
+
struct grpc_chttp2_transport
|
241
|
+
// TODO(ctiller): #31319 fixed a crash on Linux & Mac whereby iomgr was
|
242
|
+
// accessed after shutdown by chttp2. We've not seen similar behavior on
|
243
|
+
// Windows afaik, but this fix has exposed another refcounting bug whereby
|
244
|
+
// transports leak on Windows and prevent test shutdown.
|
245
|
+
// This hack attempts to compromise between two things that are blocking our CI
|
246
|
+
// from giving us a good quality signal, but are unlikely to be problems for
|
247
|
+
// most customers. We should continue tracking down what's causing the failure,
|
248
|
+
// but this gives us some runway to do so - and given that we're actively
|
249
|
+
// working on removing the problematic code paths, it may be that effort brings
|
250
|
+
// the result we need.
|
251
|
+
#ifndef GPR_WINDOWS
|
252
|
+
: public grpc_core::KeepsGrpcInitialized
|
253
|
+
#endif
|
254
|
+
{
|
240
255
|
grpc_chttp2_transport(const grpc_core::ChannelArgs& channel_args,
|
241
256
|
grpc_endpoint* ep, bool is_client);
|
242
257
|
~grpc_chttp2_transport();
|
@@ -261,7 +276,7 @@ struct grpc_chttp2_transport {
|
|
261
276
|
/** is the transport destroying itself? */
|
262
277
|
uint8_t destroying = false;
|
263
278
|
/** has the upper layer closed the transport? */
|
264
|
-
grpc_error_handle closed_with_error
|
279
|
+
grpc_error_handle closed_with_error;
|
265
280
|
|
266
281
|
/** is there a read request to the endpoint outstanding? */
|
267
282
|
uint8_t endpoint_reading = 1;
|
@@ -309,8 +324,8 @@ struct grpc_chttp2_transport {
|
|
309
324
|
uint32_t write_buffer_size = grpc_core::chttp2::kDefaultWindow;
|
310
325
|
|
311
326
|
/** Set to a grpc_error object if a goaway frame is received. By default, set
|
312
|
-
* to
|
313
|
-
grpc_error_handle goaway_error
|
327
|
+
* to absl::OkStatus() */
|
328
|
+
grpc_error_handle goaway_error;
|
314
329
|
|
315
330
|
grpc_chttp2_sent_goaway_state sent_goaway_state = GRPC_CHTTP2_NO_GOAWAY_SEND;
|
316
331
|
|
@@ -391,7 +406,7 @@ struct grpc_chttp2_transport {
|
|
391
406
|
|
392
407
|
/* if non-NULL, close the transport with this error when writes are finished
|
393
408
|
*/
|
394
|
-
grpc_error_handle close_transport_on_writes_finished
|
409
|
+
grpc_error_handle close_transport_on_writes_finished;
|
395
410
|
|
396
411
|
/* a list of closures to run after writes are finished */
|
397
412
|
grpc_closure_list run_after_write = GRPC_CLOSURE_LIST_INIT;
|
@@ -499,6 +514,7 @@ struct grpc_chttp2_stream {
|
|
499
514
|
grpc_metadata_batch* recv_initial_metadata;
|
500
515
|
grpc_closure* recv_initial_metadata_ready = nullptr;
|
501
516
|
bool* trailing_metadata_available = nullptr;
|
517
|
+
bool parsed_trailers_only = false;
|
502
518
|
absl::optional<grpc_core::SliceBuffer>* recv_message = nullptr;
|
503
519
|
uint32_t* recv_message_flags = nullptr;
|
504
520
|
bool* call_failed_before_recv_message = nullptr;
|
@@ -527,9 +543,9 @@ struct grpc_chttp2_stream {
|
|
527
543
|
bool eos_sent = false;
|
528
544
|
|
529
545
|
/** the error that resulted in this stream being read-closed */
|
530
|
-
grpc_error_handle read_closed_error
|
546
|
+
grpc_error_handle read_closed_error;
|
531
547
|
/** the error that resulted in this stream being write-closed */
|
532
|
-
grpc_error_handle write_closed_error
|
548
|
+
grpc_error_handle write_closed_error;
|
533
549
|
|
534
550
|
grpc_published_metadata_method published_metadata[2] = {};
|
535
551
|
bool final_metadata_requested = false;
|
@@ -543,7 +559,7 @@ struct grpc_chttp2_stream {
|
|
543
559
|
grpc_core::Timestamp deadline = grpc_core::Timestamp::InfFuture();
|
544
560
|
|
545
561
|
/** saw some stream level error */
|
546
|
-
grpc_error_handle forced_close_error
|
562
|
+
grpc_error_handle forced_close_error;
|
547
563
|
/** how many header frames have we received? */
|
548
564
|
uint8_t header_frames_received = 0;
|
549
565
|
/** number of bytes received - reset at end of parse thread execution */
|