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
@@ -50,6 +50,7 @@
|
|
50
50
|
|
51
51
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
52
52
|
#include "src/core/lib/gpr/string.h"
|
53
|
+
#include "src/core/lib/gprpp/strerror.h"
|
53
54
|
#include "src/core/lib/iomgr/sockaddr.h"
|
54
55
|
|
55
56
|
/* set a socket to use zerocopy */
|
@@ -60,7 +61,7 @@ grpc_error_handle grpc_set_socket_zerocopy(int fd) {
|
|
60
61
|
if (err != 0) {
|
61
62
|
return GRPC_OS_ERROR(errno, "setsockopt(SO_ZEROCOPY)");
|
62
63
|
}
|
63
|
-
return
|
64
|
+
return absl::OkStatus();
|
64
65
|
#else
|
65
66
|
(void)fd;
|
66
67
|
return GRPC_OS_ERROR(ENOSYS, "setsockopt(SO_ZEROCOPY)");
|
@@ -84,7 +85,7 @@ grpc_error_handle grpc_set_socket_nonblocking(int fd, int non_blocking) {
|
|
84
85
|
return GRPC_OS_ERROR(errno, "fcntl");
|
85
86
|
}
|
86
87
|
|
87
|
-
return
|
88
|
+
return absl::OkStatus();
|
88
89
|
}
|
89
90
|
|
90
91
|
grpc_error_handle grpc_set_socket_no_sigpipe_if_possible(int fd) {
|
@@ -99,13 +100,13 @@ grpc_error_handle grpc_set_socket_no_sigpipe_if_possible(int fd) {
|
|
99
100
|
return GRPC_OS_ERROR(errno, "getsockopt(SO_NOSIGPIPE)");
|
100
101
|
}
|
101
102
|
if ((newval != 0) != (val != 0)) {
|
102
|
-
return
|
103
|
+
return GRPC_ERROR_CREATE("Failed to set SO_NOSIGPIPE");
|
103
104
|
}
|
104
105
|
#else
|
105
106
|
// Avoid unused parameter warning for conditional parameter
|
106
107
|
(void)fd;
|
107
108
|
#endif
|
108
|
-
return
|
109
|
+
return absl::OkStatus();
|
109
110
|
}
|
110
111
|
|
111
112
|
grpc_error_handle grpc_set_socket_ip_pktinfo_if_possible(int fd) {
|
@@ -118,7 +119,7 @@ grpc_error_handle grpc_set_socket_ip_pktinfo_if_possible(int fd) {
|
|
118
119
|
return GRPC_OS_ERROR(errno, "setsockopt(IP_PKTINFO)");
|
119
120
|
}
|
120
121
|
#endif
|
121
|
-
return
|
122
|
+
return absl::OkStatus();
|
122
123
|
}
|
123
124
|
|
124
125
|
grpc_error_handle grpc_set_socket_ipv6_recvpktinfo_if_possible(int fd) {
|
@@ -131,20 +132,20 @@ grpc_error_handle grpc_set_socket_ipv6_recvpktinfo_if_possible(int fd) {
|
|
131
132
|
return GRPC_OS_ERROR(errno, "setsockopt(IPV6_RECVPKTINFO)");
|
132
133
|
}
|
133
134
|
#endif
|
134
|
-
return
|
135
|
+
return absl::OkStatus();
|
135
136
|
}
|
136
137
|
|
137
138
|
grpc_error_handle grpc_set_socket_sndbuf(int fd, int buffer_size_bytes) {
|
138
139
|
return 0 == setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &buffer_size_bytes,
|
139
140
|
sizeof(buffer_size_bytes))
|
140
|
-
?
|
141
|
+
? absl::OkStatus()
|
141
142
|
: GRPC_OS_ERROR(errno, "setsockopt(SO_SNDBUF)");
|
142
143
|
}
|
143
144
|
|
144
145
|
grpc_error_handle grpc_set_socket_rcvbuf(int fd, int buffer_size_bytes) {
|
145
146
|
return 0 == setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buffer_size_bytes,
|
146
147
|
sizeof(buffer_size_bytes))
|
147
|
-
?
|
148
|
+
? absl::OkStatus()
|
148
149
|
: GRPC_OS_ERROR(errno, "setsockopt(SO_RCVBUF)");
|
149
150
|
}
|
150
151
|
|
@@ -165,7 +166,7 @@ grpc_error_handle grpc_set_socket_cloexec(int fd, int close_on_exec) {
|
|
165
166
|
return GRPC_OS_ERROR(errno, "fcntl");
|
166
167
|
}
|
167
168
|
|
168
|
-
return
|
169
|
+
return absl::OkStatus();
|
169
170
|
}
|
170
171
|
|
171
172
|
/* set a socket to reuse old addresses */
|
@@ -180,17 +181,16 @@ grpc_error_handle grpc_set_socket_reuse_addr(int fd, int reuse) {
|
|
180
181
|
return GRPC_OS_ERROR(errno, "getsockopt(SO_REUSEADDR)");
|
181
182
|
}
|
182
183
|
if ((newval != 0) != val) {
|
183
|
-
return
|
184
|
+
return GRPC_ERROR_CREATE("Failed to set SO_REUSEADDR");
|
184
185
|
}
|
185
186
|
|
186
|
-
return
|
187
|
+
return absl::OkStatus();
|
187
188
|
}
|
188
189
|
|
189
190
|
/* set a socket to reuse old addresses */
|
190
191
|
grpc_error_handle grpc_set_socket_reuse_port(int fd, int reuse) {
|
191
192
|
#ifndef SO_REUSEPORT
|
192
|
-
return
|
193
|
-
"SO_REUSEPORT unavailable on compiling system");
|
193
|
+
return GRPC_ERROR_CREATE("SO_REUSEPORT unavailable on compiling system");
|
194
194
|
#else
|
195
195
|
int val = (reuse != 0);
|
196
196
|
int newval;
|
@@ -202,10 +202,10 @@ grpc_error_handle grpc_set_socket_reuse_port(int fd, int reuse) {
|
|
202
202
|
return GRPC_OS_ERROR(errno, "getsockopt(SO_REUSEPORT)");
|
203
203
|
}
|
204
204
|
if ((newval != 0) != val) {
|
205
|
-
return
|
205
|
+
return GRPC_ERROR_CREATE("Failed to set SO_REUSEPORT");
|
206
206
|
}
|
207
207
|
|
208
|
-
return
|
208
|
+
return absl::OkStatus();
|
209
209
|
#endif
|
210
210
|
}
|
211
211
|
|
@@ -243,9 +243,9 @@ grpc_error_handle grpc_set_socket_low_latency(int fd, int low_latency) {
|
|
243
243
|
return GRPC_OS_ERROR(errno, "getsockopt(TCP_NODELAY)");
|
244
244
|
}
|
245
245
|
if ((newval != 0) != val) {
|
246
|
-
return
|
246
|
+
return GRPC_ERROR_CREATE("Failed to set TCP_NODELAY");
|
247
247
|
}
|
248
|
-
return
|
248
|
+
return absl::OkStatus();
|
249
249
|
}
|
250
250
|
|
251
251
|
/* The default values for TCP_USER_TIMEOUT are currently configured to be in
|
@@ -347,18 +347,18 @@ grpc_error_handle grpc_set_socket_tcp_user_timeout(
|
|
347
347
|
if (0 != setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &timeout,
|
348
348
|
sizeof(timeout))) {
|
349
349
|
gpr_log(GPR_ERROR, "setsockopt(TCP_USER_TIMEOUT) %s",
|
350
|
-
|
351
|
-
return
|
350
|
+
grpc_core::StrError(errno).c_str());
|
351
|
+
return absl::OkStatus();
|
352
352
|
}
|
353
353
|
if (0 != getsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &newval, &len)) {
|
354
354
|
gpr_log(GPR_ERROR, "getsockopt(TCP_USER_TIMEOUT) %s",
|
355
|
-
|
356
|
-
return
|
355
|
+
grpc_core::StrError(errno).c_str());
|
356
|
+
return absl::OkStatus();
|
357
357
|
}
|
358
358
|
if (newval != timeout) {
|
359
359
|
/* Do not fail on failing to set TCP_USER_TIMEOUT for now. */
|
360
360
|
gpr_log(GPR_ERROR, "Failed to set TCP_USER_TIMEOUT");
|
361
|
-
return
|
361
|
+
return absl::OkStatus();
|
362
362
|
}
|
363
363
|
}
|
364
364
|
}
|
@@ -367,7 +367,7 @@ grpc_error_handle grpc_set_socket_tcp_user_timeout(
|
|
367
367
|
gpr_log(GPR_INFO, "TCP_USER_TIMEOUT not supported for this platform");
|
368
368
|
}
|
369
369
|
}
|
370
|
-
return
|
370
|
+
return absl::OkStatus();
|
371
371
|
}
|
372
372
|
|
373
373
|
/* set a socket using a grpc_socket_mutator */
|
@@ -375,15 +375,15 @@ grpc_error_handle grpc_set_socket_with_mutator(int fd, grpc_fd_usage usage,
|
|
375
375
|
grpc_socket_mutator* mutator) {
|
376
376
|
GPR_ASSERT(mutator);
|
377
377
|
if (!grpc_socket_mutator_mutate_fd(mutator, fd, usage)) {
|
378
|
-
return
|
378
|
+
return GRPC_ERROR_CREATE("grpc_socket_mutator failed.");
|
379
379
|
}
|
380
|
-
return
|
380
|
+
return absl::OkStatus();
|
381
381
|
}
|
382
382
|
|
383
383
|
grpc_error_handle grpc_apply_socket_mutator_in_args(
|
384
384
|
int fd, grpc_fd_usage usage, const grpc_core::PosixTcpOptions& options) {
|
385
385
|
if (options.socket_mutator == nullptr) {
|
386
|
-
return
|
386
|
+
return absl::OkStatus();
|
387
387
|
}
|
388
388
|
return grpc_set_socket_with_mutator(fd, usage, options.socket_mutator);
|
389
389
|
}
|
@@ -418,10 +418,11 @@ int grpc_ipv6_loopback_available(void) {
|
|
418
418
|
|
419
419
|
static grpc_error_handle error_for_fd(int fd,
|
420
420
|
const grpc_resolved_address* addr) {
|
421
|
-
if (fd >= 0) return
|
421
|
+
if (fd >= 0) return absl::OkStatus();
|
422
422
|
auto addr_str = grpc_sockaddr_to_string(addr, false);
|
423
423
|
grpc_error_handle err = grpc_error_set_str(
|
424
|
-
GRPC_OS_ERROR(errno, "socket"),
|
424
|
+
GRPC_OS_ERROR(errno, "socket"),
|
425
|
+
grpc_core::StatusStrProperty::kTargetAddress,
|
425
426
|
addr_str.ok() ? addr_str.value() : addr_str.status().ToString());
|
426
427
|
return err;
|
427
428
|
}
|
@@ -456,7 +457,7 @@ grpc_error_handle grpc_create_dualstack_socket_using_factory(
|
|
456
457
|
/* Check if we've got a valid dualstack socket. */
|
457
458
|
if (*newfd >= 0 && grpc_set_socket_dualstack(*newfd)) {
|
458
459
|
*dsmode = GRPC_DSMODE_DUALSTACK;
|
459
|
-
return
|
460
|
+
return absl::OkStatus();
|
460
461
|
}
|
461
462
|
/* If this isn't an IPv4 address, then return whatever we've got. */
|
462
463
|
if (!grpc_sockaddr_is_v4mapped(resolved_addr, nullptr)) {
|
@@ -37,6 +37,7 @@
|
|
37
37
|
#ifdef GRPC_POSIX_SOCKET_TCP
|
38
38
|
|
39
39
|
#include "src/core/lib/event_engine/channel_args_endpoint_config.h"
|
40
|
+
#include "src/core/lib/gprpp/strerror.h"
|
40
41
|
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
41
42
|
|
42
43
|
using ::grpc_event_engine::experimental::EndpointConfig;
|
@@ -64,7 +64,7 @@ struct PosixTcpOptions {
|
|
64
64
|
PosixTcpOptions() = default;
|
65
65
|
// Move ctor
|
66
66
|
PosixTcpOptions(PosixTcpOptions&& other) noexcept {
|
67
|
-
socket_mutator =
|
67
|
+
socket_mutator = std::exchange(other.socket_mutator, nullptr);
|
68
68
|
resource_quota = std::move(other.resource_quota);
|
69
69
|
CopyIntegerOptions(other);
|
70
70
|
}
|
@@ -73,7 +73,7 @@ struct PosixTcpOptions {
|
|
73
73
|
if (socket_mutator != nullptr) {
|
74
74
|
grpc_socket_mutator_unref(socket_mutator);
|
75
75
|
}
|
76
|
-
socket_mutator =
|
76
|
+
socket_mutator = std::exchange(other.socket_mutator, nullptr);
|
77
77
|
resource_quota = std::move(other.resource_quota);
|
78
78
|
CopyIntegerOptions(other);
|
79
79
|
return *this;
|
@@ -123,7 +123,7 @@ static void socket_notify_on_iocp(grpc_winsocket* socket, grpc_closure* closure,
|
|
123
123
|
gpr_mu_lock(&socket->state_mu);
|
124
124
|
if (info->has_pending_iocp) {
|
125
125
|
info->has_pending_iocp = 0;
|
126
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure,
|
126
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus());
|
127
127
|
} else {
|
128
128
|
info->closure = closure;
|
129
129
|
}
|
@@ -144,7 +144,7 @@ void grpc_socket_become_ready(grpc_winsocket* socket,
|
|
144
144
|
GPR_ASSERT(!info->has_pending_iocp);
|
145
145
|
gpr_mu_lock(&socket->state_mu);
|
146
146
|
if (info->closure) {
|
147
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, info->closure,
|
147
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, info->closure, absl::OkStatus());
|
148
148
|
info->closure = NULL;
|
149
149
|
} else {
|
150
150
|
info->has_pending_iocp = 1;
|
@@ -78,7 +78,7 @@ static void OnAlarm(void* arg, grpc_error_handle error) {
|
|
78
78
|
CFStreamConnect* connect = static_cast<CFStreamConnect*>(arg);
|
79
79
|
if (grpc_tcp_trace.enabled()) {
|
80
80
|
gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnAlarm, error:%s", connect,
|
81
|
-
|
81
|
+
grpc_core::StatusToString(error).c_str());
|
82
82
|
}
|
83
83
|
gpr_mu_lock(&connect->mu);
|
84
84
|
grpc_closure* closure = connect->closure;
|
@@ -90,8 +90,7 @@ static void OnAlarm(void* arg, grpc_error_handle error) {
|
|
90
90
|
if (done) {
|
91
91
|
CFStreamConnectCleanup(connect);
|
92
92
|
} else {
|
93
|
-
grpc_error_handle error =
|
94
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out");
|
93
|
+
grpc_error_handle error = GRPC_ERROR_CREATE("connect() timed out");
|
95
94
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
96
95
|
}
|
97
96
|
}
|
@@ -100,7 +99,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
|
|
100
99
|
CFStreamConnect* connect = static_cast<CFStreamConnect*>(arg);
|
101
100
|
if (grpc_tcp_trace.enabled()) {
|
102
101
|
gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnOpen, error:%s", connect,
|
103
|
-
|
102
|
+
grpc_core::StatusToString(error).c_str());
|
104
103
|
}
|
105
104
|
gpr_mu_lock(&connect->mu);
|
106
105
|
grpc_timer_cancel(&connect->alarm);
|
@@ -116,7 +115,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
|
|
116
115
|
gpr_mu_unlock(&connect->mu);
|
117
116
|
CFStreamConnectCleanup(connect);
|
118
117
|
} else {
|
119
|
-
if (
|
118
|
+
if (error.ok()) {
|
120
119
|
CFErrorRef stream_error = CFReadStreamCopyError(connect->read_stream);
|
121
120
|
if (stream_error == NULL) {
|
122
121
|
stream_error = CFWriteStreamCopyError(connect->write_stream);
|
@@ -125,13 +124,11 @@ static void OnOpen(void* arg, grpc_error_handle error) {
|
|
125
124
|
error = GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "connect() error");
|
126
125
|
CFRelease(stream_error);
|
127
126
|
}
|
128
|
-
if (
|
127
|
+
if (error.ok()) {
|
129
128
|
*endpoint = grpc_cfstream_endpoint_create(
|
130
129
|
connect->read_stream, connect->write_stream,
|
131
130
|
connect->addr_name.c_str(), connect->stream_handle);
|
132
131
|
}
|
133
|
-
} else {
|
134
|
-
(void)GRPC_ERROR_REF(error);
|
135
132
|
}
|
136
133
|
gpr_mu_unlock(&connect->mu);
|
137
134
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
@@ -156,8 +153,7 @@ static int64_t CFStreamClientConnect(
|
|
156
153
|
const grpc_resolved_address* resolved_addr, grpc_core::Timestamp deadline) {
|
157
154
|
auto addr_uri = grpc_sockaddr_to_uri(resolved_addr);
|
158
155
|
if (!addr_uri.ok()) {
|
159
|
-
grpc_error_handle error =
|
160
|
-
GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
|
156
|
+
grpc_error_handle error = GRPC_ERROR_CREATE(addr_uri.status().ToString());
|
161
157
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
162
158
|
return 0;
|
163
159
|
}
|
@@ -94,28 +94,28 @@ void grpc_tcp_client_global_init() {
|
|
94
94
|
static grpc_error_handle prepare_socket(
|
95
95
|
const grpc_resolved_address* addr, int fd,
|
96
96
|
const grpc_core::PosixTcpOptions& options) {
|
97
|
-
grpc_error_handle err
|
97
|
+
grpc_error_handle err;
|
98
98
|
|
99
99
|
GPR_ASSERT(fd >= 0);
|
100
100
|
|
101
101
|
err = grpc_set_socket_nonblocking(fd, 1);
|
102
|
-
if (!
|
102
|
+
if (!err.ok()) goto error;
|
103
103
|
err = grpc_set_socket_cloexec(fd, 1);
|
104
|
-
if (!
|
104
|
+
if (!err.ok()) goto error;
|
105
105
|
if (!grpc_is_unix_socket(addr)) {
|
106
106
|
err = grpc_set_socket_low_latency(fd, 1);
|
107
|
-
if (!
|
107
|
+
if (!err.ok()) goto error;
|
108
108
|
err = grpc_set_socket_reuse_addr(fd, 1);
|
109
|
-
if (!
|
109
|
+
if (!err.ok()) goto error;
|
110
110
|
err = grpc_set_socket_tcp_user_timeout(fd, options, true /* is_client */);
|
111
|
-
if (!
|
111
|
+
if (!err.ok()) goto error;
|
112
112
|
}
|
113
113
|
err = grpc_set_socket_no_sigpipe_if_possible(fd);
|
114
|
-
if (!
|
114
|
+
if (!err.ok()) goto error;
|
115
115
|
|
116
116
|
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_CLIENT_CONNECTION_USAGE,
|
117
117
|
options);
|
118
|
-
if (!
|
118
|
+
if (!err.ok()) goto error;
|
119
119
|
|
120
120
|
goto done;
|
121
121
|
|
@@ -132,12 +132,11 @@ static void tc_on_alarm(void* acp, grpc_error_handle error) {
|
|
132
132
|
async_connect* ac = static_cast<async_connect*>(acp);
|
133
133
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
134
134
|
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_alarm: error=%s",
|
135
|
-
ac->addr_str.c_str(),
|
135
|
+
ac->addr_str.c_str(), grpc_core::StatusToString(error).c_str());
|
136
136
|
}
|
137
137
|
gpr_mu_lock(&ac->mu);
|
138
138
|
if (ac->fd != nullptr) {
|
139
|
-
grpc_fd_shutdown(
|
140
|
-
ac->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out"));
|
139
|
+
grpc_fd_shutdown(ac->fd, GRPC_ERROR_CREATE("connect() timed out"));
|
141
140
|
}
|
142
141
|
done = (--ac->refs == 0);
|
143
142
|
gpr_mu_unlock(&ac->mu);
|
@@ -170,11 +169,9 @@ static void on_writable(void* acp, grpc_error_handle error) {
|
|
170
169
|
std::string addr_str = ac->addr_str;
|
171
170
|
grpc_fd* fd;
|
172
171
|
|
173
|
-
(void)GRPC_ERROR_REF(error);
|
174
|
-
|
175
172
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
176
173
|
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_writable: error=%s",
|
177
|
-
ac->addr_str.c_str(),
|
174
|
+
ac->addr_str.c_str(), grpc_core::StatusToString(error).c_str());
|
178
175
|
}
|
179
176
|
|
180
177
|
gpr_mu_lock(&ac->mu);
|
@@ -187,15 +184,15 @@ static void on_writable(void* acp, grpc_error_handle error) {
|
|
187
184
|
grpc_timer_cancel(&ac->alarm);
|
188
185
|
|
189
186
|
gpr_mu_lock(&ac->mu);
|
190
|
-
if (!
|
191
|
-
error =
|
192
|
-
|
187
|
+
if (!error.ok()) {
|
188
|
+
error = grpc_error_set_str(error, grpc_core::StatusStrProperty::kOsError,
|
189
|
+
"Timeout occurred");
|
193
190
|
goto finish;
|
194
191
|
}
|
195
192
|
|
196
193
|
if (connect_cancelled) {
|
197
194
|
// The callback should not get scheduled in this case.
|
198
|
-
error =
|
195
|
+
error = absl::OkStatus();
|
199
196
|
goto finish;
|
200
197
|
}
|
201
198
|
|
@@ -261,14 +258,17 @@ finish:
|
|
261
258
|
}
|
262
259
|
done = (--ac->refs == 0);
|
263
260
|
gpr_mu_unlock(&ac->mu);
|
264
|
-
if (!
|
261
|
+
if (!error.ok()) {
|
265
262
|
std::string str;
|
266
|
-
bool ret = grpc_error_get_str(
|
263
|
+
bool ret = grpc_error_get_str(
|
264
|
+
error, grpc_core::StatusStrProperty::kDescription, &str);
|
267
265
|
GPR_ASSERT(ret);
|
268
266
|
std::string description =
|
269
267
|
absl::StrCat("Failed to connect to remote host: ", str);
|
270
|
-
error = grpc_error_set_str(
|
271
|
-
|
268
|
+
error = grpc_error_set_str(
|
269
|
+
error, grpc_core::StatusStrProperty::kDescription, description);
|
270
|
+
error = grpc_error_set_str(
|
271
|
+
error, grpc_core::StatusStrProperty::kTargetAddress, addr_str);
|
272
272
|
}
|
273
273
|
if (done) {
|
274
274
|
// This is safe even outside the lock, because "done", the sentinel, is
|
@@ -281,9 +281,6 @@ finish:
|
|
281
281
|
// between the core shutdown mu and the connector mu (b/188239051)
|
282
282
|
if (!connect_cancelled) {
|
283
283
|
grpc_core::Executor::Run(closure, error);
|
284
|
-
} else if (!GRPC_ERROR_IS_NONE(error)) {
|
285
|
-
// Unref the error here because it is not used.
|
286
|
-
(void)GRPC_ERROR_UNREF(error);
|
287
284
|
}
|
288
285
|
}
|
289
286
|
|
@@ -302,7 +299,7 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
|
|
302
299
|
}
|
303
300
|
error =
|
304
301
|
grpc_create_dualstack_socket(mapped_addr, SOCK_STREAM, 0, &dsmode, fd);
|
305
|
-
if (!
|
302
|
+
if (!error.ok()) {
|
306
303
|
return error;
|
307
304
|
}
|
308
305
|
if (dsmode == GRPC_DSMODE_IPV4) {
|
@@ -311,10 +308,10 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
|
|
311
308
|
memcpy(mapped_addr, addr, sizeof(*mapped_addr));
|
312
309
|
}
|
313
310
|
}
|
314
|
-
if ((error = prepare_socket(mapped_addr, *fd, options)) !=
|
311
|
+
if ((error = prepare_socket(mapped_addr, *fd, options)) != absl::OkStatus()) {
|
315
312
|
return error;
|
316
313
|
}
|
317
|
-
return
|
314
|
+
return absl::OkStatus();
|
318
315
|
}
|
319
316
|
|
320
317
|
int64_t grpc_tcp_client_create_from_prepared_fd(
|
@@ -330,8 +327,7 @@ int64_t grpc_tcp_client_create_from_prepared_fd(
|
|
330
327
|
|
331
328
|
auto addr_uri = grpc_sockaddr_to_uri(addr);
|
332
329
|
if (!addr_uri.ok()) {
|
333
|
-
grpc_error_handle error =
|
334
|
-
GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
|
330
|
+
grpc_error_handle error = GRPC_ERROR_CREATE(addr_uri.status().ToString());
|
335
331
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
336
332
|
return 0;
|
337
333
|
}
|
@@ -348,15 +344,15 @@ int64_t grpc_tcp_client_create_from_prepared_fd(
|
|
348
344
|
// Connection already succeded. Return 0 to discourage any cancellation
|
349
345
|
// attempts.
|
350
346
|
*ep = grpc_tcp_client_create_from_fd(fdobj, options, addr_uri.value());
|
351
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure,
|
347
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus());
|
352
348
|
return 0;
|
353
349
|
}
|
354
350
|
if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
|
355
351
|
// Connection already failed. Return 0 to discourage any cancellation
|
356
352
|
// attempts.
|
357
353
|
grpc_error_handle error = GRPC_OS_ERROR(errno, "connect");
|
358
|
-
error = grpc_error_set_str(
|
359
|
-
|
354
|
+
error = grpc_error_set_str(
|
355
|
+
error, grpc_core::StatusStrProperty::kTargetAddress, addr_uri.value());
|
360
356
|
grpc_fd_orphan(fdobj, nullptr, nullptr, "tcp_client_connect_error");
|
361
357
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
362
358
|
return 0;
|
@@ -409,7 +405,7 @@ static int64_t tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
|
|
409
405
|
grpc_error_handle error;
|
410
406
|
*ep = nullptr;
|
411
407
|
if ((error = grpc_tcp_client_prepare_fd(options, addr, &mapped_addr, &fd)) !=
|
412
|
-
|
408
|
+
absl::OkStatus()) {
|
413
409
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
414
410
|
return 0;
|
415
411
|
}
|
@@ -455,7 +451,7 @@ static bool tcp_cancel_connect(int64_t connection_handle) {
|
|
455
451
|
// Shutdown the fd. This would cause on_writable to run as soon as possible.
|
456
452
|
// We dont need to pass a custom error here because it wont be used since
|
457
453
|
// the on_connect_closure is not run if connect cancellation is successfull.
|
458
|
-
grpc_fd_shutdown(ac->fd,
|
454
|
+
grpc_fd_shutdown(ac->fd, absl::OkStatus());
|
459
455
|
}
|
460
456
|
bool done = (--ac->refs == 0);
|
461
457
|
gpr_mu_unlock(&ac->mu);
|
@@ -83,8 +83,6 @@ static void on_connect(void* acp, grpc_error_handle error) {
|
|
83
83
|
GPR_ASSERT(*ep == NULL);
|
84
84
|
grpc_closure* on_done = ac->on_done;
|
85
85
|
|
86
|
-
(void)GRPC_ERROR_REF(error);
|
87
|
-
|
88
86
|
gpr_mu_lock(&ac->mu);
|
89
87
|
grpc_winsocket* socket = ac->socket;
|
90
88
|
ac->socket = NULL;
|
@@ -94,7 +92,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
|
|
94
92
|
|
95
93
|
gpr_mu_lock(&ac->mu);
|
96
94
|
|
97
|
-
if (
|
95
|
+
if (error.ok()) {
|
98
96
|
if (socket != NULL) {
|
99
97
|
DWORD transfered_bytes = 0;
|
100
98
|
DWORD flags;
|
@@ -110,7 +108,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
|
|
110
108
|
socket = nullptr;
|
111
109
|
}
|
112
110
|
} else {
|
113
|
-
error =
|
111
|
+
error = GRPC_ERROR_CREATE("socket is null");
|
114
112
|
}
|
115
113
|
}
|
116
114
|
|
@@ -137,13 +135,13 @@ static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
137
135
|
GUID guid = WSAID_CONNECTEX;
|
138
136
|
DWORD ioctl_num_bytes;
|
139
137
|
grpc_winsocket_callback_info* info;
|
140
|
-
grpc_error_handle error
|
138
|
+
grpc_error_handle error;
|
141
139
|
async_connect* ac = NULL;
|
142
140
|
absl::StatusOr<std::string> addr_uri;
|
143
141
|
|
144
142
|
addr_uri = grpc_sockaddr_to_uri(addr);
|
145
143
|
if (!addr_uri.ok()) {
|
146
|
-
error =
|
144
|
+
error = GRPC_ERROR_CREATE(addr_uri.status().ToString());
|
147
145
|
goto failure;
|
148
146
|
}
|
149
147
|
|
@@ -162,7 +160,7 @@ static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
162
160
|
}
|
163
161
|
|
164
162
|
error = grpc_tcp_prepare_socket(sock);
|
165
|
-
if (!
|
163
|
+
if (!error.ok()) {
|
166
164
|
goto failure;
|
167
165
|
}
|
168
166
|
|
@@ -219,13 +217,11 @@ static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
219
217
|
return 0;
|
220
218
|
|
221
219
|
failure:
|
222
|
-
GPR_ASSERT(!
|
220
|
+
GPR_ASSERT(!error.ok());
|
223
221
|
grpc_error_handle final_error = grpc_error_set_str(
|
224
|
-
|
225
|
-
|
226
|
-
GRPC_ERROR_STR_TARGET_ADDRESS,
|
222
|
+
GRPC_ERROR_CREATE_REFERENCING("Failed to connect", &error, 1),
|
223
|
+
grpc_core::StatusStrProperty::kTargetAddress,
|
227
224
|
addr_uri.ok() ? *addr_uri : addr_uri.status().ToString());
|
228
|
-
GRPC_ERROR_UNREF(error);
|
229
225
|
if (socket != NULL) {
|
230
226
|
grpc_winsocket_destroy(socket);
|
231
227
|
} else if (sock != INVALID_SOCKET) {
|