grpc 1.50.0-x86_64-linux → 1.51.0-x86_64-linux
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/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- 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 +55 -18
- 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
@@ -0,0 +1,41 @@
|
|
1
|
+
// Copyright 2022 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include <grpc/support/port_platform.h>
|
16
|
+
|
17
|
+
#include "src/core/lib/gprpp/strerror.h"
|
18
|
+
|
19
|
+
#include <string.h>
|
20
|
+
|
21
|
+
#include "absl/strings/str_format.h"
|
22
|
+
|
23
|
+
namespace grpc_core {
|
24
|
+
|
25
|
+
#ifdef GPR_WINDOWS
|
26
|
+
std::string StrError(int err) { return strerror(err); }
|
27
|
+
#else
|
28
|
+
std::string StrError(int err) {
|
29
|
+
struct Finish {
|
30
|
+
static std::string Run(char* buf, int err, int r) {
|
31
|
+
if (r == 0) return buf;
|
32
|
+
return absl::StrFormat("strerror_r(%d) failed: %d", err, r);
|
33
|
+
}
|
34
|
+
static std::string Run(char*, int, const char* r) { return r; }
|
35
|
+
};
|
36
|
+
char buf[256];
|
37
|
+
return Finish::Run(buf, err, strerror_r(err, buf, sizeof(buf)));
|
38
|
+
}
|
39
|
+
#endif // !GPR_WINDOWS
|
40
|
+
|
41
|
+
} // namespace grpc_core
|
@@ -1,5 +1,4 @@
|
|
1
|
-
//
|
2
|
-
// Copyright 2021 gRPC authors.
|
1
|
+
// Copyright 2022 gRPC authors.
|
3
2
|
//
|
4
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
4
|
// you may not use this file except in compliance with the License.
|
@@ -12,22 +11,19 @@
|
|
12
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
12
|
// See the License for the specific language governing permissions and
|
14
13
|
// limitations under the License.
|
15
|
-
|
14
|
+
|
15
|
+
#ifndef GRPC_CORE_LIB_GPRPP_STRERROR_H
|
16
|
+
#define GRPC_CORE_LIB_GPRPP_STRERROR_H
|
16
17
|
|
17
18
|
#include <grpc/support/port_platform.h>
|
18
19
|
|
19
|
-
#include
|
20
|
+
#include <string>
|
20
21
|
|
21
22
|
namespace grpc_core {
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
if (resource_type == type_url()) return true;
|
26
|
-
if (resource_type == v2_type_url()) {
|
27
|
-
if (is_v2 != nullptr) *is_v2 = true;
|
28
|
-
return true;
|
29
|
-
}
|
30
|
-
return false;
|
31
|
-
}
|
24
|
+
// Returns a string describing the posix error code.
|
25
|
+
std::string StrError(int err);
|
32
26
|
|
33
27
|
} // namespace grpc_core
|
28
|
+
|
29
|
+
#endif // GRPC_CORE_LIB_GPRPP_STRERROR_H
|
@@ -30,7 +30,6 @@
|
|
30
30
|
#include <grpc/support/thd_id.h>
|
31
31
|
#include <grpc/support/time.h>
|
32
32
|
|
33
|
-
#include "src/core/lib/gpr/tls.h"
|
34
33
|
#include "src/core/lib/gprpp/memory.h"
|
35
34
|
#include "src/core/lib/gprpp/thd.h"
|
36
35
|
|
@@ -44,7 +43,7 @@ struct thd_info {
|
|
44
43
|
bool joinable; /* whether it is joinable */
|
45
44
|
};
|
46
45
|
|
47
|
-
|
46
|
+
thread_local struct thd_info* g_thd_info;
|
48
47
|
|
49
48
|
class ThreadInternalsWindows
|
50
49
|
: public grpc_core::internal::ThreadInternalsInterface {
|
data/src/core/lib/gprpp/time.cc
CHANGED
@@ -18,7 +18,6 @@
|
|
18
18
|
|
19
19
|
#include <atomic>
|
20
20
|
#include <chrono>
|
21
|
-
#include <cstdint>
|
22
21
|
#include <limits>
|
23
22
|
#include <string>
|
24
23
|
#include <utility>
|
@@ -26,10 +25,11 @@
|
|
26
25
|
#include "absl/strings/str_format.h"
|
27
26
|
|
28
27
|
#include <grpc/impl/codegen/gpr_types.h>
|
29
|
-
#include <grpc/support/log.h>
|
30
28
|
|
31
29
|
#include "src/core/lib/gprpp/no_destruct.h"
|
32
30
|
|
31
|
+
// IWYU pragma: no_include <ratio>
|
32
|
+
|
33
33
|
namespace grpc_core {
|
34
34
|
|
35
35
|
namespace {
|
@@ -142,8 +142,7 @@ int64_t TimespanToMillisRoundDown(gpr_timespec ts) {
|
|
142
142
|
|
143
143
|
} // namespace
|
144
144
|
|
145
|
-
|
146
|
-
Timestamp::thread_local_time_source_{
|
145
|
+
thread_local Timestamp::Source* Timestamp::thread_local_time_source_{
|
147
146
|
NoDestructSingleton<GprNowTimeSource>::Get()};
|
148
147
|
|
149
148
|
Timestamp ScopedTimeCache::Now() {
|
data/src/core/lib/gprpp/time.h
CHANGED
@@ -27,12 +27,23 @@
|
|
27
27
|
|
28
28
|
#include <grpc/event_engine/event_engine.h>
|
29
29
|
#include <grpc/impl/codegen/gpr_types.h>
|
30
|
+
#include <grpc/support/log.h>
|
30
31
|
#include <grpc/support/time.h>
|
31
32
|
|
32
33
|
#include "src/core/lib/gpr/time_precise.h"
|
33
|
-
#include "src/core/lib/gpr/tls.h"
|
34
34
|
#include "src/core/lib/gpr/useful.h"
|
35
35
|
|
36
|
+
#define GRPC_LOG_EVERY_N_SEC(n, format, ...) \
|
37
|
+
do { \
|
38
|
+
static std::atomic<uint64_t> prev{0}; \
|
39
|
+
uint64_t now = grpc_core::Timestamp::FromTimespecRoundDown( \
|
40
|
+
gpr_now(GPR_CLOCK_MONOTONIC)) \
|
41
|
+
.milliseconds_after_process_epoch(); \
|
42
|
+
if ((now - prev.exchange(now)) > (n)*1000) { \
|
43
|
+
gpr_log(GPR_INFO, format, __VA_ARGS__); \
|
44
|
+
} \
|
45
|
+
} while (0)
|
46
|
+
|
36
47
|
namespace grpc_core {
|
37
48
|
|
38
49
|
namespace time_detail {
|
@@ -150,7 +161,7 @@ class Timestamp {
|
|
150
161
|
explicit constexpr Timestamp(int64_t millis) : millis_(millis) {}
|
151
162
|
|
152
163
|
int64_t millis_ = 0;
|
153
|
-
static
|
164
|
+
static thread_local Timestamp::Source* thread_local_time_source_;
|
154
165
|
};
|
155
166
|
|
156
167
|
class ScopedTimeCache final : public Timestamp::ScopedSource {
|
@@ -21,6 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <map>
|
23
23
|
#include <string>
|
24
|
+
#include <utility>
|
24
25
|
#include <vector>
|
25
26
|
|
26
27
|
#include "absl/status/status.h"
|
@@ -69,7 +70,23 @@ class ValidationErrors {
|
|
69
70
|
: errors_(errors) {
|
70
71
|
errors_->PushField(field_name);
|
71
72
|
}
|
72
|
-
|
73
|
+
|
74
|
+
// Not copyable.
|
75
|
+
ScopedField(const ScopedField& other) = delete;
|
76
|
+
ScopedField& operator=(const ScopedField& other) = delete;
|
77
|
+
|
78
|
+
// Movable.
|
79
|
+
ScopedField(ScopedField&& other) noexcept
|
80
|
+
: errors_(std::exchange(other.errors_, nullptr)) {}
|
81
|
+
ScopedField& operator=(ScopedField&& other) noexcept {
|
82
|
+
if (errors_ != nullptr) errors_->PopField();
|
83
|
+
errors_ = std::exchange(other.errors_, nullptr);
|
84
|
+
return *this;
|
85
|
+
}
|
86
|
+
|
87
|
+
~ScopedField() {
|
88
|
+
if (errors_ != nullptr) errors_->PopField();
|
89
|
+
}
|
73
90
|
|
74
91
|
private:
|
75
92
|
ValidationErrors* errors_;
|
@@ -39,6 +39,7 @@
|
|
39
39
|
#include "src/core/lib/channel/channel_args.h"
|
40
40
|
#include "src/core/lib/channel/channel_args_preconditioning.h"
|
41
41
|
#include "src/core/lib/config/core_configuration.h"
|
42
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
42
43
|
#include "src/core/lib/http/format_request.h"
|
43
44
|
#include "src/core/lib/http/parser.h"
|
44
45
|
#include "src/core/lib/iomgr/endpoint.h"
|
@@ -48,8 +49,7 @@
|
|
48
49
|
#include "src/core/lib/resource_quota/api.h"
|
49
50
|
#include "src/core/lib/security/credentials/credentials.h"
|
50
51
|
#include "src/core/lib/security/security_connector/security_connector.h"
|
51
|
-
#include "src/core/lib/slice/
|
52
|
-
#include "src/core/lib/slice/slice_refcount.h"
|
52
|
+
#include "src/core/lib/slice/slice.h"
|
53
53
|
#include "src/core/lib/transport/error_utils.h"
|
54
54
|
#include "src/core/lib/transport/handshaker_registry.h"
|
55
55
|
#include "src/core/lib/transport/tcp_connect_handshaker.h"
|
@@ -171,7 +171,8 @@ HttpRequest::HttpRequest(
|
|
171
171
|
resource_quota_(ResourceQuotaFromChannelArgs(channel_args_)),
|
172
172
|
pollent_(pollent),
|
173
173
|
pollset_set_(grpc_pollset_set_create()),
|
174
|
-
test_only_generate_response_(std::move(test_only_generate_response))
|
174
|
+
test_only_generate_response_(std::move(test_only_generate_response)),
|
175
|
+
resolver_(GetDNSResolver()) {
|
175
176
|
grpc_http_parser_init(&parser_, GRPC_HTTP_RESPONSE, response);
|
176
177
|
grpc_slice_buffer_init(&incoming_);
|
177
178
|
grpc_slice_buffer_init(&outgoing_);
|
@@ -194,11 +195,10 @@ HttpRequest::~HttpRequest() {
|
|
194
195
|
if (own_endpoint_ && ep_ != nullptr) {
|
195
196
|
grpc_endpoint_destroy(ep_);
|
196
197
|
}
|
197
|
-
|
198
|
+
CSliceUnref(request_text_);
|
198
199
|
grpc_iomgr_unregister_object(&iomgr_obj_);
|
199
|
-
|
200
|
-
|
201
|
-
GRPC_ERROR_UNREF(overall_error_);
|
200
|
+
grpc_slice_buffer_destroy(&incoming_);
|
201
|
+
grpc_slice_buffer_destroy(&outgoing_);
|
202
202
|
grpc_pollset_set_destroy(pollset_set_);
|
203
203
|
}
|
204
204
|
|
@@ -209,7 +209,7 @@ void HttpRequest::Start() {
|
|
209
209
|
return;
|
210
210
|
}
|
211
211
|
Ref().release(); // ref held by pending DNS resolution
|
212
|
-
dns_request_handle_ =
|
212
|
+
dns_request_handle_ = resolver_->LookupHostname(
|
213
213
|
absl::bind_front(&HttpRequest::OnResolved, this), uri_.authority(),
|
214
214
|
uri_.scheme(), kDefaultDNSRequestTimeout, pollset_set_,
|
215
215
|
/*name_server=*/"");
|
@@ -222,35 +222,32 @@ void HttpRequest::Orphan() {
|
|
222
222
|
cancelled_ = true;
|
223
223
|
// cancel potentially pending DNS resolution.
|
224
224
|
if (dns_request_handle_.has_value() &&
|
225
|
-
|
226
|
-
Finish(
|
227
|
-
"cancelled during DNS resolution"));
|
225
|
+
resolver_->Cancel(dns_request_handle_.value())) {
|
226
|
+
Finish(GRPC_ERROR_CREATE("cancelled during DNS resolution"));
|
228
227
|
Unref();
|
229
228
|
}
|
230
229
|
if (handshake_mgr_ != nullptr) {
|
231
230
|
// Shutdown will cancel any ongoing tcp connect.
|
232
|
-
handshake_mgr_->Shutdown(
|
233
|
-
"HTTP request cancelled during handshake"));
|
231
|
+
handshake_mgr_->Shutdown(
|
232
|
+
GRPC_ERROR_CREATE("HTTP request cancelled during handshake"));
|
234
233
|
}
|
235
234
|
if (own_endpoint_ && ep_ != nullptr) {
|
236
|
-
grpc_endpoint_shutdown(
|
237
|
-
ep_, GRPC_ERROR_CREATE_FROM_STATIC_STRING("HTTP request cancelled"));
|
235
|
+
grpc_endpoint_shutdown(ep_, GRPC_ERROR_CREATE("HTTP request cancelled"));
|
238
236
|
}
|
239
237
|
}
|
240
238
|
Unref();
|
241
239
|
}
|
242
240
|
|
243
241
|
void HttpRequest::AppendError(grpc_error_handle error) {
|
244
|
-
if (
|
245
|
-
overall_error_ =
|
246
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed HTTP/1 client request");
|
242
|
+
if (overall_error_.ok()) {
|
243
|
+
overall_error_ = GRPC_ERROR_CREATE("Failed HTTP/1 client request");
|
247
244
|
}
|
248
245
|
const grpc_resolved_address* addr = &addresses_[next_address_ - 1];
|
249
246
|
auto addr_text = grpc_sockaddr_to_uri(addr);
|
250
247
|
overall_error_ = grpc_error_add_child(
|
251
248
|
overall_error_,
|
252
249
|
grpc_error_set_str(
|
253
|
-
error,
|
250
|
+
error, StatusStrProperty::kTargetAddress,
|
254
251
|
addr_text.ok() ? addr_text.value() : addr_text.status().ToString()));
|
255
252
|
}
|
256
253
|
|
@@ -260,19 +257,19 @@ void HttpRequest::OnReadInternal(grpc_error_handle error) {
|
|
260
257
|
have_read_byte_ = 1;
|
261
258
|
grpc_error_handle err =
|
262
259
|
grpc_http_parser_parse(&parser_, incoming_.slices[i], nullptr);
|
263
|
-
if (!
|
260
|
+
if (!err.ok()) {
|
264
261
|
Finish(err);
|
265
262
|
return;
|
266
263
|
}
|
267
264
|
}
|
268
265
|
}
|
269
266
|
if (cancelled_) {
|
270
|
-
Finish(
|
271
|
-
|
272
|
-
} else if (
|
267
|
+
Finish(GRPC_ERROR_CREATE_REFERENCING("HTTP1 request cancelled during read",
|
268
|
+
&overall_error_, 1));
|
269
|
+
} else if (error.ok()) {
|
273
270
|
DoRead();
|
274
271
|
} else if (!have_read_byte_) {
|
275
|
-
NextAddress(
|
272
|
+
NextAddress(error);
|
276
273
|
} else {
|
277
274
|
Finish(grpc_http_parser_eof(&parser_));
|
278
275
|
}
|
@@ -282,15 +279,15 @@ void HttpRequest::ContinueDoneWriteAfterScheduleOnExecCtx(
|
|
282
279
|
void* arg, grpc_error_handle error) {
|
283
280
|
RefCountedPtr<HttpRequest> req(static_cast<HttpRequest*>(arg));
|
284
281
|
MutexLock lock(&req->mu_);
|
285
|
-
if (
|
282
|
+
if (error.ok() && !req->cancelled_) {
|
286
283
|
req->OnWritten();
|
287
284
|
} else {
|
288
|
-
req->NextAddress(
|
285
|
+
req->NextAddress(error);
|
289
286
|
}
|
290
287
|
}
|
291
288
|
|
292
289
|
void HttpRequest::StartWrite() {
|
293
|
-
|
290
|
+
CSliceRef(request_text_);
|
294
291
|
grpc_slice_buffer_add(&outgoing_, request_text_);
|
295
292
|
Ref().release(); // ref held by pending write
|
296
293
|
grpc_endpoint_write(ep_, &outgoing_, &done_write_, nullptr,
|
@@ -307,19 +304,19 @@ void HttpRequest::OnHandshakeDone(void* arg, grpc_error_handle error) {
|
|
307
304
|
}
|
308
305
|
MutexLock lock(&req->mu_);
|
309
306
|
req->own_endpoint_ = true;
|
310
|
-
if (!
|
307
|
+
if (!error.ok()) {
|
311
308
|
req->handshake_mgr_.reset();
|
312
|
-
req->NextAddress(
|
309
|
+
req->NextAddress(error);
|
313
310
|
return;
|
314
311
|
}
|
315
312
|
// Handshake completed, so we own fields in args
|
316
|
-
|
313
|
+
grpc_slice_buffer_destroy(args->read_buffer);
|
317
314
|
gpr_free(args->read_buffer);
|
318
315
|
req->ep_ = args->endpoint;
|
319
316
|
req->handshake_mgr_.reset();
|
320
317
|
if (req->cancelled_) {
|
321
|
-
req->NextAddress(
|
322
|
-
"HTTP request cancelled during handshake"));
|
318
|
+
req->NextAddress(
|
319
|
+
GRPC_ERROR_CREATE("HTTP request cancelled during handshake"));
|
323
320
|
return;
|
324
321
|
}
|
325
322
|
req->StartWrite();
|
@@ -332,14 +329,14 @@ void HttpRequest::DoHandshake(const grpc_resolved_address* addr) {
|
|
332
329
|
channel_creds_->create_security_connector(
|
333
330
|
nullptr /*call_creds*/, uri_.authority().c_str(), &args);
|
334
331
|
if (sc == nullptr) {
|
335
|
-
Finish(
|
336
|
-
|
332
|
+
Finish(GRPC_ERROR_CREATE_REFERENCING("failed to create security connector",
|
333
|
+
&overall_error_, 1));
|
337
334
|
return;
|
338
335
|
}
|
339
336
|
absl::StatusOr<std::string> address = grpc_sockaddr_to_uri(addr);
|
340
337
|
if (!address.ok()) {
|
341
|
-
Finish(
|
342
|
-
|
338
|
+
Finish(GRPC_ERROR_CREATE_REFERENCING("Failed to extract URI from address",
|
339
|
+
&overall_error_, 1));
|
343
340
|
return;
|
344
341
|
}
|
345
342
|
args = args.SetObject(std::move(sc))
|
@@ -358,17 +355,17 @@ void HttpRequest::DoHandshake(const grpc_resolved_address* addr) {
|
|
358
355
|
}
|
359
356
|
|
360
357
|
void HttpRequest::NextAddress(grpc_error_handle error) {
|
361
|
-
if (!
|
358
|
+
if (!error.ok()) {
|
362
359
|
AppendError(error);
|
363
360
|
}
|
364
361
|
if (cancelled_) {
|
365
|
-
Finish(
|
366
|
-
|
362
|
+
Finish(GRPC_ERROR_CREATE_REFERENCING("HTTP request was cancelled",
|
363
|
+
&overall_error_, 1));
|
367
364
|
return;
|
368
365
|
}
|
369
366
|
if (next_address_ == addresses_.size()) {
|
370
|
-
Finish(
|
371
|
-
|
367
|
+
Finish(GRPC_ERROR_CREATE_REFERENCING("Failed HTTP requests to all targets",
|
368
|
+
&overall_error_, 1));
|
372
369
|
return;
|
373
370
|
}
|
374
371
|
const grpc_resolved_address* addr = &addresses_[next_address_++];
|
@@ -381,8 +378,7 @@ void HttpRequest::OnResolved(
|
|
381
378
|
MutexLock lock(&mu_);
|
382
379
|
dns_request_handle_.reset();
|
383
380
|
if (cancelled_) {
|
384
|
-
Finish(
|
385
|
-
"cancelled during DNS resolution"));
|
381
|
+
Finish(GRPC_ERROR_CREATE("cancelled during DNS resolution"));
|
386
382
|
return;
|
387
383
|
}
|
388
384
|
if (!addresses_or.ok()) {
|
@@ -391,7 +387,7 @@ void HttpRequest::OnResolved(
|
|
391
387
|
}
|
392
388
|
addresses_ = std::move(*addresses_or);
|
393
389
|
next_address_ = 0;
|
394
|
-
NextAddress(
|
390
|
+
NextAddress(absl::OkStatus());
|
395
391
|
}
|
396
392
|
|
397
393
|
} // namespace grpc_core
|
data/src/core/lib/http/httpcli.h
CHANGED
@@ -24,9 +24,11 @@
|
|
24
24
|
#include <stddef.h>
|
25
25
|
|
26
26
|
#include <functional>
|
27
|
+
#include <memory>
|
27
28
|
#include <vector>
|
28
29
|
|
29
30
|
#include "absl/base/thread_annotations.h"
|
31
|
+
#include "absl/status/status.h"
|
30
32
|
#include "absl/status/statusor.h"
|
31
33
|
#include "absl/types/optional.h"
|
32
34
|
|
@@ -195,8 +197,7 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
|
|
195
197
|
static void OnRead(void* user_data, grpc_error_handle error) {
|
196
198
|
HttpRequest* req = static_cast<HttpRequest*>(user_data);
|
197
199
|
ExecCtx::Run(DEBUG_LOCATION,
|
198
|
-
&req->continue_on_read_after_schedule_on_exec_ctx_,
|
199
|
-
GRPC_ERROR_REF(error));
|
200
|
+
&req->continue_on_read_after_schedule_on_exec_ctx_, error);
|
200
201
|
}
|
201
202
|
|
202
203
|
// Needed since OnRead may be called inline from grpc_endpoint_read
|
@@ -215,8 +216,7 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
|
|
215
216
|
static void DoneWrite(void* arg, grpc_error_handle error) {
|
216
217
|
HttpRequest* req = static_cast<HttpRequest*>(arg);
|
217
218
|
ExecCtx::Run(DEBUG_LOCATION,
|
218
|
-
&req->continue_done_write_after_schedule_on_exec_ctx_,
|
219
|
-
GRPC_ERROR_REF(error));
|
219
|
+
&req->continue_done_write_after_schedule_on_exec_ctx_, error);
|
220
220
|
}
|
221
221
|
|
222
222
|
// Needed since DoneWrite may be called inline from grpc_endpoint_write
|
@@ -261,7 +261,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
|
|
261
261
|
grpc_iomgr_object iomgr_obj_ ABSL_GUARDED_BY(mu_);
|
262
262
|
grpc_slice_buffer incoming_ ABSL_GUARDED_BY(mu_);
|
263
263
|
grpc_slice_buffer outgoing_ ABSL_GUARDED_BY(mu_);
|
264
|
-
grpc_error_handle overall_error_ ABSL_GUARDED_BY(mu_) =
|
264
|
+
grpc_error_handle overall_error_ ABSL_GUARDED_BY(mu_) = absl::OkStatus();
|
265
|
+
std::shared_ptr<DNSResolver> resolver_;
|
265
266
|
absl::optional<DNSResolver::TaskHandle> dns_request_handle_
|
266
267
|
ABSL_GUARDED_BY(mu_) = DNSResolver::kNullHandle;
|
267
268
|
};
|
@@ -109,22 +109,20 @@ class grpc_httpcli_ssl_channel_security_connector final
|
|
109
109
|
const ChannelArgs& /*args*/,
|
110
110
|
RefCountedPtr<grpc_auth_context>* /*auth_context*/,
|
111
111
|
grpc_closure* on_peer_checked) override {
|
112
|
-
grpc_error_handle error
|
112
|
+
grpc_error_handle error;
|
113
113
|
|
114
114
|
/* Check the peer name. */
|
115
115
|
if (secure_peer_name_ != nullptr &&
|
116
116
|
!tsi_ssl_peer_matches_name(&peer, secure_peer_name_)) {
|
117
|
-
error =
|
118
|
-
|
117
|
+
error = GRPC_ERROR_CREATE(absl::StrCat("Peer name ", secure_peer_name_,
|
118
|
+
" is not in peer certificate"));
|
119
119
|
}
|
120
120
|
ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
|
121
121
|
tsi_peer_destruct(&peer);
|
122
122
|
}
|
123
123
|
|
124
124
|
void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
|
125
|
-
grpc_error_handle error) override {
|
126
|
-
GRPC_ERROR_UNREF(error);
|
127
|
-
}
|
125
|
+
grpc_error_handle /*error*/) override {}
|
128
126
|
|
129
127
|
int cmp(const grpc_security_connector* other_sc) const override {
|
130
128
|
auto* other =
|