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
@@ -52,6 +52,7 @@
|
|
52
52
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
53
53
|
#include "src/core/lib/gpr/string.h"
|
54
54
|
#include "src/core/lib/gprpp/memory.h"
|
55
|
+
#include "src/core/lib/gprpp/strerror.h"
|
55
56
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
56
57
|
#include "src/core/lib/iomgr/resolve_address.h"
|
57
58
|
#include "src/core/lib/iomgr/sockaddr.h"
|
@@ -99,7 +100,7 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
|
|
99
100
|
s->memory_quota = s->options.resource_quota->memory_quota();
|
100
101
|
gpr_atm_no_barrier_store(&s->next_pollset_to_assign, 0);
|
101
102
|
*server = s;
|
102
|
-
return
|
103
|
+
return absl::OkStatus();
|
103
104
|
}
|
104
105
|
|
105
106
|
static void finish_shutdown(grpc_tcp_server* s) {
|
@@ -108,7 +109,7 @@ static void finish_shutdown(grpc_tcp_server* s) {
|
|
108
109
|
gpr_mu_unlock(&s->mu);
|
109
110
|
if (s->shutdown_complete != nullptr) {
|
110
111
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, s->shutdown_complete,
|
111
|
-
|
112
|
+
absl::OkStatus());
|
112
113
|
}
|
113
114
|
gpr_mu_destroy(&s->mu);
|
114
115
|
while (s->head) {
|
@@ -166,8 +167,7 @@ static void tcp_server_destroy(grpc_tcp_server* s) {
|
|
166
167
|
if (s->active_ports) {
|
167
168
|
grpc_tcp_listener* sp;
|
168
169
|
for (sp = s->head; sp; sp = sp->next) {
|
169
|
-
grpc_fd_shutdown(
|
170
|
-
sp->emfd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server destroyed"));
|
170
|
+
grpc_fd_shutdown(sp->emfd, GRPC_ERROR_CREATE("Server destroyed"));
|
171
171
|
}
|
172
172
|
gpr_mu_unlock(&s->mu);
|
173
173
|
} else {
|
@@ -180,7 +180,7 @@ static void tcp_server_destroy(grpc_tcp_server* s) {
|
|
180
180
|
static void on_read(void* arg, grpc_error_handle err) {
|
181
181
|
grpc_tcp_listener* sp = static_cast<grpc_tcp_listener*>(arg);
|
182
182
|
grpc_pollset* read_notifier_pollset;
|
183
|
-
if (!
|
183
|
+
if (!err.ok()) {
|
184
184
|
goto error;
|
185
185
|
}
|
186
186
|
|
@@ -202,7 +202,8 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
202
202
|
} else {
|
203
203
|
gpr_mu_lock(&sp->server->mu);
|
204
204
|
if (!sp->server->shutdown_listeners) {
|
205
|
-
gpr_log(GPR_ERROR, "Failed accept4: %s",
|
205
|
+
gpr_log(GPR_ERROR, "Failed accept4: %s",
|
206
|
+
grpc_core::StrError(errno).c_str());
|
206
207
|
} else {
|
207
208
|
/* if we have shutdown listeners, accept4 could fail, and we
|
208
209
|
needn't notify users */
|
@@ -230,9 +231,10 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
230
231
|
if (grpc_is_unix_socket(&addr)) {
|
231
232
|
memset(&addr, 0, sizeof(addr));
|
232
233
|
addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
|
233
|
-
if (
|
234
|
+
if (getpeername(fd, reinterpret_cast<struct sockaddr*>(addr.addr),
|
234
235
|
&(addr.len)) < 0) {
|
235
|
-
gpr_log(GPR_ERROR, "Failed getsockname: %s",
|
236
|
+
gpr_log(GPR_ERROR, "Failed getsockname: %s",
|
237
|
+
grpc_core::StrError(errno).c_str());
|
236
238
|
close(fd);
|
237
239
|
goto error;
|
238
240
|
}
|
@@ -242,7 +244,7 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
242
244
|
|
243
245
|
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_CONNECTION_USAGE,
|
244
246
|
sp->server->options);
|
245
|
-
if (!
|
247
|
+
if (!err.ok()) {
|
246
248
|
goto error;
|
247
249
|
}
|
248
250
|
|
@@ -280,7 +282,7 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
280
282
|
read_notifier_pollset, acceptor);
|
281
283
|
}
|
282
284
|
|
283
|
-
GPR_UNREACHABLE_CODE(return
|
285
|
+
GPR_UNREACHABLE_CODE(return);
|
284
286
|
|
285
287
|
error:
|
286
288
|
gpr_mu_lock(&sp->server->mu);
|
@@ -303,8 +305,8 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
|
|
303
305
|
grpc_dualstack_mode dsmode;
|
304
306
|
grpc_tcp_listener* sp = nullptr;
|
305
307
|
grpc_tcp_listener* sp2 = nullptr;
|
306
|
-
grpc_error_handle v6_err
|
307
|
-
grpc_error_handle v4_err
|
308
|
+
grpc_error_handle v6_err;
|
309
|
+
grpc_error_handle v4_err;
|
308
310
|
*out_port = -1;
|
309
311
|
|
310
312
|
if (grpc_tcp_server_have_ifaddrs() && s->expand_wildcard_addrs) {
|
@@ -315,17 +317,17 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
|
|
315
317
|
grpc_sockaddr_make_wildcards(requested_port, &wild4, &wild6);
|
316
318
|
/* Try listening on IPv6 first. */
|
317
319
|
if ((v6_err = grpc_tcp_server_add_addr(s, &wild6, port_index, fd_index,
|
318
|
-
&dsmode, &sp)) ==
|
320
|
+
&dsmode, &sp)) == absl::OkStatus()) {
|
319
321
|
++fd_index;
|
320
322
|
requested_port = *out_port = sp->port;
|
321
323
|
if (dsmode == GRPC_DSMODE_DUALSTACK || dsmode == GRPC_DSMODE_IPV4) {
|
322
|
-
return
|
324
|
+
return absl::OkStatus();
|
323
325
|
}
|
324
326
|
}
|
325
327
|
/* If we got a v6-only socket or nothing, try adding 0.0.0.0. */
|
326
328
|
grpc_sockaddr_set_port(&wild4, requested_port);
|
327
329
|
if ((v4_err = grpc_tcp_server_add_addr(s, &wild4, port_index, fd_index,
|
328
|
-
&dsmode, &sp2)) ==
|
330
|
+
&dsmode, &sp2)) == absl::OkStatus()) {
|
329
331
|
*out_port = sp2->port;
|
330
332
|
if (sp != nullptr) {
|
331
333
|
sp2->is_sibling = 1;
|
@@ -333,25 +335,23 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
|
|
333
335
|
}
|
334
336
|
}
|
335
337
|
if (*out_port > 0) {
|
336
|
-
if (!
|
338
|
+
if (!v6_err.ok()) {
|
337
339
|
gpr_log(GPR_INFO,
|
338
340
|
"Failed to add :: listener, "
|
339
341
|
"the environment may not support IPv6: %s",
|
340
|
-
|
341
|
-
GRPC_ERROR_UNREF(v6_err);
|
342
|
+
grpc_core::StatusToString(v6_err).c_str());
|
342
343
|
}
|
343
|
-
if (!
|
344
|
+
if (!v4_err.ok()) {
|
344
345
|
gpr_log(GPR_INFO,
|
345
346
|
"Failed to add 0.0.0.0 listener, "
|
346
347
|
"the environment may not support IPv4: %s",
|
347
|
-
|
348
|
-
GRPC_ERROR_UNREF(v4_err);
|
348
|
+
grpc_core::StatusToString(v4_err).c_str());
|
349
349
|
}
|
350
|
-
return
|
350
|
+
return absl::OkStatus();
|
351
351
|
} else {
|
352
|
-
grpc_error_handle root_err =
|
353
|
-
"Failed to add any wildcard listeners");
|
354
|
-
GPR_ASSERT(!
|
352
|
+
grpc_error_handle root_err =
|
353
|
+
GRPC_ERROR_CREATE("Failed to add any wildcard listeners");
|
354
|
+
GPR_ASSERT(!v6_err.ok() && !v4_err.ok());
|
355
355
|
root_err = grpc_error_add_child(root_err, v6_err);
|
356
356
|
root_err = grpc_error_add_child(root_err, v4_err);
|
357
357
|
return root_err;
|
@@ -374,14 +374,14 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
|
|
374
374
|
grpc_dualstack_mode dsmode;
|
375
375
|
err = grpc_create_dualstack_socket(&listener->addr, SOCK_STREAM, 0, &dsmode,
|
376
376
|
&fd);
|
377
|
-
if (!
|
377
|
+
if (!err.ok()) return err;
|
378
378
|
err = grpc_tcp_server_prepare_socket(listener->server, fd, &listener->addr,
|
379
379
|
true, &port);
|
380
|
-
if (!
|
380
|
+
if (!err.ok()) return err;
|
381
381
|
listener->server->nports++;
|
382
382
|
addr_str = grpc_sockaddr_to_string(&listener->addr, true);
|
383
383
|
if (!addr_str.ok()) {
|
384
|
-
return
|
384
|
+
return GRPC_ERROR_CREATE(addr_str.status().ToString());
|
385
385
|
}
|
386
386
|
sp = static_cast<grpc_tcp_listener*>(gpr_malloc(sizeof(grpc_tcp_listener)));
|
387
387
|
sp->next = listener->next;
|
@@ -408,7 +408,7 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
|
|
408
408
|
}
|
409
409
|
}
|
410
410
|
|
411
|
-
return
|
411
|
+
return absl::OkStatus();
|
412
412
|
}
|
413
413
|
|
414
414
|
static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
|
@@ -457,7 +457,7 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
|
|
457
457
|
addr = &addr6_v4mapped;
|
458
458
|
}
|
459
459
|
if ((err = grpc_tcp_server_add_addr(s, addr, port_index, 0, &dsmode, &sp)) ==
|
460
|
-
|
460
|
+
absl::OkStatus()) {
|
461
461
|
*out_port = sp->port;
|
462
462
|
}
|
463
463
|
return err;
|
@@ -554,7 +554,7 @@ static void tcp_server_shutdown_starting_add(grpc_tcp_server* s,
|
|
554
554
|
grpc_closure* shutdown_starting) {
|
555
555
|
gpr_mu_lock(&s->mu);
|
556
556
|
grpc_closure_list_append(&s->shutdown_starting, shutdown_starting,
|
557
|
-
|
557
|
+
absl::OkStatus());
|
558
558
|
gpr_mu_unlock(&s->mu);
|
559
559
|
}
|
560
560
|
|
@@ -575,8 +575,7 @@ static void tcp_server_shutdown_listeners(grpc_tcp_server* s) {
|
|
575
575
|
if (s->active_ports) {
|
576
576
|
grpc_tcp_listener* sp;
|
577
577
|
for (sp = s->head; sp; sp = sp->next) {
|
578
|
-
grpc_fd_shutdown(sp->emfd,
|
579
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown"));
|
578
|
+
grpc_fd_shutdown(sp->emfd, GRPC_ERROR_CREATE("Server shutdown"));
|
580
579
|
}
|
581
580
|
}
|
582
581
|
gpr_mu_unlock(&s->mu);
|
@@ -597,7 +596,8 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
|
|
597
596
|
|
598
597
|
if (getpeername(fd, reinterpret_cast<struct sockaddr*>(addr.addr),
|
599
598
|
&(addr.len)) < 0) {
|
600
|
-
gpr_log(GPR_ERROR, "Failed getpeername: %s",
|
599
|
+
gpr_log(GPR_ERROR, "Failed getpeername: %s",
|
600
|
+
grpc_core::StrError(errno).c_str());
|
601
601
|
close(fd);
|
602
602
|
return;
|
603
603
|
}
|
@@ -112,7 +112,7 @@ grpc_error_handle grpc_tcp_server_add_addr(grpc_tcp_server* s,
|
|
112
112
|
/* Get all addresses assigned to network interfaces on the machine and create a
|
113
113
|
listener for each. requested_port is the port to use for every listener, or 0
|
114
114
|
to select one random port that will be used for every listener. Set *out_port
|
115
|
-
to the port selected. Return
|
115
|
+
to the port selected. Return absl::OkStatus() only if all listeners were
|
116
116
|
added. */
|
117
117
|
grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
|
118
118
|
unsigned port_index,
|
@@ -90,11 +90,11 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd,
|
|
90
90
|
|
91
91
|
grpc_error_handle err =
|
92
92
|
grpc_tcp_server_prepare_socket(s, fd, addr, s->so_reuseport, &port);
|
93
|
-
if (!
|
93
|
+
if (!err.ok()) return err;
|
94
94
|
GPR_ASSERT(port > 0);
|
95
95
|
absl::StatusOr<std::string> addr_str = grpc_sockaddr_to_string(addr, true);
|
96
96
|
if (!addr_str.ok()) {
|
97
|
-
return
|
97
|
+
return GRPC_ERROR_CREATE(addr_str.status().ToString());
|
98
98
|
}
|
99
99
|
std::string name = absl::StrCat("tcp-server-listener:", addr_str.value());
|
100
100
|
gpr_mu_lock(&s->mu);
|
@@ -137,7 +137,7 @@ grpc_error_handle grpc_tcp_server_add_addr(grpc_tcp_server* s,
|
|
137
137
|
int fd;
|
138
138
|
grpc_error_handle err =
|
139
139
|
grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, dsmode, &fd);
|
140
|
-
if (!
|
140
|
+
if (!err.ok()) {
|
141
141
|
return err;
|
142
142
|
}
|
143
143
|
if (*dsmode == GRPC_DSMODE_IPV4 &&
|
@@ -152,42 +152,41 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
|
|
152
152
|
grpc_tcp_server* s, int fd, const grpc_resolved_address* addr,
|
153
153
|
bool so_reuseport, int* port) {
|
154
154
|
grpc_resolved_address sockname_temp;
|
155
|
-
grpc_error_handle err
|
155
|
+
grpc_error_handle err;
|
156
156
|
|
157
157
|
GPR_ASSERT(fd >= 0);
|
158
158
|
|
159
159
|
if (so_reuseport && !grpc_is_unix_socket(addr)) {
|
160
160
|
err = grpc_set_socket_reuse_port(fd, 1);
|
161
|
-
if (!
|
161
|
+
if (!err.ok()) goto error;
|
162
162
|
}
|
163
163
|
|
164
164
|
#ifdef GRPC_LINUX_ERRQUEUE
|
165
165
|
err = grpc_set_socket_zerocopy(fd);
|
166
|
-
if (!
|
166
|
+
if (!err.ok()) {
|
167
167
|
/* it's not fatal, so just log it. */
|
168
168
|
gpr_log(GPR_DEBUG, "Node does not support SO_ZEROCOPY, continuing.");
|
169
|
-
GRPC_ERROR_UNREF(err);
|
170
169
|
}
|
171
170
|
#endif
|
172
171
|
err = grpc_set_socket_nonblocking(fd, 1);
|
173
|
-
if (!
|
172
|
+
if (!err.ok()) goto error;
|
174
173
|
err = grpc_set_socket_cloexec(fd, 1);
|
175
|
-
if (!
|
174
|
+
if (!err.ok()) goto error;
|
176
175
|
if (!grpc_is_unix_socket(addr)) {
|
177
176
|
err = grpc_set_socket_low_latency(fd, 1);
|
178
|
-
if (!
|
177
|
+
if (!err.ok()) goto error;
|
179
178
|
err = grpc_set_socket_reuse_addr(fd, 1);
|
180
|
-
if (!
|
179
|
+
if (!err.ok()) goto error;
|
181
180
|
err =
|
182
181
|
grpc_set_socket_tcp_user_timeout(fd, s->options, false /* is_client */);
|
183
|
-
if (!
|
182
|
+
if (!err.ok()) goto error;
|
184
183
|
}
|
185
184
|
err = grpc_set_socket_no_sigpipe_if_possible(fd);
|
186
|
-
if (!
|
185
|
+
if (!err.ok()) goto error;
|
187
186
|
|
188
187
|
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_LISTENER_USAGE,
|
189
188
|
s->options);
|
190
|
-
if (!
|
189
|
+
if (!err.ok()) goto error;
|
191
190
|
|
192
191
|
if (bind(fd, reinterpret_cast<grpc_sockaddr*>(const_cast<char*>(addr->addr)),
|
193
192
|
addr->len) < 0) {
|
@@ -209,18 +208,16 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
|
|
209
208
|
}
|
210
209
|
|
211
210
|
*port = grpc_sockaddr_get_port(&sockname_temp);
|
212
|
-
return
|
211
|
+
return absl::OkStatus();
|
213
212
|
|
214
213
|
error:
|
215
|
-
GPR_ASSERT(!
|
214
|
+
GPR_ASSERT(!err.ok());
|
216
215
|
if (fd >= 0) {
|
217
216
|
close(fd);
|
218
217
|
}
|
219
|
-
grpc_error_handle ret =
|
220
|
-
|
221
|
-
|
222
|
-
GRPC_ERROR_INT_FD, fd);
|
223
|
-
GRPC_ERROR_UNREF(err);
|
218
|
+
grpc_error_handle ret = grpc_error_set_int(
|
219
|
+
GRPC_ERROR_CREATE_REFERENCING("Unable to configure socket", &err, 1),
|
220
|
+
grpc_core::StatusIntProperty::kFd, fd);
|
224
221
|
return ret;
|
225
222
|
}
|
226
223
|
|
@@ -65,7 +65,7 @@ static grpc_error_handle get_unused_port(int* port) {
|
|
65
65
|
int fd;
|
66
66
|
grpc_error_handle err =
|
67
67
|
grpc_create_dualstack_socket(&wild, SOCK_STREAM, 0, &dsmode, &fd);
|
68
|
-
if (!
|
68
|
+
if (!err.ok()) {
|
69
69
|
return err;
|
70
70
|
}
|
71
71
|
if (dsmode == GRPC_DSMODE_IPV4) {
|
@@ -85,8 +85,7 @@ static grpc_error_handle get_unused_port(int* port) {
|
|
85
85
|
}
|
86
86
|
close(fd);
|
87
87
|
*port = grpc_sockaddr_get_port(&wild);
|
88
|
-
return *port <= 0 ?
|
89
|
-
: GRPC_ERROR_NONE;
|
88
|
+
return *port <= 0 ? GRPC_ERROR_CREATE("Bad port") : absl::OkStatus();
|
90
89
|
}
|
91
90
|
|
92
91
|
grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
|
@@ -97,16 +96,16 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
|
|
97
96
|
struct ifaddrs* ifa_it;
|
98
97
|
unsigned fd_index = 0;
|
99
98
|
grpc_tcp_listener* sp = nullptr;
|
100
|
-
grpc_error_handle err
|
99
|
+
grpc_error_handle err;
|
101
100
|
if (requested_port == 0) {
|
102
101
|
/* Note: There could be a race where some local addrs can listen on the
|
103
102
|
selected port and some can't. The sane way to handle this would be to
|
104
103
|
retry by recreating the whole grpc_tcp_server. Backing out individual
|
105
104
|
listeners and orphaning the FDs looks like too much trouble. */
|
106
|
-
if ((err = get_unused_port(&requested_port)) !=
|
105
|
+
if ((err = get_unused_port(&requested_port)) != absl::OkStatus()) {
|
107
106
|
return err;
|
108
107
|
} else if (requested_port <= 0) {
|
109
|
-
return
|
108
|
+
return GRPC_ERROR_CREATE("Bad get_unused_port()");
|
110
109
|
}
|
111
110
|
gpr_log(GPR_DEBUG, "Picked unused port %d", requested_port);
|
112
111
|
}
|
@@ -130,12 +129,12 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
|
|
130
129
|
memcpy(addr.addr, ifa_it->ifa_addr, addr.len);
|
131
130
|
if (!grpc_sockaddr_set_port(&addr, requested_port)) {
|
132
131
|
/* Should never happen, because we check sa_family above. */
|
133
|
-
err =
|
132
|
+
err = GRPC_ERROR_CREATE("Failed to set port");
|
134
133
|
break;
|
135
134
|
}
|
136
135
|
auto addr_str = grpc_sockaddr_to_string(&addr, false);
|
137
136
|
if (!addr_str.ok()) {
|
138
|
-
return
|
137
|
+
return GRPC_ERROR_CREATE(addr_str.status().ToString());
|
139
138
|
}
|
140
139
|
gpr_log(GPR_DEBUG,
|
141
140
|
"Adding local addr from interface %s flags 0x%x to server: %s",
|
@@ -148,8 +147,8 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
|
|
148
147
|
continue;
|
149
148
|
}
|
150
149
|
if ((err = grpc_tcp_server_add_addr(s, &addr, port_index, fd_index, &dsmode,
|
151
|
-
&new_sp)) !=
|
152
|
-
grpc_error_handle root_err =
|
150
|
+
&new_sp)) != absl::OkStatus()) {
|
151
|
+
grpc_error_handle root_err = GRPC_ERROR_CREATE(
|
153
152
|
absl::StrCat("Failed to add listener: ", addr_str.value()));
|
154
153
|
err = grpc_error_add_child(root_err, err);
|
155
154
|
break;
|
@@ -164,13 +163,13 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
|
|
164
163
|
}
|
165
164
|
}
|
166
165
|
freeifaddrs(ifa);
|
167
|
-
if (!
|
166
|
+
if (!err.ok()) {
|
168
167
|
return err;
|
169
168
|
} else if (sp == nullptr) {
|
170
|
-
return
|
169
|
+
return GRPC_ERROR_CREATE("No local addresses");
|
171
170
|
} else {
|
172
171
|
*out_port = sp->port;
|
173
|
-
return
|
172
|
+
return absl::OkStatus();
|
174
173
|
}
|
175
174
|
}
|
176
175
|
|
@@ -28,7 +28,7 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* /*s*/,
|
|
28
28
|
unsigned /*port_index*/,
|
29
29
|
int /*requested_port*/,
|
30
30
|
int* /*out_port*/) {
|
31
|
-
return
|
31
|
+
return GRPC_ERROR_CREATE("no ifaddrs available");
|
32
32
|
}
|
33
33
|
|
34
34
|
bool grpc_tcp_server_have_ifaddrs(void) { return false; }
|
@@ -116,7 +116,7 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
|
|
116
116
|
s->shutdown_starting.tail = NULL;
|
117
117
|
s->shutdown_complete = shutdown_complete;
|
118
118
|
*server = s;
|
119
|
-
return
|
119
|
+
return absl::OkStatus();
|
120
120
|
}
|
121
121
|
|
122
122
|
static void destroy_server(void* arg, grpc_error_handle error) {
|
@@ -139,13 +139,13 @@ static void destroy_server(void* arg, grpc_error_handle error) {
|
|
139
139
|
static void finish_shutdown_locked(grpc_tcp_server* s) {
|
140
140
|
if (s->shutdown_complete != NULL) {
|
141
141
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, s->shutdown_complete,
|
142
|
-
|
142
|
+
absl::OkStatus());
|
143
143
|
}
|
144
144
|
|
145
145
|
grpc_core::ExecCtx::Run(
|
146
146
|
DEBUG_LOCATION,
|
147
147
|
GRPC_CLOSURE_CREATE(destroy_server, s, grpc_schedule_on_exec_ctx),
|
148
|
-
|
148
|
+
absl::OkStatus());
|
149
149
|
}
|
150
150
|
|
151
151
|
static grpc_tcp_server* tcp_server_ref(grpc_tcp_server* s) {
|
@@ -157,7 +157,7 @@ static void tcp_server_shutdown_starting_add(grpc_tcp_server* s,
|
|
157
157
|
grpc_closure* shutdown_starting) {
|
158
158
|
gpr_mu_lock(&s->mu);
|
159
159
|
grpc_closure_list_append(&s->shutdown_starting, shutdown_starting,
|
160
|
-
|
160
|
+
absl::OkStatus());
|
161
161
|
gpr_mu_unlock(&s->mu);
|
162
162
|
}
|
163
163
|
|
@@ -192,11 +192,11 @@ static grpc_error_handle prepare_socket(SOCKET sock,
|
|
192
192
|
const grpc_resolved_address* addr,
|
193
193
|
int* port) {
|
194
194
|
grpc_resolved_address sockname_temp;
|
195
|
-
grpc_error_handle error
|
195
|
+
grpc_error_handle error;
|
196
196
|
int sockname_temp_len;
|
197
197
|
|
198
198
|
error = grpc_tcp_prepare_socket(sock);
|
199
|
-
if (!
|
199
|
+
if (!error.ok()) {
|
200
200
|
goto failure;
|
201
201
|
}
|
202
202
|
|
@@ -220,19 +220,18 @@ static grpc_error_handle prepare_socket(SOCKET sock,
|
|
220
220
|
sockname_temp.len = (size_t)sockname_temp_len;
|
221
221
|
|
222
222
|
*port = grpc_sockaddr_get_port(&sockname_temp);
|
223
|
-
return
|
223
|
+
return absl::OkStatus();
|
224
224
|
|
225
225
|
failure:
|
226
|
-
GPR_ASSERT(!
|
226
|
+
GPR_ASSERT(!error.ok());
|
227
227
|
auto addr_uri = grpc_sockaddr_to_uri(addr);
|
228
228
|
grpc_error_set_int(
|
229
229
|
grpc_error_set_str(
|
230
|
-
|
231
|
-
|
232
|
-
|
230
|
+
GRPC_ERROR_CREATE_REFERENCING("Failed to prepare server socket",
|
231
|
+
&error, 1),
|
232
|
+
grpc_core::StatusStrProperty::kTargetAddress,
|
233
233
|
addr_uri.ok() ? *addr_uri : addr_uri.status().ToString()),
|
234
|
-
|
235
|
-
GRPC_ERROR_UNREF(error);
|
234
|
+
grpc_core::StatusIntProperty::kFd, (intptr_t)sock);
|
236
235
|
if (sock != INVALID_SOCKET) closesocket(sock);
|
237
236
|
return error;
|
238
237
|
}
|
@@ -252,10 +251,10 @@ static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) {
|
|
252
251
|
BOOL success;
|
253
252
|
DWORD addrlen = sizeof(grpc_sockaddr_in6) + 16;
|
254
253
|
DWORD bytes_received = 0;
|
255
|
-
grpc_error_handle error
|
254
|
+
grpc_error_handle error;
|
256
255
|
|
257
256
|
if (port->shutting_down) {
|
258
|
-
return
|
257
|
+
return absl::OkStatus();
|
259
258
|
}
|
260
259
|
|
261
260
|
sock = WSASocket(AF_INET6, SOCK_STREAM, IPPROTO_TCP, NULL, 0,
|
@@ -266,7 +265,7 @@ static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) {
|
|
266
265
|
}
|
267
266
|
|
268
267
|
error = grpc_tcp_prepare_socket(sock);
|
269
|
-
if (!
|
268
|
+
if (!error.ok()) goto failure;
|
270
269
|
|
271
270
|
/* Start the "accept" asynchronously. */
|
272
271
|
success = port->AcceptEx(port->socket->socket, sock, port->addresses, 0,
|
@@ -291,7 +290,7 @@ static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) {
|
|
291
290
|
return error;
|
292
291
|
|
293
292
|
failure:
|
294
|
-
GPR_ASSERT(!
|
293
|
+
GPR_ASSERT(!error.ok());
|
295
294
|
if (sock != INVALID_SOCKET) closesocket(sock);
|
296
295
|
return error;
|
297
296
|
}
|
@@ -315,9 +314,9 @@ static void on_accept(void* arg, grpc_error_handle error) {
|
|
315
314
|
/* The general mechanism for shutting down is to queue abortion calls. While
|
316
315
|
this is necessary in the read/write case, it's useless for the accept
|
317
316
|
case. We only need to adjust the pending callback count */
|
318
|
-
if (!
|
317
|
+
if (!error.ok()) {
|
319
318
|
gpr_log(GPR_INFO, "Skipping on_accept due to error: %s",
|
320
|
-
|
319
|
+
grpc_core::StatusToString(error).c_str());
|
321
320
|
|
322
321
|
gpr_mu_unlock(&sp->server->mu);
|
323
322
|
return;
|
@@ -401,7 +400,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
|
|
401
400
|
GUID guid = WSAID_ACCEPTEX;
|
402
401
|
DWORD ioctl_num_bytes;
|
403
402
|
LPFN_ACCEPTEX AcceptEx;
|
404
|
-
grpc_error_handle error
|
403
|
+
grpc_error_handle error;
|
405
404
|
|
406
405
|
/* We need to grab the AcceptEx pointer for that port, as it may be
|
407
406
|
interface-dependent. We'll cache it to avoid doing that again. */
|
@@ -414,11 +413,11 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
|
|
414
413
|
gpr_log(GPR_ERROR, "on_connect error: %s", utf8_message);
|
415
414
|
gpr_free(utf8_message);
|
416
415
|
closesocket(sock);
|
417
|
-
return
|
416
|
+
return absl::OkStatus();
|
418
417
|
}
|
419
418
|
|
420
419
|
error = prepare_socket(sock, addr, &port);
|
421
|
-
if (!
|
420
|
+
if (!error.ok()) {
|
422
421
|
return error;
|
423
422
|
}
|
424
423
|
|
@@ -446,7 +445,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
|
|
446
445
|
gpr_mu_unlock(&s->mu);
|
447
446
|
*listener = sp;
|
448
447
|
|
449
|
-
return
|
448
|
+
return absl::OkStatus();
|
450
449
|
}
|
451
450
|
|
452
451
|
static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
|
@@ -459,7 +458,7 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
|
|
459
458
|
grpc_resolved_address* allocated_addr = NULL;
|
460
459
|
grpc_resolved_address sockname_temp;
|
461
460
|
unsigned port_index = 0;
|
462
|
-
grpc_error_handle error
|
461
|
+
grpc_error_handle error;
|
463
462
|
|
464
463
|
if (s->tail != NULL) {
|
465
464
|
port_index = s->tail->port_index + 1;
|
@@ -510,11 +509,9 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
|
|
510
509
|
done:
|
511
510
|
gpr_free(allocated_addr);
|
512
511
|
|
513
|
-
if (!
|
514
|
-
grpc_error_handle error_out =
|
515
|
-
|
516
|
-
"Failed to add port to server", &error, 1);
|
517
|
-
GRPC_ERROR_UNREF(error);
|
512
|
+
if (!error.ok()) {
|
513
|
+
grpc_error_handle error_out = GRPC_ERROR_CREATE_REFERENCING(
|
514
|
+
"Failed to add port to server", &error, 1);
|
518
515
|
error = error_out;
|
519
516
|
*port = -1;
|
520
517
|
} else {
|