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
data/src/core/lib/http/parser.cc
CHANGED
@@ -24,6 +24,8 @@
|
|
24
24
|
|
25
25
|
#include <algorithm>
|
26
26
|
|
27
|
+
#include "absl/status/status.h"
|
28
|
+
|
27
29
|
#include <grpc/support/alloc.h>
|
28
30
|
#include <grpc/support/log.h>
|
29
31
|
|
@@ -42,51 +44,50 @@ static grpc_error_handle handle_response_line(grpc_http_parser* parser) {
|
|
42
44
|
uint8_t* end = beg + parser->cur_line_length;
|
43
45
|
|
44
46
|
if (cur == end || *cur++ != 'H') {
|
45
|
-
return
|
47
|
+
return GRPC_ERROR_CREATE("Expected 'H'");
|
46
48
|
}
|
47
49
|
if (cur == end || *cur++ != 'T') {
|
48
|
-
return
|
50
|
+
return GRPC_ERROR_CREATE("Expected 'T'");
|
49
51
|
}
|
50
52
|
if (cur == end || *cur++ != 'T') {
|
51
|
-
return
|
53
|
+
return GRPC_ERROR_CREATE("Expected 'T'");
|
52
54
|
}
|
53
55
|
if (cur == end || *cur++ != 'P') {
|
54
|
-
return
|
56
|
+
return GRPC_ERROR_CREATE("Expected 'P'");
|
55
57
|
}
|
56
58
|
if (cur == end || *cur++ != '/') {
|
57
|
-
return
|
59
|
+
return GRPC_ERROR_CREATE("Expected '/'");
|
58
60
|
}
|
59
61
|
if (cur == end || *cur++ != '1') {
|
60
|
-
return
|
62
|
+
return GRPC_ERROR_CREATE("Expected '1'");
|
61
63
|
}
|
62
64
|
if (cur == end || *cur++ != '.') {
|
63
|
-
return
|
65
|
+
return GRPC_ERROR_CREATE("Expected '.'");
|
64
66
|
}
|
65
67
|
if (cur == end || *cur < '0' || *cur++ > '1') {
|
66
|
-
return
|
67
|
-
"Expected HTTP/1.0 or HTTP/1.1");
|
68
|
+
return GRPC_ERROR_CREATE("Expected HTTP/1.0 or HTTP/1.1");
|
68
69
|
}
|
69
70
|
if (cur == end || *cur++ != ' ') {
|
70
|
-
return
|
71
|
+
return GRPC_ERROR_CREATE("Expected ' '");
|
71
72
|
}
|
72
73
|
if (cur == end || *cur < '1' || *cur++ > '9') {
|
73
|
-
return
|
74
|
+
return GRPC_ERROR_CREATE("Expected status code");
|
74
75
|
}
|
75
76
|
if (cur == end || *cur < '0' || *cur++ > '9') {
|
76
|
-
return
|
77
|
+
return GRPC_ERROR_CREATE("Expected status code");
|
77
78
|
}
|
78
79
|
if (cur == end || *cur < '0' || *cur++ > '9') {
|
79
|
-
return
|
80
|
+
return GRPC_ERROR_CREATE("Expected status code");
|
80
81
|
}
|
81
82
|
parser->http.response->status =
|
82
83
|
(cur[-3] - '0') * 100 + (cur[-2] - '0') * 10 + (cur[-1] - '0');
|
83
84
|
if (cur == end || *cur++ != ' ') {
|
84
|
-
return
|
85
|
+
return GRPC_ERROR_CREATE("Expected ' '");
|
85
86
|
}
|
86
87
|
|
87
88
|
/* we don't really care about the status code message */
|
88
89
|
|
89
|
-
return
|
90
|
+
return absl::OkStatus();
|
90
91
|
}
|
91
92
|
|
92
93
|
static grpc_error_handle handle_request_line(grpc_http_parser* parser) {
|
@@ -99,8 +100,7 @@ static grpc_error_handle handle_request_line(grpc_http_parser* parser) {
|
|
99
100
|
while (cur != end && *cur++ != ' ') {
|
100
101
|
}
|
101
102
|
if (cur == end) {
|
102
|
-
return
|
103
|
-
"No method on HTTP request line");
|
103
|
+
return GRPC_ERROR_CREATE("No method on HTTP request line");
|
104
104
|
}
|
105
105
|
parser->http.request->method =
|
106
106
|
buf2str(beg, static_cast<size_t>(cur - beg - 1));
|
@@ -109,30 +109,29 @@ static grpc_error_handle handle_request_line(grpc_http_parser* parser) {
|
|
109
109
|
while (cur != end && *cur++ != ' ') {
|
110
110
|
}
|
111
111
|
if (cur == end) {
|
112
|
-
return
|
112
|
+
return GRPC_ERROR_CREATE("No path on HTTP request line");
|
113
113
|
}
|
114
114
|
parser->http.request->path = buf2str(beg, static_cast<size_t>(cur - beg - 1));
|
115
115
|
|
116
116
|
if (cur == end || *cur++ != 'H') {
|
117
|
-
return
|
117
|
+
return GRPC_ERROR_CREATE("Expected 'H'");
|
118
118
|
}
|
119
119
|
if (cur == end || *cur++ != 'T') {
|
120
|
-
return
|
120
|
+
return GRPC_ERROR_CREATE("Expected 'T'");
|
121
121
|
}
|
122
122
|
if (cur == end || *cur++ != 'T') {
|
123
|
-
return
|
123
|
+
return GRPC_ERROR_CREATE("Expected 'T'");
|
124
124
|
}
|
125
125
|
if (cur == end || *cur++ != 'P') {
|
126
|
-
return
|
126
|
+
return GRPC_ERROR_CREATE("Expected 'P'");
|
127
127
|
}
|
128
128
|
if (cur == end || *cur++ != '/') {
|
129
|
-
return
|
129
|
+
return GRPC_ERROR_CREATE("Expected '/'");
|
130
130
|
}
|
131
131
|
vers_major = static_cast<uint8_t>(*cur++ - '1' + 1);
|
132
132
|
++cur;
|
133
133
|
if (cur == end) {
|
134
|
-
return
|
135
|
-
"End of line in HTTP version string");
|
134
|
+
return GRPC_ERROR_CREATE("End of line in HTTP version string");
|
136
135
|
}
|
137
136
|
vers_minor = static_cast<uint8_t>(*cur++ - '1' + 1);
|
138
137
|
|
@@ -142,22 +141,21 @@ static grpc_error_handle handle_request_line(grpc_http_parser* parser) {
|
|
142
141
|
} else if (vers_minor == 1) {
|
143
142
|
parser->http.request->version = GRPC_HTTP_HTTP11;
|
144
143
|
} else {
|
145
|
-
return
|
144
|
+
return GRPC_ERROR_CREATE(
|
146
145
|
"Expected one of HTTP/1.0, HTTP/1.1, or HTTP/2.0");
|
147
146
|
}
|
148
147
|
} else if (vers_major == 2) {
|
149
148
|
if (vers_minor == 0) {
|
150
149
|
parser->http.request->version = GRPC_HTTP_HTTP20;
|
151
150
|
} else {
|
152
|
-
return
|
151
|
+
return GRPC_ERROR_CREATE(
|
153
152
|
"Expected one of HTTP/1.0, HTTP/1.1, or HTTP/2.0");
|
154
153
|
}
|
155
154
|
} else {
|
156
|
-
return
|
157
|
-
"Expected one of HTTP/1.0, HTTP/1.1, or HTTP/2.0");
|
155
|
+
return GRPC_ERROR_CREATE("Expected one of HTTP/1.0, HTTP/1.1, or HTTP/2.0");
|
158
156
|
}
|
159
157
|
|
160
|
-
return
|
158
|
+
return absl::OkStatus();
|
161
159
|
}
|
162
160
|
|
163
161
|
static grpc_error_handle handle_first_line(grpc_http_parser* parser) {
|
@@ -167,8 +165,7 @@ static grpc_error_handle handle_first_line(grpc_http_parser* parser) {
|
|
167
165
|
case GRPC_HTTP_RESPONSE:
|
168
166
|
return handle_response_line(parser);
|
169
167
|
}
|
170
|
-
GPR_UNREACHABLE_CODE(
|
171
|
-
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here"));
|
168
|
+
GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE("Should never reach here"));
|
172
169
|
}
|
173
170
|
|
174
171
|
static grpc_error_handle add_header(grpc_http_parser* parser) {
|
@@ -179,13 +176,12 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
|
|
179
176
|
size_t size = 0;
|
180
177
|
grpc_http_header** hdrs = nullptr;
|
181
178
|
grpc_http_header hdr = {nullptr, nullptr};
|
182
|
-
grpc_error_handle error
|
179
|
+
grpc_error_handle error;
|
183
180
|
|
184
181
|
GPR_ASSERT(cur != end);
|
185
182
|
|
186
183
|
if (*cur == ' ' || *cur == '\t') {
|
187
|
-
error =
|
188
|
-
"Continued header lines not supported yet");
|
184
|
+
error = GRPC_ERROR_CREATE("Continued header lines not supported yet");
|
189
185
|
goto done;
|
190
186
|
}
|
191
187
|
|
@@ -193,8 +189,7 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
|
|
193
189
|
cur++;
|
194
190
|
}
|
195
191
|
if (cur == end) {
|
196
|
-
error =
|
197
|
-
"Didn't find ':' in header string");
|
192
|
+
error = GRPC_ERROR_CREATE("Didn't find ':' in header string");
|
198
193
|
goto done;
|
199
194
|
}
|
200
195
|
GPR_ASSERT(cur >= beg);
|
@@ -235,7 +230,7 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
|
|
235
230
|
(*hdrs)[(*hdr_count)++] = hdr;
|
236
231
|
|
237
232
|
done:
|
238
|
-
if (!
|
233
|
+
if (!error.ok()) {
|
239
234
|
gpr_free(hdr.key);
|
240
235
|
gpr_free(hdr.value);
|
241
236
|
}
|
@@ -248,7 +243,7 @@ static grpc_error_handle finish_line(grpc_http_parser* parser,
|
|
248
243
|
switch (parser->state) {
|
249
244
|
case GRPC_HTTP_FIRST_LINE:
|
250
245
|
err = handle_first_line(parser);
|
251
|
-
if (!
|
246
|
+
if (!err.ok()) return err;
|
252
247
|
parser->state = GRPC_HTTP_HEADERS;
|
253
248
|
break;
|
254
249
|
case GRPC_HTTP_HEADERS:
|
@@ -263,19 +258,18 @@ static grpc_error_handle finish_line(grpc_http_parser* parser,
|
|
263
258
|
break;
|
264
259
|
} else {
|
265
260
|
err = add_header(parser);
|
266
|
-
if (!
|
261
|
+
if (!err.ok()) {
|
267
262
|
return err;
|
268
263
|
}
|
269
264
|
}
|
270
265
|
break;
|
271
266
|
case GRPC_HTTP_BODY:
|
272
267
|
case GRPC_HTTP_END:
|
273
|
-
GPR_UNREACHABLE_CODE(return
|
274
|
-
"Should never reach here"));
|
268
|
+
GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE("Should never reach here"));
|
275
269
|
}
|
276
270
|
|
277
271
|
parser->cur_line_length = 0;
|
278
|
-
return
|
272
|
+
return absl::OkStatus();
|
279
273
|
}
|
280
274
|
|
281
275
|
static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) {
|
@@ -298,10 +292,9 @@ static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) {
|
|
298
292
|
parser->http.response->chunk_length *= 16;
|
299
293
|
parser->http.response->chunk_length += byte - 'A' + 10;
|
300
294
|
} else {
|
301
|
-
return
|
302
|
-
"Expected chunk size in hexadecimal");
|
295
|
+
return GRPC_ERROR_CREATE("Expected chunk size in hexadecimal");
|
303
296
|
}
|
304
|
-
return
|
297
|
+
return absl::OkStatus();
|
305
298
|
case GRPC_HTTP_CHUNKED_IGNORE_ALL_UNTIL_LF:
|
306
299
|
if (byte == '\n') {
|
307
300
|
if (parser->http.response->chunk_length == 0) {
|
@@ -310,16 +303,15 @@ static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) {
|
|
310
303
|
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_BODY;
|
311
304
|
}
|
312
305
|
}
|
313
|
-
return
|
306
|
+
return absl::OkStatus();
|
314
307
|
case GRPC_HTTP_CHUNKED_BODY:
|
315
308
|
if (parser->http.response->chunk_length == 0) {
|
316
309
|
if (byte != '\r') {
|
317
|
-
return
|
318
|
-
"Expected '\\r\\n' after chunk body");
|
310
|
+
return GRPC_ERROR_CREATE("Expected '\\r\\n' after chunk body");
|
319
311
|
}
|
320
312
|
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_CONSUME_LF;
|
321
313
|
parser->http.response->chunk_length = 0;
|
322
|
-
return
|
314
|
+
return absl::OkStatus();
|
323
315
|
} else {
|
324
316
|
parser->http.response->chunk_length--;
|
325
317
|
/* fallback to the normal body appending code below */
|
@@ -327,11 +319,10 @@ static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) {
|
|
327
319
|
break;
|
328
320
|
case GRPC_HTTP_CHUNKED_CONSUME_LF:
|
329
321
|
if (byte != '\n') {
|
330
|
-
return
|
331
|
-
"Expected '\\r\\n' after chunk body");
|
322
|
+
return GRPC_ERROR_CREATE("Expected '\\r\\n' after chunk body");
|
332
323
|
}
|
333
324
|
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_LENGTH;
|
334
|
-
return
|
325
|
+
return absl::OkStatus();
|
335
326
|
case GRPC_HTTP_CHUNKED_PLAIN:
|
336
327
|
/* avoiding warning; just fallback to normal codepath */
|
337
328
|
break;
|
@@ -342,8 +333,7 @@ static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) {
|
|
342
333
|
body_length = &parser->http.request->body_length;
|
343
334
|
body = &parser->http.request->body;
|
344
335
|
} else {
|
345
|
-
GPR_UNREACHABLE_CODE(
|
346
|
-
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here"));
|
336
|
+
GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE("Should never reach here"));
|
347
337
|
}
|
348
338
|
|
349
339
|
if (*body_length == parser->body_capacity) {
|
@@ -353,7 +343,7 @@ static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) {
|
|
353
343
|
(*body)[*body_length] = static_cast<char>(byte);
|
354
344
|
(*body_length)++;
|
355
345
|
|
356
|
-
return
|
346
|
+
return absl::OkStatus();
|
357
347
|
}
|
358
348
|
|
359
349
|
static bool check_line(grpc_http_parser* parser) {
|
@@ -391,21 +381,20 @@ static grpc_error_handle addbyte(grpc_http_parser* parser, uint8_t byte,
|
|
391
381
|
gpr_log(GPR_ERROR, "HTTP header max line length (%d) exceeded",
|
392
382
|
GRPC_HTTP_PARSER_MAX_HEADER_LENGTH);
|
393
383
|
}
|
394
|
-
return
|
395
|
-
"HTTP header max line length exceeded");
|
384
|
+
return GRPC_ERROR_CREATE("HTTP header max line length exceeded");
|
396
385
|
}
|
397
386
|
parser->cur_line[parser->cur_line_length] = byte;
|
398
387
|
parser->cur_line_length++;
|
399
388
|
if (check_line(parser)) {
|
400
389
|
return finish_line(parser, found_body_start);
|
401
390
|
}
|
402
|
-
return
|
391
|
+
return absl::OkStatus();
|
403
392
|
case GRPC_HTTP_BODY:
|
404
393
|
return addbyte_body(parser, byte);
|
405
394
|
case GRPC_HTTP_END:
|
406
|
-
return
|
395
|
+
return GRPC_ERROR_CREATE("Unexpected byte after end");
|
407
396
|
}
|
408
|
-
GPR_UNREACHABLE_CODE(return
|
397
|
+
GPR_UNREACHABLE_CODE(return absl::OkStatus());
|
409
398
|
}
|
410
399
|
|
411
400
|
void grpc_http_parser_init(grpc_http_parser* parser, grpc_http_type type,
|
@@ -448,15 +437,15 @@ grpc_error_handle grpc_http_parser_parse(grpc_http_parser* parser,
|
|
448
437
|
bool found_body_start = false;
|
449
438
|
grpc_error_handle err =
|
450
439
|
addbyte(parser, GRPC_SLICE_START_PTR(slice)[i], &found_body_start);
|
451
|
-
if (!
|
440
|
+
if (!err.ok()) return err;
|
452
441
|
if (found_body_start && start_of_body != nullptr) *start_of_body = i + 1;
|
453
442
|
}
|
454
|
-
return
|
443
|
+
return absl::OkStatus();
|
455
444
|
}
|
456
445
|
|
457
446
|
grpc_error_handle grpc_http_parser_eof(grpc_http_parser* parser) {
|
458
447
|
if ((parser->state != GRPC_HTTP_BODY) && (parser->state != GRPC_HTTP_END)) {
|
459
|
-
return
|
448
|
+
return GRPC_ERROR_CREATE("Did not finish headers");
|
460
449
|
}
|
461
|
-
return
|
450
|
+
return absl::OkStatus();
|
462
451
|
}
|