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
@@ -48,6 +48,7 @@
|
|
48
48
|
#include "src/core/lib/channel/channelz.h"
|
49
49
|
#include "src/core/lib/debug/trace.h"
|
50
50
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
51
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
51
52
|
#include "src/core/lib/gprpp/time.h"
|
52
53
|
#include "src/core/lib/iomgr/error.h"
|
53
54
|
#include "src/core/lib/transport/bdp_estimator.h"
|
@@ -130,7 +131,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
130
131
|
const uint8_t* cur = beg;
|
131
132
|
grpc_error_handle err;
|
132
133
|
|
133
|
-
if (cur == end) return
|
134
|
+
if (cur == end) return absl::OkStatus();
|
134
135
|
|
135
136
|
switch (t->deframe_state) {
|
136
137
|
case GRPC_DTS_CLIENT_PREFIX_0:
|
@@ -159,7 +160,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
159
160
|
case GRPC_DTS_CLIENT_PREFIX_23:
|
160
161
|
while (cur != end && t->deframe_state != GRPC_DTS_FH_0) {
|
161
162
|
if (*cur != GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state]) {
|
162
|
-
return
|
163
|
+
return GRPC_ERROR_CREATE(absl::StrFormat(
|
163
164
|
"Connect string mismatch: expected '%c' (%d) got '%c' (%d) "
|
164
165
|
"at byte %d",
|
165
166
|
get_utf8_safe_char(
|
@@ -175,7 +176,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
175
176
|
1 + static_cast<int>(t->deframe_state));
|
176
177
|
}
|
177
178
|
if (cur == end) {
|
178
|
-
return
|
179
|
+
return absl::OkStatus();
|
179
180
|
}
|
180
181
|
dts_fh_0:
|
181
182
|
ABSL_FALLTHROUGH_INTENDED;
|
@@ -184,7 +185,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
184
185
|
t->incoming_frame_size = (static_cast<uint32_t>(*cur)) << 16;
|
185
186
|
if (++cur == end) {
|
186
187
|
t->deframe_state = GRPC_DTS_FH_1;
|
187
|
-
return
|
188
|
+
return absl::OkStatus();
|
188
189
|
}
|
189
190
|
ABSL_FALLTHROUGH_INTENDED;
|
190
191
|
case GRPC_DTS_FH_1:
|
@@ -192,7 +193,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
192
193
|
t->incoming_frame_size |= (static_cast<uint32_t>(*cur)) << 8;
|
193
194
|
if (++cur == end) {
|
194
195
|
t->deframe_state = GRPC_DTS_FH_2;
|
195
|
-
return
|
196
|
+
return absl::OkStatus();
|
196
197
|
}
|
197
198
|
ABSL_FALLTHROUGH_INTENDED;
|
198
199
|
case GRPC_DTS_FH_2:
|
@@ -200,7 +201,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
200
201
|
t->incoming_frame_size |= *cur;
|
201
202
|
if (++cur == end) {
|
202
203
|
t->deframe_state = GRPC_DTS_FH_3;
|
203
|
-
return
|
204
|
+
return absl::OkStatus();
|
204
205
|
}
|
205
206
|
ABSL_FALLTHROUGH_INTENDED;
|
206
207
|
case GRPC_DTS_FH_3:
|
@@ -208,7 +209,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
208
209
|
t->incoming_frame_type = *cur;
|
209
210
|
if (++cur == end) {
|
210
211
|
t->deframe_state = GRPC_DTS_FH_4;
|
211
|
-
return
|
212
|
+
return absl::OkStatus();
|
212
213
|
}
|
213
214
|
ABSL_FALLTHROUGH_INTENDED;
|
214
215
|
case GRPC_DTS_FH_4:
|
@@ -216,7 +217,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
216
217
|
t->incoming_frame_flags = *cur;
|
217
218
|
if (++cur == end) {
|
218
219
|
t->deframe_state = GRPC_DTS_FH_5;
|
219
|
-
return
|
220
|
+
return absl::OkStatus();
|
220
221
|
}
|
221
222
|
ABSL_FALLTHROUGH_INTENDED;
|
222
223
|
case GRPC_DTS_FH_5:
|
@@ -224,7 +225,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
224
225
|
t->incoming_stream_id = ((static_cast<uint32_t>(*cur)) & 0x7f) << 24;
|
225
226
|
if (++cur == end) {
|
226
227
|
t->deframe_state = GRPC_DTS_FH_6;
|
227
|
-
return
|
228
|
+
return absl::OkStatus();
|
228
229
|
}
|
229
230
|
ABSL_FALLTHROUGH_INTENDED;
|
230
231
|
case GRPC_DTS_FH_6:
|
@@ -232,7 +233,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
232
233
|
t->incoming_stream_id |= (static_cast<uint32_t>(*cur)) << 16;
|
233
234
|
if (++cur == end) {
|
234
235
|
t->deframe_state = GRPC_DTS_FH_7;
|
235
|
-
return
|
236
|
+
return absl::OkStatus();
|
236
237
|
}
|
237
238
|
ABSL_FALLTHROUGH_INTENDED;
|
238
239
|
case GRPC_DTS_FH_7:
|
@@ -240,7 +241,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
240
241
|
t->incoming_stream_id |= (static_cast<uint32_t>(*cur)) << 8;
|
241
242
|
if (++cur == end) {
|
242
243
|
t->deframe_state = GRPC_DTS_FH_8;
|
243
|
-
return
|
244
|
+
return absl::OkStatus();
|
244
245
|
}
|
245
246
|
ABSL_FALLTHROUGH_INTENDED;
|
246
247
|
case GRPC_DTS_FH_8:
|
@@ -248,31 +249,31 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
248
249
|
t->incoming_stream_id |= (static_cast<uint32_t>(*cur));
|
249
250
|
t->deframe_state = GRPC_DTS_FRAME;
|
250
251
|
err = init_frame_parser(t);
|
251
|
-
if (!
|
252
|
+
if (!err.ok()) {
|
252
253
|
return err;
|
253
254
|
}
|
254
255
|
if (t->incoming_frame_size == 0) {
|
255
256
|
err = parse_frame_slice(t, grpc_empty_slice(), 1);
|
256
|
-
if (!
|
257
|
+
if (!err.ok()) {
|
257
258
|
return err;
|
258
259
|
}
|
259
260
|
t->incoming_stream = nullptr;
|
260
261
|
if (++cur == end) {
|
261
262
|
t->deframe_state = GRPC_DTS_FH_0;
|
262
|
-
return
|
263
|
+
return absl::OkStatus();
|
263
264
|
}
|
264
265
|
goto dts_fh_0; /* loop */
|
265
266
|
} else if (t->incoming_frame_size >
|
266
267
|
t->settings[GRPC_ACKED_SETTINGS]
|
267
268
|
[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]) {
|
268
|
-
return
|
269
|
+
return GRPC_ERROR_CREATE(
|
269
270
|
absl::StrFormat("Frame size %d is larger than max frame size %d",
|
270
271
|
t->incoming_frame_size,
|
271
272
|
t->settings[GRPC_ACKED_SETTINGS]
|
272
273
|
[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]));
|
273
274
|
}
|
274
275
|
if (++cur == end) {
|
275
|
-
return
|
276
|
+
return absl::OkStatus();
|
276
277
|
}
|
277
278
|
ABSL_FALLTHROUGH_INTENDED;
|
278
279
|
case GRPC_DTS_FRAME:
|
@@ -283,12 +284,12 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
283
284
|
grpc_slice_sub_no_ref(slice, static_cast<size_t>(cur - beg),
|
284
285
|
static_cast<size_t>(end - beg)),
|
285
286
|
1);
|
286
|
-
if (!
|
287
|
+
if (!err.ok()) {
|
287
288
|
return err;
|
288
289
|
}
|
289
290
|
t->deframe_state = GRPC_DTS_FH_0;
|
290
291
|
t->incoming_stream = nullptr;
|
291
|
-
return
|
292
|
+
return absl::OkStatus();
|
292
293
|
} else if (static_cast<uint32_t>(end - cur) > t->incoming_frame_size) {
|
293
294
|
size_t cur_offset = static_cast<size_t>(cur - beg);
|
294
295
|
err = parse_frame_slice(
|
@@ -296,7 +297,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
296
297
|
grpc_slice_sub_no_ref(slice, cur_offset,
|
297
298
|
cur_offset + t->incoming_frame_size),
|
298
299
|
1);
|
299
|
-
if (!
|
300
|
+
if (!err.ok()) {
|
300
301
|
return err;
|
301
302
|
}
|
302
303
|
cur += t->incoming_frame_size;
|
@@ -308,34 +309,34 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
308
309
|
grpc_slice_sub_no_ref(slice, static_cast<size_t>(cur - beg),
|
309
310
|
static_cast<size_t>(end - beg)),
|
310
311
|
0);
|
311
|
-
if (!
|
312
|
+
if (!err.ok()) {
|
312
313
|
return err;
|
313
314
|
}
|
314
315
|
t->incoming_frame_size -= static_cast<uint32_t>(end - cur);
|
315
|
-
return
|
316
|
+
return absl::OkStatus();
|
316
317
|
}
|
317
|
-
GPR_UNREACHABLE_CODE(return
|
318
|
+
GPR_UNREACHABLE_CODE(return absl::OkStatus());
|
318
319
|
}
|
319
320
|
|
320
|
-
GPR_UNREACHABLE_CODE(return
|
321
|
+
GPR_UNREACHABLE_CODE(return absl::OkStatus());
|
321
322
|
}
|
322
323
|
|
323
324
|
static grpc_error_handle init_frame_parser(grpc_chttp2_transport* t) {
|
324
325
|
if (t->is_first_frame &&
|
325
326
|
t->incoming_frame_type != GRPC_CHTTP2_FRAME_SETTINGS) {
|
326
|
-
return
|
327
|
+
return GRPC_ERROR_CREATE(absl::StrCat(
|
327
328
|
"Expected SETTINGS frame as the first frame, got frame type ",
|
328
329
|
t->incoming_frame_type));
|
329
330
|
}
|
330
331
|
t->is_first_frame = false;
|
331
332
|
if (t->expect_continuation_stream_id != 0) {
|
332
333
|
if (t->incoming_frame_type != GRPC_CHTTP2_FRAME_CONTINUATION) {
|
333
|
-
return
|
334
|
+
return GRPC_ERROR_CREATE(
|
334
335
|
absl::StrFormat("Expected CONTINUATION frame, got frame type %02x",
|
335
336
|
t->incoming_frame_type));
|
336
337
|
}
|
337
338
|
if (t->expect_continuation_stream_id != t->incoming_stream_id) {
|
338
|
-
return
|
339
|
+
return GRPC_ERROR_CREATE(absl::StrFormat(
|
339
340
|
"Expected CONTINUATION frame for grpc_chttp2_stream %08x, got "
|
340
341
|
"grpc_chttp2_stream %08x",
|
341
342
|
t->expect_continuation_stream_id, t->incoming_stream_id));
|
@@ -348,8 +349,7 @@ static grpc_error_handle init_frame_parser(grpc_chttp2_transport* t) {
|
|
348
349
|
case GRPC_CHTTP2_FRAME_HEADER:
|
349
350
|
return init_header_frame_parser(t, 0);
|
350
351
|
case GRPC_CHTTP2_FRAME_CONTINUATION:
|
351
|
-
return
|
352
|
-
"Unexpected CONTINUATION frame");
|
352
|
+
return GRPC_ERROR_CREATE("Unexpected CONTINUATION frame");
|
353
353
|
case GRPC_CHTTP2_FRAME_RST_STREAM:
|
354
354
|
return init_rst_stream_parser(t);
|
355
355
|
case GRPC_CHTTP2_FRAME_SETTINGS:
|
@@ -373,7 +373,7 @@ static grpc_error_handle skip_parser(void* /*parser*/,
|
|
373
373
|
grpc_chttp2_stream* /*s*/,
|
374
374
|
const grpc_slice& /*slice*/,
|
375
375
|
int /*is_last*/) {
|
376
|
-
return
|
376
|
+
return absl::OkStatus();
|
377
377
|
}
|
378
378
|
|
379
379
|
static HPackParser::Boundary hpack_boundary_type(grpc_chttp2_transport* t,
|
@@ -409,13 +409,13 @@ static grpc_error_handle init_header_skip_frame_parser(
|
|
409
409
|
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE],
|
410
410
|
hpack_boundary_type(t, is_eoh), priority_type,
|
411
411
|
hpack_parser_log_info(t, HPackParser::LogInfo::kDontKnow));
|
412
|
-
return
|
412
|
+
return absl::OkStatus();
|
413
413
|
}
|
414
414
|
|
415
415
|
static grpc_error_handle init_non_header_skip_frame_parser(
|
416
416
|
grpc_chttp2_transport* t) {
|
417
417
|
t->parser = skip_parser;
|
418
|
-
return
|
418
|
+
return absl::OkStatus();
|
419
419
|
}
|
420
420
|
|
421
421
|
void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport* t) {
|
@@ -473,7 +473,7 @@ error_handler:
|
|
473
473
|
t->parser = grpc_chttp2_data_parser_parse;
|
474
474
|
t->parser_data = nullptr;
|
475
475
|
t->ping_state.last_ping_sent_time = grpc_core::Timestamp::InfPast();
|
476
|
-
return
|
476
|
+
return absl::OkStatus();
|
477
477
|
} else if (s != nullptr) {
|
478
478
|
/* handle stream errors by closing the stream */
|
479
479
|
grpc_chttp2_mark_stream_closed(t, s, true, false,
|
@@ -549,7 +549,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
|
|
549
549
|
grpc_chttp2_stream_map_size(&t->stream_map) >=
|
550
550
|
t->settings[GRPC_ACKED_SETTINGS]
|
551
551
|
[GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS])) {
|
552
|
-
return
|
552
|
+
return GRPC_ERROR_CREATE("Max stream count exceeded");
|
553
553
|
} else if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
|
554
554
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
555
555
|
GPR_INFO,
|
@@ -595,6 +595,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
|
|
595
595
|
if (s->trailing_metadata_available != nullptr) {
|
596
596
|
*s->trailing_metadata_available = true;
|
597
597
|
}
|
598
|
+
s->parsed_trailers_only = true;
|
598
599
|
incoming_metadata_buffer = &s->trailing_metadata_buffer;
|
599
600
|
frame_type = HPackParser::LogInfo::kTrailers;
|
600
601
|
} else {
|
@@ -613,7 +614,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
|
|
613
614
|
return init_header_skip_frame_parser(t, priority_type);
|
614
615
|
}
|
615
616
|
if (frame_type == HPackParser::LogInfo::kTrailers && !t->header_eof) {
|
616
|
-
return
|
617
|
+
return GRPC_ERROR_CREATE(
|
617
618
|
"Trailing metadata frame received without an end-o-stream");
|
618
619
|
}
|
619
620
|
t->hpack_parser.BeginFrame(
|
@@ -622,7 +623,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
|
|
622
623
|
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE],
|
623
624
|
hpack_boundary_type(t, is_eoh), priority_type,
|
624
625
|
hpack_parser_log_info(t, frame_type));
|
625
|
-
return
|
626
|
+
return absl::OkStatus();
|
626
627
|
}
|
627
628
|
|
628
629
|
static grpc_error_handle init_window_update_frame_parser(
|
@@ -630,7 +631,7 @@ static grpc_error_handle init_window_update_frame_parser(
|
|
630
631
|
grpc_error_handle err = grpc_chttp2_window_update_parser_begin_frame(
|
631
632
|
&t->simple.window_update, t->incoming_frame_size,
|
632
633
|
t->incoming_frame_flags);
|
633
|
-
if (!
|
634
|
+
if (!err.ok()) return err;
|
634
635
|
if (t->incoming_stream_id != 0) {
|
635
636
|
grpc_chttp2_stream* s = t->incoming_stream =
|
636
637
|
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
|
@@ -641,22 +642,22 @@ static grpc_error_handle init_window_update_frame_parser(
|
|
641
642
|
}
|
642
643
|
t->parser = grpc_chttp2_window_update_parser_parse;
|
643
644
|
t->parser_data = &t->simple.window_update;
|
644
|
-
return
|
645
|
+
return absl::OkStatus();
|
645
646
|
}
|
646
647
|
|
647
648
|
static grpc_error_handle init_ping_parser(grpc_chttp2_transport* t) {
|
648
649
|
grpc_error_handle err = grpc_chttp2_ping_parser_begin_frame(
|
649
650
|
&t->simple.ping, t->incoming_frame_size, t->incoming_frame_flags);
|
650
|
-
if (!
|
651
|
+
if (!err.ok()) return err;
|
651
652
|
t->parser = grpc_chttp2_ping_parser_parse;
|
652
653
|
t->parser_data = &t->simple.ping;
|
653
|
-
return
|
654
|
+
return absl::OkStatus();
|
654
655
|
}
|
655
656
|
|
656
657
|
static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t) {
|
657
658
|
grpc_error_handle err = grpc_chttp2_rst_stream_parser_begin_frame(
|
658
659
|
&t->simple.rst_stream, t->incoming_frame_size, t->incoming_frame_flags);
|
659
|
-
if (!
|
660
|
+
if (!err.ok()) return err;
|
660
661
|
grpc_chttp2_stream* s = t->incoming_stream =
|
661
662
|
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
|
662
663
|
if (!t->incoming_stream) {
|
@@ -665,28 +666,27 @@ static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t) {
|
|
665
666
|
s->stats.incoming.framing_bytes += 9;
|
666
667
|
t->parser = grpc_chttp2_rst_stream_parser_parse;
|
667
668
|
t->parser_data = &t->simple.rst_stream;
|
668
|
-
return
|
669
|
+
return absl::OkStatus();
|
669
670
|
}
|
670
671
|
|
671
672
|
static grpc_error_handle init_goaway_parser(grpc_chttp2_transport* t) {
|
672
673
|
grpc_error_handle err = grpc_chttp2_goaway_parser_begin_frame(
|
673
674
|
&t->goaway_parser, t->incoming_frame_size, t->incoming_frame_flags);
|
674
|
-
if (!
|
675
|
+
if (!err.ok()) return err;
|
675
676
|
t->parser = grpc_chttp2_goaway_parser_parse;
|
676
677
|
t->parser_data = &t->goaway_parser;
|
677
|
-
return
|
678
|
+
return absl::OkStatus();
|
678
679
|
}
|
679
680
|
|
680
681
|
static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t) {
|
681
682
|
if (t->incoming_stream_id != 0) {
|
682
|
-
return
|
683
|
-
"Settings frame received for grpc_chttp2_stream");
|
683
|
+
return GRPC_ERROR_CREATE("Settings frame received for grpc_chttp2_stream");
|
684
684
|
}
|
685
685
|
|
686
686
|
grpc_error_handle err = grpc_chttp2_settings_parser_begin_frame(
|
687
687
|
&t->simple.settings, t->incoming_frame_size, t->incoming_frame_flags,
|
688
688
|
t->settings[GRPC_PEER_SETTINGS]);
|
689
|
-
if (!
|
689
|
+
if (!err.ok()) {
|
690
690
|
return err;
|
691
691
|
}
|
692
692
|
if (t->incoming_frame_flags & GRPC_CHTTP2_FLAG_ACK) {
|
@@ -702,7 +702,7 @@ static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t) {
|
|
702
702
|
}
|
703
703
|
t->parser = grpc_chttp2_settings_parser_parse;
|
704
704
|
t->parser_data = &t->simple.settings;
|
705
|
-
return
|
705
|
+
return absl::OkStatus();
|
706
706
|
}
|
707
707
|
|
708
708
|
static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
|
@@ -711,11 +711,12 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
|
|
711
711
|
grpc_chttp2_stream* s = t->incoming_stream;
|
712
712
|
grpc_error_handle err = t->parser(t->parser_data, t, s, slice, is_last);
|
713
713
|
intptr_t unused;
|
714
|
-
if (GPR_LIKELY(
|
714
|
+
if (GPR_LIKELY(err.ok())) {
|
715
715
|
return err;
|
716
|
-
} else if (grpc_error_get_int(err,
|
716
|
+
} else if (grpc_error_get_int(err, grpc_core::StatusIntProperty::kStreamId,
|
717
|
+
&unused)) {
|
717
718
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
718
|
-
gpr_log(GPR_ERROR, "%s",
|
719
|
+
gpr_log(GPR_ERROR, "%s", grpc_core::StatusToString(err).c_str());
|
719
720
|
}
|
720
721
|
grpc_chttp2_parsing_become_skip_parser(t);
|
721
722
|
if (s) {
|
@@ -723,8 +724,6 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
|
|
723
724
|
grpc_chttp2_add_rst_stream_to_next_write(t, t->incoming_stream_id,
|
724
725
|
GRPC_HTTP2_PROTOCOL_ERROR,
|
725
726
|
&s->stats.outgoing);
|
726
|
-
} else {
|
727
|
-
GRPC_ERROR_UNREF(err);
|
728
727
|
}
|
729
728
|
}
|
730
729
|
return err;
|
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
namespace grpc_core {
|
26
26
|
|
27
|
-
|
27
|
+
size_t VarintLength(size_t tail_value) {
|
28
28
|
if (tail_value < (1 << 7)) {
|
29
29
|
return 2;
|
30
30
|
} else if (tail_value < (1 << 14)) {
|
@@ -38,8 +38,7 @@ uint32_t VarintLength(uint32_t tail_value) {
|
|
38
38
|
}
|
39
39
|
}
|
40
40
|
|
41
|
-
void VarintWriteTail(
|
42
|
-
uint32_t tail_length) {
|
41
|
+
void VarintWriteTail(size_t tail_value, uint8_t* target, size_t tail_length) {
|
43
42
|
switch (tail_length) {
|
44
43
|
case 5:
|
45
44
|
target[4] = static_cast<uint8_t>((tail_value >> 28) | 0x80);
|
@@ -22,6 +22,9 @@
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
24
|
#include <stdint.h>
|
25
|
+
#include <stdlib.h>
|
26
|
+
|
27
|
+
#include <grpc/support/log.h>
|
25
28
|
|
26
29
|
/* Helpers for hpack varint encoding */
|
27
30
|
|
@@ -36,22 +39,22 @@ constexpr uint32_t MaxInVarintPrefix(uint8_t prefix_bits) {
|
|
36
39
|
/* length of a value that needs varint tail encoding (it's bigger than can be
|
37
40
|
bitpacked into the opcode byte) - returned value includes the length of the
|
38
41
|
opcode byte */
|
39
|
-
|
40
|
-
void VarintWriteTail(
|
41
|
-
uint32_t tail_length);
|
42
|
+
size_t VarintLength(size_t tail_value);
|
43
|
+
void VarintWriteTail(size_t tail_value, uint8_t* target, size_t tail_length);
|
42
44
|
|
43
45
|
template <uint8_t kPrefixBits>
|
44
46
|
class VarintWriter {
|
45
47
|
public:
|
46
48
|
static constexpr uint32_t kMaxInPrefix = MaxInVarintPrefix(kPrefixBits);
|
47
49
|
|
48
|
-
explicit VarintWriter(
|
50
|
+
explicit VarintWriter(size_t value)
|
49
51
|
: value_(value),
|
50
52
|
length_(value < kMaxInPrefix ? 1 : VarintLength(value - kMaxInPrefix)) {
|
53
|
+
GPR_ASSERT(value <= UINT32_MAX);
|
51
54
|
}
|
52
55
|
|
53
|
-
|
54
|
-
|
56
|
+
size_t value() const { return value_; }
|
57
|
+
size_t length() const { return length_; }
|
55
58
|
|
56
59
|
void Write(uint8_t prefix, uint8_t* target) const {
|
57
60
|
if (length_ == 1) {
|
@@ -63,9 +66,9 @@ class VarintWriter {
|
|
63
66
|
}
|
64
67
|
|
65
68
|
private:
|
66
|
-
const
|
69
|
+
const size_t value_;
|
67
70
|
// length required to bitpack value_
|
68
|
-
const
|
71
|
+
const size_t length_;
|
69
72
|
};
|
70
73
|
|
71
74
|
} // namespace grpc_core
|
@@ -24,10 +24,12 @@
|
|
24
24
|
#include <algorithm>
|
25
25
|
#include <string>
|
26
26
|
|
27
|
+
#include "absl/status/status.h"
|
27
28
|
#include "absl/types/optional.h"
|
28
29
|
|
29
30
|
#include <grpc/slice.h>
|
30
31
|
#include <grpc/slice_buffer.h>
|
32
|
+
#include <grpc/status.h>
|
31
33
|
#include <grpc/support/log.h>
|
32
34
|
|
33
35
|
// IWYU pragma: no_include "src/core/lib/gprpp/orphanable.h"
|
@@ -47,6 +49,7 @@
|
|
47
49
|
#include "src/core/ext/transport/chttp2/transport/stream_map.h"
|
48
50
|
#include "src/core/lib/channel/channelz.h"
|
49
51
|
#include "src/core/lib/debug/stats.h"
|
52
|
+
#include "src/core/lib/debug/stats_data.h"
|
50
53
|
#include "src/core/lib/debug/trace.h"
|
51
54
|
#include "src/core/lib/gprpp/debug_location.h"
|
52
55
|
#include "src/core/lib/gprpp/ref_counted.h"
|
@@ -58,7 +61,6 @@
|
|
58
61
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
59
62
|
#include "src/core/lib/iomgr/timer.h"
|
60
63
|
#include "src/core/lib/slice/slice.h"
|
61
|
-
#include "src/core/lib/slice/slice_internal.h"
|
62
64
|
#include "src/core/lib/transport/bdp_estimator.h"
|
63
65
|
#include "src/core/lib/transport/http2_errors.h"
|
64
66
|
#include "src/core/lib/transport/metadata_batch.h"
|
@@ -169,7 +171,7 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
|
|
169
171
|
&pq->lists[GRPC_CHTTP2_PCL_INFLIGHT]);
|
170
172
|
grpc_slice_buffer_add(&t->outbuf,
|
171
173
|
grpc_chttp2_ping_create(false, pq->inflight_id));
|
172
|
-
|
174
|
+
grpc_core::global_stats().IncrementHttp2PingsSent();
|
173
175
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
174
176
|
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
|
175
177
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
@@ -193,13 +195,12 @@ static bool update_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
193
195
|
grpc_chttp2_write_cb* next = cb->next;
|
194
196
|
if (cb->call_at_byte <= *ctr) {
|
195
197
|
sched_any = true;
|
196
|
-
finish_write_cb(t, s, cb,
|
198
|
+
finish_write_cb(t, s, cb, error);
|
197
199
|
} else {
|
198
200
|
add_to_write_list(list, cb);
|
199
201
|
}
|
200
202
|
cb = next;
|
201
203
|
}
|
202
|
-
GRPC_ERROR_UNREF(error);
|
203
204
|
return sched_any;
|
204
205
|
}
|
205
206
|
|
@@ -264,7 +265,7 @@ namespace {
|
|
264
265
|
class WriteContext {
|
265
266
|
public:
|
266
267
|
explicit WriteContext(grpc_chttp2_transport* t) : t_(t) {
|
267
|
-
|
268
|
+
grpc_core::global_stats().IncrementHttp2WritesBegun();
|
268
269
|
}
|
269
270
|
|
270
271
|
void FlushSettings() {
|
@@ -277,7 +278,7 @@ class WriteContext {
|
|
277
278
|
t_->force_send_settings = false;
|
278
279
|
t_->dirtied_local_settings = false;
|
279
280
|
t_->sent_local_settings = true;
|
280
|
-
|
281
|
+
grpc_core::global_stats().IncrementHttp2SettingsWrites();
|
281
282
|
}
|
282
283
|
}
|
283
284
|
|
@@ -317,7 +318,7 @@ class WriteContext {
|
|
317
318
|
void UpdateStreamsNoLongerStalled() {
|
318
319
|
grpc_chttp2_stream* s;
|
319
320
|
while (grpc_chttp2_list_pop_stalled_by_transport(t_, &s)) {
|
320
|
-
if (
|
321
|
+
if (t_->closed_with_error.ok() &&
|
321
322
|
grpc_chttp2_list_add_writable_stream(t_, s)) {
|
322
323
|
if (!s->refcount->refs.RefIfNonZero()) {
|
323
324
|
grpc_chttp2_list_remove_writable_stream(t_, s);
|
@@ -412,7 +413,7 @@ class DataSendContext {
|
|
412
413
|
t_, s_,
|
413
414
|
static_cast<int64_t>(s_->sending_bytes - sending_bytes_before_),
|
414
415
|
&s_->on_flow_controlled_cbs, &s_->flow_controlled_bytes_flowed,
|
415
|
-
|
416
|
+
absl::OkStatus())) {
|
416
417
|
write_context_->NoteScheduledResults();
|
417
418
|
}
|
418
419
|
}
|
@@ -474,7 +475,7 @@ class StreamWriteContext {
|
|
474
475
|
s_->sent_initial_metadata = true;
|
475
476
|
write_context_->NoteScheduledResults();
|
476
477
|
grpc_chttp2_complete_closure_step(
|
477
|
-
t_, s_, &s_->send_initial_metadata_finished,
|
478
|
+
t_, s_, &s_->send_initial_metadata_finished, absl::OkStatus(),
|
478
479
|
"send_initial_metadata_finished");
|
479
480
|
}
|
480
481
|
|
@@ -503,11 +504,11 @@ class StreamWriteContext {
|
|
503
504
|
|
504
505
|
if (!data_send_context.AnyOutgoing()) {
|
505
506
|
if (t_->flow_control.remote_window() <= 0) {
|
506
|
-
|
507
|
+
grpc_core::global_stats().IncrementHttp2TransportStalls();
|
507
508
|
report_stall(t_, s_, "transport");
|
508
509
|
grpc_chttp2_list_add_stalled_by_transport(t_, s_);
|
509
510
|
} else if (data_send_context.stream_remote_window() <= 0) {
|
510
|
-
|
511
|
+
grpc_core::global_stats().IncrementHttp2StreamStalls();
|
511
512
|
report_stall(t_, s_, "stream");
|
512
513
|
grpc_chttp2_list_add_stalled_by_stream(t_, s_);
|
513
514
|
}
|
@@ -568,7 +569,7 @@ class StreamWriteContext {
|
|
568
569
|
|
569
570
|
write_context_->NoteScheduledResults();
|
570
571
|
grpc_chttp2_complete_closure_step(
|
571
|
-
t_, s_, &s_->send_trailing_metadata_finished,
|
572
|
+
t_, s_, &s_->send_trailing_metadata_finished, absl::OkStatus(),
|
572
573
|
"send_trailing_metadata_finished");
|
573
574
|
}
|
574
575
|
|
@@ -601,7 +602,7 @@ class StreamWriteContext {
|
|
601
602
|
s_->id, GRPC_HTTP2_NO_ERROR, &s_->stats.outgoing));
|
602
603
|
}
|
603
604
|
grpc_chttp2_mark_stream_closed(t_, s_, !t_->is_client, true,
|
604
|
-
|
605
|
+
absl::OkStatus());
|
605
606
|
}
|
606
607
|
|
607
608
|
WriteContext* const write_context_;
|
@@ -673,11 +674,10 @@ void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error_handle error) {
|
|
673
674
|
if (s->sending_bytes != 0) {
|
674
675
|
update_list(t, s, static_cast<int64_t>(s->sending_bytes),
|
675
676
|
&s->on_write_finished_cbs, &s->flow_controlled_bytes_written,
|
676
|
-
|
677
|
+
error);
|
677
678
|
s->sending_bytes = 0;
|
678
679
|
}
|
679
680
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:end");
|
680
681
|
}
|
681
|
-
|
682
|
-
GRPC_ERROR_UNREF(error);
|
682
|
+
grpc_slice_buffer_reset_and_unref(&t->outbuf);
|
683
683
|
}
|