grpc 1.50.0.pre1 → 1.51.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +131 -42
- data/include/grpc/event_engine/event_engine.h +10 -3
- data/include/grpc/event_engine/slice_buffer.h +17 -0
- data/include/grpc/grpc.h +0 -10
- data/include/grpc/impl/codegen/grpc_types.h +1 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
- data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
- data/src/core/ext/filters/client_channel/client_channel.h +3 -4
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
- data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
- data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
- data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
- data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
- data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
- data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
- data/src/core/ext/filters/client_channel/subchannel.h +2 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
- data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
- data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
- data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
- data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
- data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
- data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
- data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
- data/src/core/ext/xds/certificate_provider_store.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
- data/src/core/ext/xds/xds_api.cc +15 -68
- data/src/core/ext/xds/xds_api.h +3 -7
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
- data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
- data/src/core/ext/xds/xds_client.cc +122 -90
- data/src/core/ext/xds/xds_client.h +7 -2
- data/src/core/ext/xds/xds_client_grpc.cc +5 -24
- data/src/core/ext/xds/xds_cluster.cc +291 -183
- data/src/core/ext/xds/xds_cluster.h +11 -15
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
- data/src/core/ext/xds/xds_common_types.cc +208 -141
- data/src/core/ext/xds/xds_common_types.h +19 -13
- data/src/core/ext/xds/xds_endpoint.cc +214 -129
- data/src/core/ext/xds/xds_endpoint.h +4 -7
- data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
- data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
- data/src/core/ext/xds/xds_http_filters.cc +60 -73
- data/src/core/ext/xds/xds_http_filters.h +67 -19
- data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
- data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
- data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
- data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
- data/src/core/ext/xds/xds_listener.cc +459 -417
- data/src/core/ext/xds/xds_listener.h +43 -47
- data/src/core/ext/xds/xds_resource_type.h +3 -11
- data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
- data/src/core/ext/xds/xds_route_config.cc +94 -80
- data/src/core/ext/xds/xds_route_config.h +10 -10
- data/src/core/ext/xds/xds_routing.cc +2 -1
- data/src/core/ext/xds/xds_routing.h +2 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
- data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
- data/src/core/lib/address_utils/parse_address.cc +11 -10
- data/src/core/lib/channel/channel_args.h +16 -1
- data/src/core/lib/channel/channel_stack.cc +23 -20
- data/src/core/lib/channel/channel_stack.h +17 -4
- data/src/core/lib/channel/channel_stack_builder.cc +4 -7
- data/src/core/lib/channel/channel_stack_builder.h +14 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +4 -5
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/channel/connected_channel.cc +695 -35
- data/src/core/lib/channel/connected_channel.h +0 -4
- data/src/core/lib/channel/promise_based_filter.cc +1004 -140
- data/src/core/lib/channel/promise_based_filter.h +364 -87
- data/src/core/lib/compression/message_compress.cc +5 -5
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
- data/src/core/lib/debug/stats.cc +22 -119
- data/src/core/lib/debug/stats.h +29 -35
- data/src/core/lib/debug/stats_data.cc +224 -73
- data/src/core/lib/debug/stats_data.h +263 -122
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +38 -15
- data/src/core/lib/event_engine/default_event_engine.h +15 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/poller.h +10 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/slice.cc +7 -6
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/thread_pool.cc +106 -25
- data/src/core/lib/event_engine/thread_pool.h +32 -9
- data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
- data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
- data/src/core/lib/experiments/config.cc +1 -1
- data/src/core/lib/experiments/experiments.cc +13 -2
- data/src/core/lib/experiments/experiments.h +8 -1
- data/src/core/lib/gpr/cpu_linux.cc +6 -2
- data/src/core/lib/gpr/log_linux.cc +3 -4
- data/src/core/lib/gpr/string.h +1 -1
- data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/stat_posix.cc +5 -4
- data/src/core/lib/gprpp/stat_windows.cc +3 -2
- data/src/core/lib/gprpp/status_helper.h +1 -3
- data/src/core/lib/gprpp/strerror.cc +41 -0
- data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
- data/src/core/lib/gprpp/thd_windows.cc +1 -2
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +13 -2
- data/src/core/lib/gprpp/validation_errors.h +18 -1
- data/src/core/lib/http/httpcli.cc +40 -44
- data/src/core/lib/http/httpcli.h +6 -5
- data/src/core/lib/http/httpcli_security_connector.cc +4 -6
- data/src/core/lib/http/parser.cc +54 -65
- data/src/core/lib/iomgr/buffer_list.cc +105 -116
- data/src/core/lib/iomgr/buffer_list.h +60 -44
- data/src/core/lib/iomgr/call_combiner.cc +11 -10
- data/src/core/lib/iomgr/call_combiner.h +3 -4
- data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
- data/src/core/lib/iomgr/closure.h +49 -5
- data/src/core/lib/iomgr/combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/error.cc +27 -42
- data/src/core/lib/iomgr/error.h +22 -152
- data/src/core/lib/iomgr/ev_apple.cc +4 -4
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
- data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
- data/src/core/lib/iomgr/exec_ctx.cc +3 -4
- data/src/core/lib/iomgr/exec_ctx.h +2 -3
- data/src/core/lib/iomgr/executor.cc +1 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
- data/src/core/lib/iomgr/load_file.cc +5 -9
- data/src/core/lib/iomgr/lockfree_event.cc +10 -10
- data/src/core/lib/iomgr/pollset_windows.cc +4 -4
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +8 -3
- data/src/core/lib/iomgr/resolve_address.h +3 -4
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
- data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
- data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
- data/src/core/lib/iomgr/tcp_posix.cc +92 -108
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
- data/src/core/lib/iomgr/tcp_windows.cc +27 -34
- data/src/core/lib/iomgr/timer.h +8 -8
- data/src/core/lib/iomgr/timer_generic.cc +9 -15
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +7 -2
- data/src/core/lib/json/json_object_loader.h +22 -0
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +4 -4
- data/src/core/lib/load_balancing/lb_policy.cc +1 -1
- data/src/core/lib/load_balancing/lb_policy.h +4 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/promise/activity.cc +16 -2
- data/src/core/lib/promise/activity.h +38 -15
- data/src/core/lib/promise/arena_promise.h +80 -51
- data/src/core/lib/promise/context.h +13 -6
- data/src/core/lib/promise/detail/basic_seq.h +9 -28
- data/src/core/lib/promise/detail/promise_factory.h +58 -10
- data/src/core/lib/promise/detail/status.h +28 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
- data/src/core/lib/promise/for_each.h +129 -0
- data/src/core/lib/promise/loop.h +7 -5
- data/src/core/lib/promise/map_pipe.h +87 -0
- data/src/core/lib/promise/pipe.cc +19 -0
- data/src/core/lib/promise/pipe.h +505 -0
- data/src/core/lib/promise/poll.h +13 -0
- data/src/core/lib/promise/seq.h +3 -5
- data/src/core/lib/promise/sleep.cc +5 -4
- data/src/core/lib/promise/sleep.h +1 -2
- data/src/core/lib/promise/try_concurrently.h +341 -0
- data/src/core/lib/promise/try_seq.h +10 -13
- data/src/core/lib/resolver/server_address.cc +1 -0
- data/src/core/lib/resolver/server_address.h +1 -3
- data/src/core/lib/resource_quota/api.cc +0 -1
- data/src/core/lib/resource_quota/arena.cc +19 -0
- data/src/core/lib/resource_quota/arena.h +89 -0
- data/src/core/lib/resource_quota/memory_quota.cc +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
- data/src/core/lib/security/authorization/matchers.cc +25 -22
- data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
- data/src/core/lib/security/context/security_context.h +10 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
- data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
- data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
- data/src/core/lib/security/transport/security_handshaker.cc +53 -53
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/security/transport/tsi_error.cc +6 -3
- data/src/core/lib/security/util/json_util.cc +4 -5
- data/src/core/lib/service_config/service_config.h +1 -1
- data/src/core/lib/service_config/service_config_impl.cc +111 -158
- data/src/core/lib/service_config/service_config_impl.h +14 -17
- data/src/core/lib/service_config/service_config_parser.cc +14 -31
- data/src/core/lib/service_config/service_config_parser.h +14 -10
- data/src/core/lib/slice/b64.cc +2 -2
- data/src/core/lib/slice/slice.cc +7 -1
- data/src/core/lib/slice/slice.h +19 -6
- data/src/core/lib/slice/slice_buffer.cc +13 -14
- data/src/core/lib/slice/slice_internal.h +13 -21
- data/src/core/lib/slice/slice_refcount.h +34 -19
- data/src/core/lib/surface/byte_buffer.cc +3 -4
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +1366 -239
- data/src/core/lib/surface/call.h +44 -0
- data/src/core/lib/surface/call_details.cc +3 -3
- data/src/core/lib/surface/call_trace.cc +113 -0
- data/src/core/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +44 -49
- data/src/core/lib/surface/channel.h +9 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/channel_stack_type.cc +4 -0
- data/src/core/lib/surface/channel_stack_type.h +2 -0
- data/src/core/lib/surface/completion_queue.cc +38 -52
- data/src/core/lib/surface/init.cc +8 -39
- data/src/core/lib/surface/init_internally.h +8 -0
- data/src/core/lib/surface/lame_client.cc +10 -8
- data/src/core/lib/surface/server.cc +48 -70
- data/src/core/lib/surface/server.h +3 -4
- data/src/core/lib/surface/validate_metadata.cc +11 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +34 -28
- data/src/core/lib/transport/error_utils.h +3 -3
- data/src/core/lib/transport/handshaker.cc +14 -14
- data/src/core/lib/transport/handshaker.h +1 -1
- data/src/core/lib/transport/handshaker_factory.h +26 -0
- data/src/core/lib/transport/handshaker_registry.cc +8 -2
- data/src/core/lib/transport/handshaker_registry.h +3 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
- data/src/core/lib/transport/metadata_batch.h +17 -1
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
- data/src/core/lib/transport/transport.cc +63 -17
- data/src/core/lib/transport/transport.h +64 -68
- data/src/core/lib/transport/transport_impl.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +7 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
- data/src/core/tsi/fake_transport_security.cc +3 -3
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_spec.rb +0 -43
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +57 -20
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
- data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_buffer_api.cc +0 -35
- data/src/core/lib/slice/slice_refcount_base.h +0 -60
data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc
CHANGED
@@ -23,6 +23,7 @@
|
|
23
23
|
#include <grpc/support/alloc.h>
|
24
24
|
#include <grpc/support/log.h>
|
25
25
|
|
26
|
+
#include "src/core/lib/slice/slice.h"
|
26
27
|
#include "src/core/lib/slice/slice_internal.h"
|
27
28
|
#include "src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h"
|
28
29
|
#include "src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h"
|
@@ -61,11 +62,11 @@ static tsi_result alts_grpc_privacy_integrity_protect(
|
|
61
62
|
if (status != GRPC_STATUS_OK) {
|
62
63
|
gpr_log(GPR_ERROR, "Failed to protect, %s", error_details);
|
63
64
|
gpr_free(error_details);
|
64
|
-
|
65
|
+
grpc_core::CSliceUnref(protected_slice);
|
65
66
|
return TSI_INTERNAL_ERROR;
|
66
67
|
}
|
67
68
|
grpc_slice_buffer_add(protected_slices, protected_slice);
|
68
|
-
|
69
|
+
grpc_slice_buffer_reset_and_unref(unprotected_slices);
|
69
70
|
return TSI_OK;
|
70
71
|
}
|
71
72
|
|
@@ -92,7 +93,7 @@ static tsi_result alts_grpc_privacy_integrity_unprotect(
|
|
92
93
|
iovec_t unprotected_iovec = {GRPC_SLICE_START_PTR(unprotected_slice),
|
93
94
|
GRPC_SLICE_LENGTH(unprotected_slice)};
|
94
95
|
/* Strips frame header from protected slices. */
|
95
|
-
|
96
|
+
grpc_slice_buffer_reset_and_unref(&rp->header_sb);
|
96
97
|
grpc_slice_buffer_move_first(protected_slices, rp->header_length,
|
97
98
|
&rp->header_sb);
|
98
99
|
iovec_t header_iovec = alts_grpc_record_protocol_get_header_iovec(rp);
|
@@ -106,11 +107,11 @@ static tsi_result alts_grpc_privacy_integrity_unprotect(
|
|
106
107
|
if (status != GRPC_STATUS_OK) {
|
107
108
|
gpr_log(GPR_ERROR, "Failed to unprotect, %s", error_details);
|
108
109
|
gpr_free(error_details);
|
109
|
-
|
110
|
+
grpc_core::CSliceUnref(unprotected_slice);
|
110
111
|
return TSI_INTERNAL_ERROR;
|
111
112
|
}
|
112
|
-
|
113
|
-
|
113
|
+
grpc_slice_buffer_reset_and_unref(&rp->header_sb);
|
114
|
+
grpc_slice_buffer_reset_and_unref(protected_slices);
|
114
115
|
grpc_slice_buffer_add(unprotected_slices, unprotected_slice);
|
115
116
|
return TSI_OK;
|
116
117
|
}
|
@@ -156,7 +156,7 @@ void alts_grpc_record_protocol_destroy(alts_grpc_record_protocol* self) {
|
|
156
156
|
self->vtable->destruct(self);
|
157
157
|
}
|
158
158
|
alts_iovec_record_protocol_destroy(self->iovec_rp);
|
159
|
-
|
159
|
+
grpc_slice_buffer_destroy(&self->header_sb);
|
160
160
|
gpr_free(self->header_buf);
|
161
161
|
gpr_free(self->iovec_buf);
|
162
162
|
gpr_free(self);
|
@@ -190,7 +190,7 @@ static tsi_result alts_zero_copy_grpc_protector_unprotect(
|
|
190
190
|
/* We have not parsed frame size yet. Parses frame size. */
|
191
191
|
if (!read_frame_size(&protector->protected_sb,
|
192
192
|
&protector->parsed_frame_size)) {
|
193
|
-
|
193
|
+
grpc_slice_buffer_reset_and_unref(&protector->protected_sb);
|
194
194
|
return TSI_DATA_CORRUPTED;
|
195
195
|
}
|
196
196
|
}
|
@@ -211,7 +211,7 @@ static tsi_result alts_zero_copy_grpc_protector_unprotect(
|
|
211
211
|
}
|
212
212
|
protector->parsed_frame_size = 0;
|
213
213
|
if (status != TSI_OK) {
|
214
|
-
|
214
|
+
grpc_slice_buffer_reset_and_unref(&protector->protected_sb);
|
215
215
|
return status;
|
216
216
|
}
|
217
217
|
}
|
@@ -235,9 +235,9 @@ static void alts_zero_copy_grpc_protector_destroy(
|
|
235
235
|
reinterpret_cast<alts_zero_copy_grpc_protector*>(self);
|
236
236
|
alts_grpc_record_protocol_destroy(protector->record_protocol);
|
237
237
|
alts_grpc_record_protocol_destroy(protector->unrecord_protocol);
|
238
|
-
|
239
|
-
|
240
|
-
|
238
|
+
grpc_slice_buffer_destroy(&protector->unprotected_staging_sb);
|
239
|
+
grpc_slice_buffer_destroy(&protector->protected_sb);
|
240
|
+
grpc_slice_buffer_destroy(&protector->protected_staging_sb);
|
241
241
|
gpr_free(protector);
|
242
242
|
}
|
243
243
|
|
@@ -481,7 +481,7 @@ static tsi_result fake_zero_copy_grpc_protector_unprotect(
|
|
481
481
|
impl->parsed_frame_size - TSI_FAKE_FRAME_HEADER_SIZE,
|
482
482
|
unprotected_slices);
|
483
483
|
impl->parsed_frame_size = 0;
|
484
|
-
|
484
|
+
grpc_slice_buffer_reset_and_unref(&impl->header_sb);
|
485
485
|
}
|
486
486
|
if (min_progress_size != nullptr) {
|
487
487
|
if (impl->parsed_frame_size > TSI_FAKE_FRAME_HEADER_SIZE) {
|
@@ -498,8 +498,8 @@ static void fake_zero_copy_grpc_protector_destroy(
|
|
498
498
|
if (self == nullptr) return;
|
499
499
|
tsi_fake_zero_copy_grpc_protector* impl =
|
500
500
|
reinterpret_cast<tsi_fake_zero_copy_grpc_protector*>(self);
|
501
|
-
|
502
|
-
|
501
|
+
grpc_slice_buffer_destroy(&impl->header_sb);
|
502
|
+
grpc_slice_buffer_destroy(&impl->protected_sb);
|
503
503
|
gpr_free(impl);
|
504
504
|
}
|
505
505
|
|
@@ -55,7 +55,7 @@ TlsSessionKeyLoggerCache::TlsSessionKeyLogger::TlsSessionKeyLogger(
|
|
55
55
|
gpr_log(GPR_ERROR,
|
56
56
|
"Ignoring TLS Key logging. ERROR Opening TLS Keylog "
|
57
57
|
"file: %s",
|
58
|
-
|
58
|
+
grpc_core::StatusToString(error).c_str());
|
59
59
|
}
|
60
60
|
cache_->tls_session_key_logger_map_.emplace(tls_session_key_log_file_path_,
|
61
61
|
this);
|
@@ -88,7 +88,7 @@ void TlsSessionKeyLoggerCache::TlsSessionKeyLogger::LogSessionKeys(
|
|
88
88
|
if (err) {
|
89
89
|
grpc_error_handle error = GRPC_OS_ERROR(errno, "fwrite");
|
90
90
|
gpr_log(GPR_ERROR, "Error Appending to TLS session key log file: %s",
|
91
|
-
|
91
|
+
grpc_core::StatusToString(error).c_str());
|
92
92
|
fclose(fd_);
|
93
93
|
fd_ = nullptr; // disable future attempts to write to this file
|
94
94
|
} else {
|
@@ -118,7 +118,11 @@ grpc_core::RefCountedPtr<TlsSessionKeyLogger> TlsSessionKeyLoggerCache::Get(
|
|
118
118
|
grpc_core::RefCountedPtr<TlsSessionKeyLoggerCache> cache;
|
119
119
|
if (g_cache_instance == nullptr) {
|
120
120
|
// This will automatically set g_cache_instance.
|
121
|
-
|
121
|
+
// Not using MakeRefCounted because to the thread safety analysis, which
|
122
|
+
// cannot see through calls, it would look like MakeRefCounted was
|
123
|
+
// calling TlsSessionKeyLoggerCache without holding a lock on
|
124
|
+
// g_tls_session_key_log_cache_mu.
|
125
|
+
cache.reset(new TlsSessionKeyLoggerCache());
|
122
126
|
} else {
|
123
127
|
cache = g_cache_instance->Ref();
|
124
128
|
}
|
@@ -51,7 +51,7 @@ class BoringSslCachedSession : public SslCachedSession {
|
|
51
51
|
|
52
52
|
std::unique_ptr<SslCachedSession> SslCachedSession::Create(
|
53
53
|
SslSessionPtr session) {
|
54
|
-
return
|
54
|
+
return std::make_unique<BoringSslCachedSession>(std::move(session));
|
55
55
|
}
|
56
56
|
|
57
57
|
} // namespace tsi
|
@@ -26,6 +26,8 @@
|
|
26
26
|
|
27
27
|
#include "absl/memory/memory.h"
|
28
28
|
|
29
|
+
#include "src/core/lib/slice/slice.h"
|
30
|
+
|
29
31
|
// OpenSSL invalidates SSL_SESSION on SSL destruction making it pointless
|
30
32
|
// to cache sessions. The workaround is to serialize (relatively expensive)
|
31
33
|
// session into binary blob and re-create it from blob on every handshake.
|
@@ -49,7 +51,9 @@ class OpenSslCachedSession : public SslCachedSession {
|
|
49
51
|
serialized_session_ = slice;
|
50
52
|
}
|
51
53
|
|
52
|
-
virtual ~OpenSslCachedSession() {
|
54
|
+
virtual ~OpenSslCachedSession() {
|
55
|
+
grpc_core::CSliceUnref(serialized_session_);
|
56
|
+
}
|
53
57
|
|
54
58
|
SslSessionPtr CopySession() const override {
|
55
59
|
const unsigned char* data = GRPC_SLICE_START_PTR(serialized_session_);
|
@@ -69,7 +73,7 @@ class OpenSslCachedSession : public SslCachedSession {
|
|
69
73
|
|
70
74
|
std::unique_ptr<SslCachedSession> SslCachedSession::Create(
|
71
75
|
SslSessionPtr session) {
|
72
|
-
return
|
76
|
+
return std::make_unique<OpenSslCachedSession>(std::move(session));
|
73
77
|
}
|
74
78
|
|
75
79
|
} // namespace tsi
|
@@ -35,7 +35,6 @@ grpc_metadata_array_init_type grpc_metadata_array_init_import;
|
|
35
35
|
grpc_metadata_array_destroy_type grpc_metadata_array_destroy_import;
|
36
36
|
grpc_call_details_init_type grpc_call_details_init_import;
|
37
37
|
grpc_call_details_destroy_type grpc_call_details_destroy_import;
|
38
|
-
grpc_register_plugin_type grpc_register_plugin_import;
|
39
38
|
grpc_init_type grpc_init_import;
|
40
39
|
grpc_shutdown_type grpc_shutdown_import;
|
41
40
|
grpc_is_initialized_type grpc_is_initialized_import;
|
@@ -321,7 +320,6 @@ void grpc_rb_load_imports(HMODULE library) {
|
|
321
320
|
grpc_metadata_array_destroy_import = (grpc_metadata_array_destroy_type) GetProcAddress(library, "grpc_metadata_array_destroy");
|
322
321
|
grpc_call_details_init_import = (grpc_call_details_init_type) GetProcAddress(library, "grpc_call_details_init");
|
323
322
|
grpc_call_details_destroy_import = (grpc_call_details_destroy_type) GetProcAddress(library, "grpc_call_details_destroy");
|
324
|
-
grpc_register_plugin_import = (grpc_register_plugin_type) GetProcAddress(library, "grpc_register_plugin");
|
325
323
|
grpc_init_import = (grpc_init_type) GetProcAddress(library, "grpc_init");
|
326
324
|
grpc_shutdown_import = (grpc_shutdown_type) GetProcAddress(library, "grpc_shutdown");
|
327
325
|
grpc_is_initialized_import = (grpc_is_initialized_type) GetProcAddress(library, "grpc_is_initialized");
|
@@ -80,9 +80,6 @@ extern grpc_call_details_init_type grpc_call_details_init_import;
|
|
80
80
|
typedef void(*grpc_call_details_destroy_type)(grpc_call_details* details);
|
81
81
|
extern grpc_call_details_destroy_type grpc_call_details_destroy_import;
|
82
82
|
#define grpc_call_details_destroy grpc_call_details_destroy_import
|
83
|
-
typedef void(*grpc_register_plugin_type)(void (*init)(void), void (*destroy)(void));
|
84
|
-
extern grpc_register_plugin_type grpc_register_plugin_import;
|
85
|
-
#define grpc_register_plugin grpc_register_plugin_import
|
86
83
|
typedef void(*grpc_init_type)(void);
|
87
84
|
extern grpc_init_type grpc_init_import;
|
88
85
|
#define grpc_init grpc_init_import
|
@@ -28,28 +28,6 @@ describe GRPC::Core::Channel do
|
|
28
28
|
GRPC::Core::ChannelCredentials.new(load_test_certs[0])
|
29
29
|
end
|
30
30
|
|
31
|
-
def fork_with_propagated_error_message
|
32
|
-
pipe_read, pipe_write = IO.pipe
|
33
|
-
pid = fork do
|
34
|
-
pipe_read.close
|
35
|
-
begin
|
36
|
-
yield
|
37
|
-
rescue => exc
|
38
|
-
pipe_write.syswrite(exc.message)
|
39
|
-
end
|
40
|
-
pipe_write.close
|
41
|
-
end
|
42
|
-
pipe_write.close
|
43
|
-
|
44
|
-
exc_message = pipe_read.read
|
45
|
-
Process.wait(pid)
|
46
|
-
|
47
|
-
unless $CHILD_STATUS.success?
|
48
|
-
raise "forked process failed with #{$CHILD_STATUS}"
|
49
|
-
end
|
50
|
-
raise exc_message unless exc_message.empty?
|
51
|
-
end
|
52
|
-
|
53
31
|
shared_examples '#new' do
|
54
32
|
it 'take a host name without channel args' do
|
55
33
|
blk = proc do
|
@@ -102,14 +80,6 @@ describe GRPC::Core::Channel do
|
|
102
80
|
blk = construct_with_args(args)
|
103
81
|
expect(&blk).to_not raise_error
|
104
82
|
end
|
105
|
-
|
106
|
-
it 'raises if grpc was initialized in another process' do
|
107
|
-
blk = construct_with_args({})
|
108
|
-
expect(&blk).not_to raise_error
|
109
|
-
expect do
|
110
|
-
fork_with_propagated_error_message(&blk)
|
111
|
-
end.to raise_error(RuntimeError, 'grpc cannot be used before and after forking')
|
112
|
-
end
|
113
83
|
end
|
114
84
|
|
115
85
|
describe '#new for secure channels' do
|
@@ -168,19 +138,6 @@ describe GRPC::Core::Channel do
|
|
168
138
|
expect(&blk).to raise_error(RuntimeError)
|
169
139
|
STDERR.puts "#{Time.now}: finished: raises an error if called on a closed channel"
|
170
140
|
end
|
171
|
-
|
172
|
-
it 'raises if grpc was initialized in another process' do
|
173
|
-
ch = GRPC::Core::Channel.new(fake_host, nil, :this_channel_is_insecure)
|
174
|
-
|
175
|
-
deadline = Time.now + 5
|
176
|
-
|
177
|
-
blk = proc do
|
178
|
-
fork_with_propagated_error_message do
|
179
|
-
ch.create_call(nil, nil, 'phony_method', nil, deadline)
|
180
|
-
end
|
181
|
-
end
|
182
|
-
expect(&blk).to raise_error(RuntimeError, 'grpc cannot be used before and after forking')
|
183
|
-
end
|
184
141
|
end
|
185
142
|
|
186
143
|
describe '#destroy' do
|
@@ -65,12 +65,21 @@ describe GRPC::ActiveCall do
|
|
65
65
|
|
66
66
|
describe 'restricted view methods' do
|
67
67
|
before(:each) do
|
68
|
-
call = make_test_call
|
69
|
-
ActiveCall.client_invoke(call)
|
70
|
-
@client_call = ActiveCall.new(call, @pass_through,
|
68
|
+
@call = make_test_call
|
69
|
+
ActiveCall.client_invoke(@call)
|
70
|
+
@client_call = ActiveCall.new(@call, @pass_through,
|
71
71
|
@pass_through, deadline)
|
72
72
|
end
|
73
73
|
|
74
|
+
after(:each) do
|
75
|
+
# terminate the RPC that was started in before(:each)
|
76
|
+
recvd_rpc = @received_rpcs_queue.pop
|
77
|
+
recvd_call = recvd_rpc.call
|
78
|
+
recvd_call.run_batch(CallOps::SEND_INITIAL_METADATA => nil)
|
79
|
+
@call.run_batch(CallOps::RECV_INITIAL_METADATA => nil)
|
80
|
+
send_and_receive_close_and_status(@call, recvd_call)
|
81
|
+
end
|
82
|
+
|
74
83
|
describe '#multi_req_view' do
|
75
84
|
it 'exposes a fixed subset of the ActiveCall.methods' do
|
76
85
|
want = %w(cancelled?, deadline, each_remote_read, metadata, \
|
@@ -0,0 +1,140 @@
|
|
1
|
+
// Copyright 2021 The Abseil Authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
//
|
15
|
+
// -----------------------------------------------------------------------------
|
16
|
+
// File: cleanup.h
|
17
|
+
// -----------------------------------------------------------------------------
|
18
|
+
//
|
19
|
+
// `absl::Cleanup` implements the scope guard idiom, invoking the contained
|
20
|
+
// callback's `operator()() &&` on scope exit.
|
21
|
+
//
|
22
|
+
// Example:
|
23
|
+
//
|
24
|
+
// ```
|
25
|
+
// absl::Status CopyGoodData(const char* source_path, const char* sink_path) {
|
26
|
+
// FILE* source_file = fopen(source_path, "r");
|
27
|
+
// if (source_file == nullptr) {
|
28
|
+
// return absl::NotFoundError("No source file"); // No cleanups execute
|
29
|
+
// }
|
30
|
+
//
|
31
|
+
// // C++17 style cleanup using class template argument deduction
|
32
|
+
// absl::Cleanup source_closer = [source_file] { fclose(source_file); };
|
33
|
+
//
|
34
|
+
// FILE* sink_file = fopen(sink_path, "w");
|
35
|
+
// if (sink_file == nullptr) {
|
36
|
+
// return absl::NotFoundError("No sink file"); // First cleanup executes
|
37
|
+
// }
|
38
|
+
//
|
39
|
+
// // C++11 style cleanup using the factory function
|
40
|
+
// auto sink_closer = absl::MakeCleanup([sink_file] { fclose(sink_file); });
|
41
|
+
//
|
42
|
+
// Data data;
|
43
|
+
// while (ReadData(source_file, &data)) {
|
44
|
+
// if (!data.IsGood()) {
|
45
|
+
// absl::Status result = absl::FailedPreconditionError("Read bad data");
|
46
|
+
// return result; // Both cleanups execute
|
47
|
+
// }
|
48
|
+
// SaveData(sink_file, &data);
|
49
|
+
// }
|
50
|
+
//
|
51
|
+
// return absl::OkStatus(); // Both cleanups execute
|
52
|
+
// }
|
53
|
+
// ```
|
54
|
+
//
|
55
|
+
// Methods:
|
56
|
+
//
|
57
|
+
// `std::move(cleanup).Cancel()` will prevent the callback from executing.
|
58
|
+
//
|
59
|
+
// `std::move(cleanup).Invoke()` will execute the callback early, before
|
60
|
+
// destruction, and prevent the callback from executing in the destructor.
|
61
|
+
//
|
62
|
+
// Usage:
|
63
|
+
//
|
64
|
+
// `absl::Cleanup` is not an interface type. It is only intended to be used
|
65
|
+
// within the body of a function. It is not a value type and instead models a
|
66
|
+
// control flow construct. Check out `defer` in Golang for something similar.
|
67
|
+
|
68
|
+
#ifndef ABSL_CLEANUP_CLEANUP_H_
|
69
|
+
#define ABSL_CLEANUP_CLEANUP_H_
|
70
|
+
|
71
|
+
#include <utility>
|
72
|
+
|
73
|
+
#include "absl/base/config.h"
|
74
|
+
#include "absl/base/macros.h"
|
75
|
+
#include "absl/cleanup/internal/cleanup.h"
|
76
|
+
|
77
|
+
namespace absl {
|
78
|
+
ABSL_NAMESPACE_BEGIN
|
79
|
+
|
80
|
+
template <typename Arg, typename Callback = void()>
|
81
|
+
class ABSL_MUST_USE_RESULT Cleanup final {
|
82
|
+
static_assert(cleanup_internal::WasDeduced<Arg>(),
|
83
|
+
"Explicit template parameters are not supported.");
|
84
|
+
|
85
|
+
static_assert(cleanup_internal::ReturnsVoid<Callback>(),
|
86
|
+
"Callbacks that return values are not supported.");
|
87
|
+
|
88
|
+
public:
|
89
|
+
Cleanup(Callback callback) : storage_(std::move(callback)) {} // NOLINT
|
90
|
+
|
91
|
+
Cleanup(Cleanup&& other) = default;
|
92
|
+
|
93
|
+
void Cancel() && {
|
94
|
+
ABSL_HARDENING_ASSERT(storage_.IsCallbackEngaged());
|
95
|
+
storage_.DestroyCallback();
|
96
|
+
}
|
97
|
+
|
98
|
+
void Invoke() && {
|
99
|
+
ABSL_HARDENING_ASSERT(storage_.IsCallbackEngaged());
|
100
|
+
storage_.InvokeCallback();
|
101
|
+
storage_.DestroyCallback();
|
102
|
+
}
|
103
|
+
|
104
|
+
~Cleanup() {
|
105
|
+
if (storage_.IsCallbackEngaged()) {
|
106
|
+
storage_.InvokeCallback();
|
107
|
+
storage_.DestroyCallback();
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
private:
|
112
|
+
cleanup_internal::Storage<Callback> storage_;
|
113
|
+
};
|
114
|
+
|
115
|
+
// `absl::Cleanup c = /* callback */;`
|
116
|
+
//
|
117
|
+
// C++17 type deduction API for creating an instance of `absl::Cleanup`
|
118
|
+
#if defined(ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION)
|
119
|
+
template <typename Callback>
|
120
|
+
Cleanup(Callback callback) -> Cleanup<cleanup_internal::Tag, Callback>;
|
121
|
+
#endif // defined(ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION)
|
122
|
+
|
123
|
+
// `auto c = absl::MakeCleanup(/* callback */);`
|
124
|
+
//
|
125
|
+
// C++11 type deduction API for creating an instance of `absl::Cleanup`
|
126
|
+
template <typename... Args, typename Callback>
|
127
|
+
absl::Cleanup<cleanup_internal::Tag, Callback> MakeCleanup(Callback callback) {
|
128
|
+
static_assert(cleanup_internal::WasDeduced<cleanup_internal::Tag, Args...>(),
|
129
|
+
"Explicit template parameters are not supported.");
|
130
|
+
|
131
|
+
static_assert(cleanup_internal::ReturnsVoid<Callback>(),
|
132
|
+
"Callbacks that return values are not supported.");
|
133
|
+
|
134
|
+
return {std::move(callback)};
|
135
|
+
}
|
136
|
+
|
137
|
+
ABSL_NAMESPACE_END
|
138
|
+
} // namespace absl
|
139
|
+
|
140
|
+
#endif // ABSL_CLEANUP_CLEANUP_H_
|
@@ -0,0 +1,100 @@
|
|
1
|
+
// Copyright 2021 The Abseil Authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef ABSL_CLEANUP_INTERNAL_CLEANUP_H_
|
16
|
+
#define ABSL_CLEANUP_INTERNAL_CLEANUP_H_
|
17
|
+
|
18
|
+
#include <new>
|
19
|
+
#include <type_traits>
|
20
|
+
#include <utility>
|
21
|
+
|
22
|
+
#include "absl/base/internal/invoke.h"
|
23
|
+
#include "absl/base/macros.h"
|
24
|
+
#include "absl/base/thread_annotations.h"
|
25
|
+
#include "absl/utility/utility.h"
|
26
|
+
|
27
|
+
namespace absl {
|
28
|
+
ABSL_NAMESPACE_BEGIN
|
29
|
+
|
30
|
+
namespace cleanup_internal {
|
31
|
+
|
32
|
+
struct Tag {};
|
33
|
+
|
34
|
+
template <typename Arg, typename... Args>
|
35
|
+
constexpr bool WasDeduced() {
|
36
|
+
return (std::is_same<cleanup_internal::Tag, Arg>::value) &&
|
37
|
+
(sizeof...(Args) == 0);
|
38
|
+
}
|
39
|
+
|
40
|
+
template <typename Callback>
|
41
|
+
constexpr bool ReturnsVoid() {
|
42
|
+
return (std::is_same<base_internal::invoke_result_t<Callback>, void>::value);
|
43
|
+
}
|
44
|
+
|
45
|
+
template <typename Callback>
|
46
|
+
class Storage {
|
47
|
+
public:
|
48
|
+
Storage() = delete;
|
49
|
+
|
50
|
+
explicit Storage(Callback callback) {
|
51
|
+
// Placement-new into a character buffer is used for eager destruction when
|
52
|
+
// the cleanup is invoked or cancelled. To ensure this optimizes well, the
|
53
|
+
// behavior is implemented locally instead of using an absl::optional.
|
54
|
+
::new (GetCallbackBuffer()) Callback(std::move(callback));
|
55
|
+
is_callback_engaged_ = true;
|
56
|
+
}
|
57
|
+
|
58
|
+
Storage(Storage&& other) {
|
59
|
+
ABSL_HARDENING_ASSERT(other.IsCallbackEngaged());
|
60
|
+
|
61
|
+
::new (GetCallbackBuffer()) Callback(std::move(other.GetCallback()));
|
62
|
+
is_callback_engaged_ = true;
|
63
|
+
|
64
|
+
other.DestroyCallback();
|
65
|
+
}
|
66
|
+
|
67
|
+
Storage(const Storage& other) = delete;
|
68
|
+
|
69
|
+
Storage& operator=(Storage&& other) = delete;
|
70
|
+
|
71
|
+
Storage& operator=(const Storage& other) = delete;
|
72
|
+
|
73
|
+
void* GetCallbackBuffer() { return static_cast<void*>(+callback_buffer_); }
|
74
|
+
|
75
|
+
Callback& GetCallback() {
|
76
|
+
return *reinterpret_cast<Callback*>(GetCallbackBuffer());
|
77
|
+
}
|
78
|
+
|
79
|
+
bool IsCallbackEngaged() const { return is_callback_engaged_; }
|
80
|
+
|
81
|
+
void DestroyCallback() {
|
82
|
+
is_callback_engaged_ = false;
|
83
|
+
GetCallback().~Callback();
|
84
|
+
}
|
85
|
+
|
86
|
+
void InvokeCallback() ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
87
|
+
std::move(GetCallback())();
|
88
|
+
}
|
89
|
+
|
90
|
+
private:
|
91
|
+
bool is_callback_engaged_;
|
92
|
+
alignas(Callback) char callback_buffer_[sizeof(Callback)];
|
93
|
+
};
|
94
|
+
|
95
|
+
} // namespace cleanup_internal
|
96
|
+
|
97
|
+
ABSL_NAMESPACE_END
|
98
|
+
} // namespace absl
|
99
|
+
|
100
|
+
#endif // ABSL_CLEANUP_INTERNAL_CLEANUP_H_
|
data/third_party/zlib/compress.c
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
memory, Z_BUF_ERROR if there was not enough room in the output buffer,
|
20
20
|
Z_STREAM_ERROR if the level parameter is invalid.
|
21
21
|
*/
|
22
|
-
int ZEXPORT compress2
|
22
|
+
int ZEXPORT compress2(dest, destLen, source, sourceLen, level)
|
23
23
|
Bytef *dest;
|
24
24
|
uLongf *destLen;
|
25
25
|
const Bytef *source;
|
@@ -65,7 +65,7 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
|
|
65
65
|
|
66
66
|
/* ===========================================================================
|
67
67
|
*/
|
68
|
-
int ZEXPORT compress
|
68
|
+
int ZEXPORT compress(dest, destLen, source, sourceLen)
|
69
69
|
Bytef *dest;
|
70
70
|
uLongf *destLen;
|
71
71
|
const Bytef *source;
|
@@ -78,7 +78,7 @@ int ZEXPORT compress (dest, destLen, source, sourceLen)
|
|
78
78
|
If the default memLevel or windowBits for deflateInit() is changed, then
|
79
79
|
this function needs to be updated.
|
80
80
|
*/
|
81
|
-
uLong ZEXPORT compressBound
|
81
|
+
uLong ZEXPORT compressBound(sourceLen)
|
82
82
|
uLong sourceLen;
|
83
83
|
{
|
84
84
|
return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
|
data/third_party/zlib/crc32.c
CHANGED
@@ -98,13 +98,22 @@
|
|
98
98
|
# endif
|
99
99
|
#endif
|
100
100
|
|
101
|
+
/* If available, use the ARM processor CRC32 instruction. */
|
102
|
+
#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8
|
103
|
+
# define ARMCRC32
|
104
|
+
#endif
|
105
|
+
|
101
106
|
/* Local functions. */
|
102
107
|
local z_crc_t multmodp OF((z_crc_t a, z_crc_t b));
|
103
108
|
local z_crc_t x2nmodp OF((z_off64_t n, unsigned k));
|
104
109
|
|
105
|
-
|
106
|
-
|
107
|
-
#
|
110
|
+
#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
|
111
|
+
local z_word_t byte_swap OF((z_word_t word));
|
112
|
+
#endif
|
113
|
+
|
114
|
+
#if defined(W) && !defined(ARMCRC32)
|
115
|
+
local z_crc_t crc_word OF((z_word_t data));
|
116
|
+
local z_word_t crc_word_big OF((z_word_t data));
|
108
117
|
#endif
|
109
118
|
|
110
119
|
#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
|
@@ -630,7 +639,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
|
|
630
639
|
#endif /* DYNAMIC_CRC_TABLE */
|
631
640
|
|
632
641
|
/* Pre-condition the CRC */
|
633
|
-
crc
|
642
|
+
crc = (~crc) & 0xffffffff;
|
634
643
|
|
635
644
|
/* Compute the CRC up to a word boundary. */
|
636
645
|
while (len && ((z_size_t)buf & 7) != 0) {
|
@@ -645,8 +654,8 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
|
|
645
654
|
len &= 7;
|
646
655
|
|
647
656
|
/* Do three interleaved CRCs to realize the throughput of one crc32x
|
648
|
-
instruction per cycle. Each CRC is
|
649
|
-
CRCs are combined into a single CRC after each set of batches. */
|
657
|
+
instruction per cycle. Each CRC is calculated on Z_BATCH words. The
|
658
|
+
three CRCs are combined into a single CRC after each set of batches. */
|
650
659
|
while (num >= 3 * Z_BATCH) {
|
651
660
|
crc1 = 0;
|
652
661
|
crc2 = 0;
|
@@ -749,7 +758,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
|
|
749
758
|
#endif /* DYNAMIC_CRC_TABLE */
|
750
759
|
|
751
760
|
/* Pre-condition the CRC */
|
752
|
-
crc
|
761
|
+
crc = (~crc) & 0xffffffff;
|
753
762
|
|
754
763
|
#ifdef W
|
755
764
|
|
@@ -1077,7 +1086,7 @@ uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
|
|
1077
1086
|
#ifdef DYNAMIC_CRC_TABLE
|
1078
1087
|
once(&made, make_crc_table);
|
1079
1088
|
#endif /* DYNAMIC_CRC_TABLE */
|
1080
|
-
return multmodp(x2nmodp(len2, 3), crc1) ^ crc2;
|
1089
|
+
return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff);
|
1081
1090
|
}
|
1082
1091
|
|
1083
1092
|
/* ========================================================================= */
|
@@ -1086,7 +1095,7 @@ uLong ZEXPORT crc32_combine(crc1, crc2, len2)
|
|
1086
1095
|
uLong crc2;
|
1087
1096
|
z_off_t len2;
|
1088
1097
|
{
|
1089
|
-
return crc32_combine64(crc1, crc2, len2);
|
1098
|
+
return crc32_combine64(crc1, crc2, (z_off64_t)len2);
|
1090
1099
|
}
|
1091
1100
|
|
1092
1101
|
/* ========================================================================= */
|
@@ -1103,14 +1112,14 @@ uLong ZEXPORT crc32_combine_gen64(len2)
|
|
1103
1112
|
uLong ZEXPORT crc32_combine_gen(len2)
|
1104
1113
|
z_off_t len2;
|
1105
1114
|
{
|
1106
|
-
return crc32_combine_gen64(len2);
|
1115
|
+
return crc32_combine_gen64((z_off64_t)len2);
|
1107
1116
|
}
|
1108
1117
|
|
1109
1118
|
/* ========================================================================= */
|
1110
|
-
uLong crc32_combine_op(crc1, crc2, op)
|
1119
|
+
uLong ZEXPORT crc32_combine_op(crc1, crc2, op)
|
1111
1120
|
uLong crc1;
|
1112
1121
|
uLong crc2;
|
1113
1122
|
uLong op;
|
1114
1123
|
{
|
1115
|
-
return multmodp(op, crc1) ^ crc2;
|
1124
|
+
return multmodp(op, crc1) ^ (crc2 & 0xffffffff);
|
1116
1125
|
}
|