grpc 1.37.1 → 1.39.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 +96 -59
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +48 -0
- data/include/grpc/event_engine/event_engine.h +334 -0
- data/include/grpc/event_engine/port.h +41 -0
- data/include/grpc/event_engine/slice_allocator.h +91 -0
- data/include/grpc/grpc.h +11 -4
- data/include/grpc/grpc_security.h +32 -0
- data/include/grpc/grpc_security_constants.h +15 -0
- data/include/grpc/impl/codegen/grpc_types.h +28 -13
- data/include/grpc/impl/codegen/port_platform.h +22 -0
- data/include/grpc/module.modulemap +14 -14
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +630 -3103
- data/src/core/ext/filters/client_channel/client_channel.h +489 -55
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +28 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +30 -29
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +755 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +46 -54
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +146 -155
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
- 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/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -12
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +20 -13
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -32
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2449 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +306 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- data/src/core/ext/filters/client_channel/server_address.cc +1 -1
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
- data/src/core/ext/filters/client_channel/subchannel.h +7 -6
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +25 -18
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +3 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +5 -4
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -120
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
- data/src/core/ext/transport/chttp2/transport/parsing.cc +65 -58
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +72 -60
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/xds_api.cc +348 -199
- data/src/core/ext/xds/xds_api.h +21 -12
- data/src/core/ext/xds/xds_bootstrap.cc +97 -159
- data/src/core/ext/xds/xds_bootstrap.h +19 -24
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +310 -178
- data/src/core/ext/xds/xds_client.h +41 -27
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +16 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +16 -11
- data/src/core/lib/channel/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +10 -9
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +21 -13
- data/src/core/lib/channel/channelz.h +3 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- data/src/core/lib/event_engine/endpoint_config.cc +46 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -0
- data/src/core/lib/event_engine/slice_allocator.cc +89 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -0
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +183 -0
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +11 -7
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +7 -9
- data/src/core/lib/iomgr/buffer_list.h +4 -5
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +168 -61
- data/src/core/lib/iomgr/error.h +217 -106
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +5 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
- data/src/core/lib/iomgr/event_engine/closure.h +33 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +194 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +243 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
- data/src/core/lib/iomgr/exec_ctx.cc +12 -4
- data/src/core/lib/iomgr/exec_ctx.h +4 -5
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
- data/src/core/lib/iomgr/executor/threadpool.h +2 -2
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +3 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -12
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +7 -7
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_uv.cc +3 -1
- data/src/core/lib/iomgr/pollset_uv.h +5 -1
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +7 -5
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +8 -4
- data/src/core/lib/iomgr/resolve_address.h +12 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +11 -10
- data/src/core/lib/iomgr/sockaddr.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +15 -2
- data/src/core/lib/iomgr/socket_mutator.h +26 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +24 -22
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +22 -19
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +78 -73
- data/src/core/lib/iomgr/tcp_posix.h +8 -0
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +26 -25
- data/src/core/lib/iomgr/tcp_server_posix.cc +28 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -18
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +25 -23
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer.h +6 -1
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +6 -6
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +4 -4
- data/src/core/lib/matchers/matchers.cc +39 -39
- data/src/core/lib/matchers/matchers.h +28 -28
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
- data/src/core/lib/security/authorization/evaluate_args.h +91 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -10
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- 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 +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -9
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +27 -4
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
- data/src/core/lib/security/transport/security_handshaker.cc +33 -32
- data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +2 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/surface/call.cc +67 -46
- data/src/core/lib/surface/call.h +13 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +68 -69
- data/src/core/lib/surface/completion_queue.h +3 -2
- data/src/core/lib/surface/completion_queue_factory.cc +1 -2
- data/src/core/lib/surface/init.cc +1 -3
- data/src/core/lib/surface/init.h +10 -1
- data/src/core/lib/surface/lame_client.cc +11 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +28 -22
- data/src/core/lib/surface/server.h +16 -15
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +4 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +21 -10
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +37 -37
- data/src/core/lib/transport/metadata_batch.h +19 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +6 -4
- data/src/core/lib/transport/transport_op_string.cc +6 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/crypt/gsec.h +6 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +11 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +483 -461
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +367 -315
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +47 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +20 -49
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +283 -85
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +13 -19
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +445 -152
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -1
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +66 -30
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +154 -24
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +414 -135
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +51 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +664 -702
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +65 -7
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +213 -118
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- metadata +94 -46
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -33,6 +33,7 @@
|
|
33
33
|
|
34
34
|
#include <netinet/in.h>
|
35
35
|
|
36
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
36
37
|
#include "src/core/lib/channel/channel_args.h"
|
37
38
|
#include "src/core/lib/gprpp/host_port.h"
|
38
39
|
#include "src/core/lib/iomgr/cfstream_handle.h"
|
@@ -40,7 +41,6 @@
|
|
40
41
|
#include "src/core/lib/iomgr/endpoint_cfstream.h"
|
41
42
|
#include "src/core/lib/iomgr/error.h"
|
42
43
|
#include "src/core/lib/iomgr/error_cfstream.h"
|
43
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
44
44
|
#include "src/core/lib/iomgr/tcp_client.h"
|
45
45
|
#include "src/core/lib/iomgr/timer.h"
|
46
46
|
|
@@ -78,7 +78,7 @@ static void CFStreamConnectCleanup(CFStreamConnect* connect) {
|
|
78
78
|
delete connect;
|
79
79
|
}
|
80
80
|
|
81
|
-
static void OnAlarm(void* arg,
|
81
|
+
static void OnAlarm(void* arg, grpc_error_handle error) {
|
82
82
|
CFStreamConnect* connect = static_cast<CFStreamConnect*>(arg);
|
83
83
|
if (grpc_tcp_trace.enabled()) {
|
84
84
|
gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnAlarm, error:%p", connect, error);
|
@@ -93,13 +93,13 @@ static void OnAlarm(void* arg, grpc_error* error) {
|
|
93
93
|
if (done) {
|
94
94
|
CFStreamConnectCleanup(connect);
|
95
95
|
} else {
|
96
|
-
|
96
|
+
grpc_error_handle error =
|
97
97
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out");
|
98
98
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
99
99
|
}
|
100
100
|
}
|
101
101
|
|
102
|
-
static void OnOpen(void* arg,
|
102
|
+
static void OnOpen(void* arg, grpc_error_handle error) {
|
103
103
|
CFStreamConnect* connect = static_cast<CFStreamConnect*>(arg);
|
104
104
|
if (grpc_tcp_trace.enabled()) {
|
105
105
|
gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnOpen, error:%p", connect, error);
|
@@ -25,9 +25,9 @@
|
|
25
25
|
#include <grpc/support/alloc.h>
|
26
26
|
#include <grpc/support/log.h>
|
27
27
|
|
28
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
28
29
|
#include "src/core/lib/iomgr/error.h"
|
29
30
|
#include "src/core/lib/iomgr/iomgr_custom.h"
|
30
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
31
31
|
#include "src/core/lib/iomgr/tcp_client.h"
|
32
32
|
#include "src/core/lib/iomgr/tcp_custom.h"
|
33
33
|
#include "src/core/lib/iomgr/timer.h"
|
@@ -59,14 +59,13 @@ static void custom_tcp_connect_cleanup(grpc_custom_tcp_connect* connect) {
|
|
59
59
|
|
60
60
|
static void custom_close_callback(grpc_custom_socket* /*socket*/) {}
|
61
61
|
|
62
|
-
static void on_alarm(void* acp,
|
62
|
+
static void on_alarm(void* acp, grpc_error_handle error) {
|
63
63
|
int done;
|
64
64
|
grpc_custom_socket* socket = static_cast<grpc_custom_socket*>(acp);
|
65
65
|
grpc_custom_tcp_connect* connect = socket->connector;
|
66
66
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
67
|
-
const char* str = grpc_error_string(error);
|
68
67
|
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_alarm: error=%s",
|
69
|
-
connect->addr_name.c_str(),
|
68
|
+
connect->addr_name.c_str(), grpc_error_std_string(error).c_str());
|
70
69
|
}
|
71
70
|
if (error == GRPC_ERROR_NONE) {
|
72
71
|
/* error == NONE implies that the timer ran out, and wasn't cancelled. If
|
@@ -81,7 +80,7 @@ static void on_alarm(void* acp, grpc_error* error) {
|
|
81
80
|
}
|
82
81
|
|
83
82
|
static void custom_connect_callback_internal(grpc_custom_socket* socket,
|
84
|
-
|
83
|
+
grpc_error_handle error) {
|
85
84
|
grpc_custom_tcp_connect* connect = socket->connector;
|
86
85
|
int done;
|
87
86
|
grpc_closure* closure = connect->closure;
|
@@ -99,7 +98,7 @@ static void custom_connect_callback_internal(grpc_custom_socket* socket,
|
|
99
98
|
}
|
100
99
|
|
101
100
|
static void custom_connect_callback(grpc_custom_socket* socket,
|
102
|
-
|
101
|
+
grpc_error_handle error) {
|
103
102
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
104
103
|
if (grpc_core::ExecCtx::Get() == nullptr) {
|
105
104
|
/* If we are being run on a thread which does not have an exec_ctx created
|
@@ -35,12 +35,13 @@
|
|
35
35
|
#include <grpc/support/log.h>
|
36
36
|
#include <grpc/support/time.h>
|
37
37
|
|
38
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
38
39
|
#include "src/core/lib/channel/channel_args.h"
|
39
40
|
#include "src/core/lib/gpr/string.h"
|
40
41
|
#include "src/core/lib/iomgr/ev_posix.h"
|
42
|
+
#include "src/core/lib/iomgr/executor.h"
|
41
43
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
42
44
|
#include "src/core/lib/iomgr/sockaddr.h"
|
43
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
44
45
|
#include "src/core/lib/iomgr/socket_mutator.h"
|
45
46
|
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
46
47
|
#include "src/core/lib/iomgr/tcp_posix.h"
|
@@ -64,9 +65,10 @@ struct async_connect {
|
|
64
65
|
grpc_channel_args* channel_args;
|
65
66
|
};
|
66
67
|
|
67
|
-
static
|
68
|
-
|
69
|
-
|
68
|
+
static grpc_error_handle prepare_socket(const grpc_resolved_address* addr,
|
69
|
+
int fd,
|
70
|
+
const grpc_channel_args* channel_args) {
|
71
|
+
grpc_error_handle err = GRPC_ERROR_NONE;
|
70
72
|
|
71
73
|
GPR_ASSERT(fd >= 0);
|
72
74
|
|
@@ -86,7 +88,8 @@ static grpc_error* prepare_socket(const grpc_resolved_address* addr, int fd,
|
|
86
88
|
err = grpc_set_socket_no_sigpipe_if_possible(fd);
|
87
89
|
if (err != GRPC_ERROR_NONE) goto error;
|
88
90
|
|
89
|
-
err = grpc_apply_socket_mutator_in_args(fd,
|
91
|
+
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_CLIENT_CONNECTION_USAGE,
|
92
|
+
channel_args);
|
90
93
|
if (err != GRPC_ERROR_NONE) goto error;
|
91
94
|
|
92
95
|
goto done;
|
@@ -99,13 +102,12 @@ done:
|
|
99
102
|
return err;
|
100
103
|
}
|
101
104
|
|
102
|
-
static void tc_on_alarm(void* acp,
|
105
|
+
static void tc_on_alarm(void* acp, grpc_error_handle error) {
|
103
106
|
int done;
|
104
107
|
async_connect* ac = static_cast<async_connect*>(acp);
|
105
108
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
106
|
-
const char* str = grpc_error_string(error);
|
107
109
|
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_alarm: error=%s",
|
108
|
-
ac->addr_str.c_str(),
|
110
|
+
ac->addr_str.c_str(), grpc_error_std_string(error).c_str());
|
109
111
|
}
|
110
112
|
gpr_mu_lock(&ac->mu);
|
111
113
|
if (ac->fd != nullptr) {
|
@@ -126,7 +128,7 @@ grpc_endpoint* grpc_tcp_client_create_from_fd(
|
|
126
128
|
return grpc_tcp_create(fd, channel_args, addr_str);
|
127
129
|
}
|
128
130
|
|
129
|
-
static void on_writable(void* acp,
|
131
|
+
static void on_writable(void* acp, grpc_error_handle error) {
|
130
132
|
async_connect* ac = static_cast<async_connect*>(acp);
|
131
133
|
int so_error = 0;
|
132
134
|
socklen_t so_error_size;
|
@@ -139,9 +141,8 @@ static void on_writable(void* acp, grpc_error* error) {
|
|
139
141
|
GRPC_ERROR_REF(error);
|
140
142
|
|
141
143
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
142
|
-
const char* str = grpc_error_string(error);
|
143
144
|
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_writable: error=%s",
|
144
|
-
ac->addr_str.c_str(),
|
145
|
+
ac->addr_str.c_str(), grpc_error_std_string(error).c_str());
|
145
146
|
}
|
146
147
|
|
147
148
|
gpr_mu_lock(&ac->mu);
|
@@ -239,15 +240,17 @@ finish:
|
|
239
240
|
grpc_channel_args_destroy(ac->channel_args);
|
240
241
|
delete ac;
|
241
242
|
}
|
242
|
-
|
243
|
+
// Push async connect closure to the executor since this may actually be
|
244
|
+
// called during the shutdown process, in which case a deadlock could form
|
245
|
+
// between the core shutdown mu and the connector mu (b/188239051)
|
246
|
+
grpc_core::Executor::Run(closure, error);
|
243
247
|
}
|
244
248
|
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
int* fd) {
|
249
|
+
grpc_error_handle grpc_tcp_client_prepare_fd(
|
250
|
+
const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
|
251
|
+
grpc_resolved_address* mapped_addr, int* fd) {
|
249
252
|
grpc_dualstack_mode dsmode;
|
250
|
-
|
253
|
+
grpc_error_handle error;
|
251
254
|
*fd = -1;
|
252
255
|
/* Use dualstack sockets where available. Set mapped to v6 or v4 mapped to
|
253
256
|
v6. */
|
@@ -293,7 +296,7 @@ void grpc_tcp_client_create_from_prepared_fd(
|
|
293
296
|
return;
|
294
297
|
}
|
295
298
|
if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
|
296
|
-
|
299
|
+
grpc_error_handle error = GRPC_OS_ERROR(errno, "connect");
|
297
300
|
error = grpc_error_set_str(
|
298
301
|
error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
299
302
|
grpc_slice_from_cpp_string(grpc_sockaddr_to_uri(addr)));
|
@@ -335,7 +338,7 @@ static void tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
|
|
335
338
|
grpc_millis deadline) {
|
336
339
|
grpc_resolved_address mapped_addr;
|
337
340
|
int fd = -1;
|
338
|
-
|
341
|
+
grpc_error_handle error;
|
339
342
|
*ep = nullptr;
|
340
343
|
if ((error = grpc_tcp_client_prepare_fd(channel_args, addr, &mapped_addr,
|
341
344
|
&fd)) != GRPC_ERROR_NONE) {
|
@@ -45,10 +45,9 @@ grpc_endpoint* grpc_tcp_client_create_from_fd(
|
|
45
45
|
fd: out parameter. The new FD
|
46
46
|
Returns: error, if any. Out parameters are not set on error
|
47
47
|
*/
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
int* fd);
|
48
|
+
grpc_error_handle grpc_tcp_client_prepare_fd(
|
49
|
+
const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
|
50
|
+
grpc_resolved_address* mapped_addr, int* fd);
|
52
51
|
|
53
52
|
/* Connect a configured TCP client fd.
|
54
53
|
|
@@ -31,10 +31,10 @@
|
|
31
31
|
#include <grpc/support/log.h>
|
32
32
|
#include <grpc/support/log_windows.h>
|
33
33
|
|
34
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
34
35
|
#include "src/core/lib/channel/channel_args.h"
|
35
36
|
#include "src/core/lib/iomgr/iocp_windows.h"
|
36
37
|
#include "src/core/lib/iomgr/sockaddr.h"
|
37
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
38
38
|
#include "src/core/lib/iomgr/socket_windows.h"
|
39
39
|
#include "src/core/lib/iomgr/tcp_client.h"
|
40
40
|
#include "src/core/lib/iomgr/tcp_windows.h"
|
@@ -66,7 +66,7 @@ static void async_connect_unlock_and_cleanup(async_connect* ac,
|
|
66
66
|
if (socket != NULL) grpc_winsocket_destroy(socket);
|
67
67
|
}
|
68
68
|
|
69
|
-
static void on_alarm(void* acp,
|
69
|
+
static void on_alarm(void* acp, grpc_error_handle error) {
|
70
70
|
async_connect* ac = (async_connect*)acp;
|
71
71
|
gpr_mu_lock(&ac->mu);
|
72
72
|
grpc_winsocket* socket = ac->socket;
|
@@ -77,7 +77,7 @@ static void on_alarm(void* acp, grpc_error* error) {
|
|
77
77
|
async_connect_unlock_and_cleanup(ac, socket);
|
78
78
|
}
|
79
79
|
|
80
|
-
static void on_connect(void* acp,
|
80
|
+
static void on_connect(void* acp, grpc_error_handle error) {
|
81
81
|
async_connect* ac = (async_connect*)acp;
|
82
82
|
grpc_endpoint** ep = ac->endpoint;
|
83
83
|
GPR_ASSERT(*ep == NULL);
|
@@ -137,7 +137,7 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
137
137
|
GUID guid = WSAID_CONNECTEX;
|
138
138
|
DWORD ioctl_num_bytes;
|
139
139
|
grpc_winsocket_callback_info* info;
|
140
|
-
|
140
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
141
141
|
async_connect* ac = NULL;
|
142
142
|
|
143
143
|
*endpoint = NULL;
|
@@ -213,7 +213,7 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
213
213
|
failure:
|
214
214
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
215
215
|
std::string target_uri = grpc_sockaddr_to_uri(addr);
|
216
|
-
|
216
|
+
grpc_error_handle final_error =
|
217
217
|
grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
218
218
|
"Failed to connect", &error, 1),
|
219
219
|
GRPC_ERROR_STR_TARGET_ADDRESS,
|
@@ -29,10 +29,10 @@
|
|
29
29
|
#include <grpc/support/log.h>
|
30
30
|
#include <grpc/support/string_util.h>
|
31
31
|
|
32
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
32
33
|
#include "src/core/lib/iomgr/error.h"
|
33
34
|
#include "src/core/lib/iomgr/iomgr_custom.h"
|
34
35
|
#include "src/core/lib/iomgr/resource_quota.h"
|
35
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
36
36
|
#include "src/core/lib/iomgr/tcp_client.h"
|
37
37
|
#include "src/core/lib/iomgr/tcp_custom.h"
|
38
38
|
#include "src/core/lib/iomgr/tcp_server.h"
|
@@ -122,15 +122,13 @@ static void tcp_unref(custom_tcp_endpoint* tcp) {
|
|
122
122
|
static void tcp_ref(custom_tcp_endpoint* tcp) { gpr_ref(&tcp->refcount); }
|
123
123
|
#endif
|
124
124
|
|
125
|
-
static void call_read_cb(custom_tcp_endpoint* tcp,
|
125
|
+
static void call_read_cb(custom_tcp_endpoint* tcp, grpc_error_handle error) {
|
126
126
|
grpc_closure* cb = tcp->read_cb;
|
127
127
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
128
128
|
gpr_log(GPR_INFO, "TCP:%p call_cb %p %p:%p", tcp->socket, cb, cb->cb,
|
129
129
|
cb->cb_arg);
|
130
130
|
size_t i;
|
131
|
-
|
132
|
-
gpr_log(GPR_INFO, "read: error=%s", str);
|
133
|
-
|
131
|
+
gpr_log(GPR_INFO, "read: error=%s", grpc_error_std_string(error).c_str());
|
134
132
|
for (i = 0; i < tcp->read_slices->count; i++) {
|
135
133
|
char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
|
136
134
|
GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
@@ -146,7 +144,7 @@ static void call_read_cb(custom_tcp_endpoint* tcp, grpc_error* error) {
|
|
146
144
|
}
|
147
145
|
|
148
146
|
static void custom_read_callback(grpc_custom_socket* socket, size_t nread,
|
149
|
-
|
147
|
+
grpc_error_handle error) {
|
150
148
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
151
149
|
grpc_core::ExecCtx exec_ctx;
|
152
150
|
grpc_slice_buffer garbage;
|
@@ -171,11 +169,11 @@ static void custom_read_callback(grpc_custom_socket* socket, size_t nread,
|
|
171
169
|
call_read_cb(tcp, error);
|
172
170
|
}
|
173
171
|
|
174
|
-
static void tcp_read_allocation_done(void* tcpp,
|
172
|
+
static void tcp_read_allocation_done(void* tcpp, grpc_error_handle error) {
|
175
173
|
custom_tcp_endpoint* tcp = static_cast<custom_tcp_endpoint*>(tcpp);
|
176
174
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
177
175
|
gpr_log(GPR_INFO, "TCP:%p read_allocation_done: %s", tcp->socket,
|
178
|
-
|
176
|
+
grpc_error_std_string(error).c_str());
|
179
177
|
}
|
180
178
|
if (error == GRPC_ERROR_NONE) {
|
181
179
|
/* Before calling read, we allocate a buffer with exactly one slice
|
@@ -191,8 +189,8 @@ static void tcp_read_allocation_done(void* tcpp, grpc_error* error) {
|
|
191
189
|
call_read_cb(tcp, GRPC_ERROR_REF(error));
|
192
190
|
}
|
193
191
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
194
|
-
|
195
|
-
|
192
|
+
gpr_log(GPR_INFO, "Initiating read on %p: error=%s", tcp->socket,
|
193
|
+
grpc_error_std_string(error).c_str());
|
196
194
|
}
|
197
195
|
}
|
198
196
|
|
@@ -213,7 +211,7 @@ static void endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
|
|
213
211
|
}
|
214
212
|
|
215
213
|
static void custom_write_callback(grpc_custom_socket* socket,
|
216
|
-
|
214
|
+
grpc_error_handle error) {
|
217
215
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
218
216
|
grpc_core::ExecCtx exec_ctx;
|
219
217
|
custom_tcp_endpoint* tcp =
|
@@ -221,8 +219,8 @@ static void custom_write_callback(grpc_custom_socket* socket,
|
|
221
219
|
grpc_closure* cb = tcp->write_cb;
|
222
220
|
tcp->write_cb = nullptr;
|
223
221
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
224
|
-
|
225
|
-
|
222
|
+
gpr_log(GPR_INFO, "write complete on %p: error=%s", tcp->socket,
|
223
|
+
grpc_error_std_string(error).c_str());
|
226
224
|
}
|
227
225
|
TCP_UNREF(tcp, "write");
|
228
226
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, error);
|
@@ -287,12 +285,12 @@ static void endpoint_delete_from_pollset_set(grpc_endpoint* ep,
|
|
287
285
|
(void)pollset;
|
288
286
|
}
|
289
287
|
|
290
|
-
static void endpoint_shutdown(grpc_endpoint* ep,
|
288
|
+
static void endpoint_shutdown(grpc_endpoint* ep, grpc_error_handle why) {
|
291
289
|
custom_tcp_endpoint* tcp = reinterpret_cast<custom_tcp_endpoint*>(ep);
|
292
290
|
if (!tcp->shutting_down) {
|
293
291
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
294
|
-
|
295
|
-
|
292
|
+
gpr_log(GPR_INFO, "TCP %p shutdown why=%s", tcp->socket,
|
293
|
+
grpc_error_std_string(why).c_str());
|
296
294
|
}
|
297
295
|
tcp->shutting_down = true;
|
298
296
|
// grpc_core::ExecCtx::Run(DEBUG_LOCATION,tcp->read_cb,
|
@@ -40,18 +40,19 @@ typedef struct grpc_custom_socket {
|
|
40
40
|
} grpc_custom_socket;
|
41
41
|
|
42
42
|
typedef void (*grpc_custom_connect_callback)(grpc_custom_socket* socket,
|
43
|
-
|
43
|
+
grpc_error_handle error);
|
44
44
|
typedef void (*grpc_custom_write_callback)(grpc_custom_socket* socket,
|
45
|
-
|
45
|
+
grpc_error_handle error);
|
46
46
|
typedef void (*grpc_custom_read_callback)(grpc_custom_socket* socket,
|
47
|
-
size_t nread,
|
47
|
+
size_t nread,
|
48
|
+
grpc_error_handle error);
|
48
49
|
typedef void (*grpc_custom_accept_callback)(grpc_custom_socket* socket,
|
49
50
|
grpc_custom_socket* client,
|
50
|
-
|
51
|
+
grpc_error_handle error);
|
51
52
|
typedef void (*grpc_custom_close_callback)(grpc_custom_socket* socket);
|
52
53
|
|
53
54
|
typedef struct grpc_socket_vtable {
|
54
|
-
|
55
|
+
grpc_error_handle (*init)(grpc_custom_socket* socket, int domain);
|
55
56
|
void (*connect)(grpc_custom_socket* socket, const grpc_sockaddr* addr,
|
56
57
|
size_t len, grpc_custom_connect_callback cb);
|
57
58
|
void (*destroy)(grpc_custom_socket* socket);
|
@@ -61,13 +62,13 @@ typedef struct grpc_socket_vtable {
|
|
61
62
|
grpc_custom_write_callback cb);
|
62
63
|
void (*read)(grpc_custom_socket* socket, char* buffer, size_t length,
|
63
64
|
grpc_custom_read_callback cb);
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
65
|
+
grpc_error_handle (*getpeername)(grpc_custom_socket* socket,
|
66
|
+
const grpc_sockaddr* addr, int* len);
|
67
|
+
grpc_error_handle (*getsockname)(grpc_custom_socket* socket,
|
68
|
+
const grpc_sockaddr* addr, int* len);
|
69
|
+
grpc_error_handle (*bind)(grpc_custom_socket* socket,
|
70
|
+
const grpc_sockaddr* addr, size_t len, int flags);
|
71
|
+
grpc_error_handle (*listen)(grpc_custom_socket* socket);
|
71
72
|
void (*accept)(grpc_custom_socket* socket, grpc_custom_socket* client,
|
72
73
|
grpc_custom_accept_callback cb);
|
73
74
|
} grpc_socket_vtable;
|
@@ -45,6 +45,7 @@
|
|
45
45
|
#include <grpc/support/sync.h>
|
46
46
|
#include <grpc/support/time.h>
|
47
47
|
|
48
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
48
49
|
#include "src/core/lib/channel/channel_args.h"
|
49
50
|
#include "src/core/lib/debug/stats.h"
|
50
51
|
#include "src/core/lib/debug/trace.h"
|
@@ -54,7 +55,6 @@
|
|
54
55
|
#include "src/core/lib/iomgr/buffer_list.h"
|
55
56
|
#include "src/core/lib/iomgr/ev_posix.h"
|
56
57
|
#include "src/core/lib/iomgr/executor.h"
|
57
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
58
58
|
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
59
59
|
#include "src/core/lib/profiling/timers.h"
|
60
60
|
#include "src/core/lib/slice/slice_internal.h"
|
@@ -432,15 +432,17 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp);
|
|
432
432
|
|
433
433
|
#define BACKUP_POLLER_POLLSET(b) ((grpc_pollset*)((b) + 1))
|
434
434
|
|
435
|
-
static
|
436
|
-
static
|
435
|
+
static grpc_core::Mutex* g_backup_poller_mu = nullptr;
|
436
|
+
static int g_uncovered_notifications_pending
|
437
|
+
ABSL_GUARDED_BY(g_backup_poller_mu);
|
438
|
+
static backup_poller* g_backup_poller ABSL_GUARDED_BY(g_backup_poller_mu);
|
437
439
|
|
438
|
-
static void tcp_handle_read(void* arg /* grpc_tcp */,
|
439
|
-
static void tcp_handle_write(void* arg /* grpc_tcp */,
|
440
|
+
static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error);
|
441
|
+
static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error_handle error);
|
440
442
|
static void tcp_drop_uncovered_then_handle_write(void* arg /* grpc_tcp */,
|
441
|
-
|
443
|
+
grpc_error_handle error);
|
442
444
|
|
443
|
-
static void done_poller(void* bp,
|
445
|
+
static void done_poller(void* bp, grpc_error_handle /*error_ignored*/) {
|
444
446
|
backup_poller* p = static_cast<backup_poller*>(bp);
|
445
447
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
446
448
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p destroy", p);
|
@@ -449,7 +451,7 @@ static void done_poller(void* bp, grpc_error* /*error_ignored*/) {
|
|
449
451
|
gpr_free(p);
|
450
452
|
}
|
451
453
|
|
452
|
-
static void run_poller(void* bp,
|
454
|
+
static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
|
453
455
|
backup_poller* p = static_cast<backup_poller*>(bp);
|
454
456
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
455
457
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p run", p);
|
@@ -461,17 +463,13 @@ static void run_poller(void* bp, grpc_error* /*error_ignored*/) {
|
|
461
463
|
"backup_poller:pollset_work",
|
462
464
|
grpc_pollset_work(BACKUP_POLLER_POLLSET(p), nullptr, deadline));
|
463
465
|
gpr_mu_unlock(p->pollset_mu);
|
464
|
-
|
465
|
-
|
466
|
-
if (
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
472
|
-
gpr_log(GPR_INFO, "BACKUP_POLLER:%p done cas_ok=%d", p, cas_ok);
|
473
|
-
}
|
474
|
-
gpr_mu_unlock(p->pollset_mu);
|
466
|
+
g_backup_poller_mu->Lock();
|
467
|
+
/* last "uncovered" notification is the ref that keeps us polling */
|
468
|
+
if (g_uncovered_notifications_pending == 1) {
|
469
|
+
GPR_ASSERT(g_backup_poller == p);
|
470
|
+
g_backup_poller = nullptr;
|
471
|
+
g_uncovered_notifications_pending = 0;
|
472
|
+
g_backup_poller_mu->Unlock();
|
475
473
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
476
474
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p shutdown", p);
|
477
475
|
}
|
@@ -479,6 +477,7 @@ static void run_poller(void* bp, grpc_error* /*error_ignored*/) {
|
|
479
477
|
GRPC_CLOSURE_INIT(&p->run_poller, done_poller, p,
|
480
478
|
grpc_schedule_on_exec_ctx));
|
481
479
|
} else {
|
480
|
+
g_backup_poller_mu->Unlock();
|
482
481
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
483
482
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p reschedule", p);
|
484
483
|
}
|
@@ -489,15 +488,17 @@ static void run_poller(void* bp, grpc_error* /*error_ignored*/) {
|
|
489
488
|
}
|
490
489
|
|
491
490
|
static void drop_uncovered(grpc_tcp* /*tcp*/) {
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
491
|
+
int old_count;
|
492
|
+
backup_poller* p;
|
493
|
+
g_backup_poller_mu->Lock();
|
494
|
+
p = g_backup_poller;
|
495
|
+
old_count = g_uncovered_notifications_pending--;
|
496
|
+
g_backup_poller_mu->Unlock();
|
497
|
+
GPR_ASSERT(old_count > 1);
|
496
498
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
497
|
-
gpr_log(GPR_INFO, "BACKUP_POLLER:%p uncover cnt %d->%d", p,
|
498
|
-
|
499
|
+
gpr_log(GPR_INFO, "BACKUP_POLLER:%p uncover cnt %d->%d", p, old_count,
|
500
|
+
old_count - 1);
|
499
501
|
}
|
500
|
-
GPR_ASSERT(old_count != 1);
|
501
502
|
}
|
502
503
|
|
503
504
|
// gRPC API considers a Write operation to be done the moment it clears ‘flow
|
@@ -509,38 +510,33 @@ static void drop_uncovered(grpc_tcp* /*tcp*/) {
|
|
509
510
|
// polling thread and progress is made) and hence add it to a backup poller here
|
510
511
|
static void cover_self(grpc_tcp* tcp) {
|
511
512
|
backup_poller* p;
|
512
|
-
|
513
|
-
|
514
|
-
if (
|
515
|
-
|
516
|
-
static_cast<int>(old_count), 2 + static_cast<int>(old_count));
|
517
|
-
}
|
518
|
-
if (old_count == 0) {
|
519
|
-
GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED();
|
513
|
+
g_backup_poller_mu->Lock();
|
514
|
+
int old_count = 0;
|
515
|
+
if (g_uncovered_notifications_pending == 0) {
|
516
|
+
g_uncovered_notifications_pending = 2;
|
520
517
|
p = static_cast<backup_poller*>(
|
521
518
|
gpr_zalloc(sizeof(*p) + grpc_pollset_size()));
|
519
|
+
g_backup_poller = p;
|
520
|
+
grpc_pollset_init(BACKUP_POLLER_POLLSET(p), &p->pollset_mu);
|
521
|
+
g_backup_poller_mu->Unlock();
|
522
|
+
GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED();
|
522
523
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
523
524
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p create", p);
|
524
525
|
}
|
525
|
-
grpc_pollset_init(BACKUP_POLLER_POLLSET(p), &p->pollset_mu);
|
526
|
-
gpr_atm_rel_store(&g_backup_poller, (gpr_atm)p);
|
527
526
|
grpc_core::Executor::Run(
|
528
527
|
GRPC_CLOSURE_INIT(&p->run_poller, run_poller, p, nullptr),
|
529
528
|
GRPC_ERROR_NONE, grpc_core::ExecutorType::DEFAULT,
|
530
529
|
grpc_core::ExecutorJobType::LONG);
|
531
530
|
} else {
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
}
|
531
|
+
old_count = g_uncovered_notifications_pending++;
|
532
|
+
p = g_backup_poller;
|
533
|
+
g_backup_poller_mu->Unlock();
|
536
534
|
}
|
537
535
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
538
|
-
gpr_log(GPR_INFO, "BACKUP_POLLER:%p add %p", p, tcp
|
536
|
+
gpr_log(GPR_INFO, "BACKUP_POLLER:%p add %p cnt %d->%d", p, tcp,
|
537
|
+
old_count - 1, old_count);
|
539
538
|
}
|
540
539
|
grpc_pollset_add_fd(BACKUP_POLLER_POLLSET(p), tcp->em_fd);
|
541
|
-
if (old_count != 0) {
|
542
|
-
drop_uncovered(tcp);
|
543
|
-
}
|
544
540
|
}
|
545
541
|
|
546
542
|
static void notify_on_read(grpc_tcp* tcp) {
|
@@ -560,9 +556,11 @@ static void notify_on_write(grpc_tcp* tcp) {
|
|
560
556
|
grpc_fd_notify_on_write(tcp->em_fd, &tcp->write_done_closure);
|
561
557
|
}
|
562
558
|
|
563
|
-
static void tcp_drop_uncovered_then_handle_write(void* arg,
|
559
|
+
static void tcp_drop_uncovered_then_handle_write(void* arg,
|
560
|
+
grpc_error_handle error) {
|
564
561
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
565
|
-
gpr_log(GPR_INFO, "TCP:%p got_write: %s", arg,
|
562
|
+
gpr_log(GPR_INFO, "TCP:%p got_write: %s", arg,
|
563
|
+
grpc_error_std_string(error).c_str());
|
566
564
|
}
|
567
565
|
drop_uncovered(static_cast<grpc_tcp*>(arg));
|
568
566
|
tcp_handle_write(arg, error);
|
@@ -604,7 +602,8 @@ static size_t get_target_read_size(grpc_tcp* tcp) {
|
|
604
602
|
return sz;
|
605
603
|
}
|
606
604
|
|
607
|
-
static
|
605
|
+
static grpc_error_handle tcp_annotate_error(grpc_error_handle src_error,
|
606
|
+
grpc_tcp* tcp) {
|
608
607
|
return grpc_error_set_str(
|
609
608
|
grpc_error_set_int(
|
610
609
|
grpc_error_set_int(src_error, GRPC_ERROR_INT_FD, tcp->fd),
|
@@ -615,10 +614,10 @@ static grpc_error* tcp_annotate_error(grpc_error* src_error, grpc_tcp* tcp) {
|
|
615
614
|
grpc_slice_from_copied_string(tcp->peer_string.c_str()));
|
616
615
|
}
|
617
616
|
|
618
|
-
static void tcp_handle_read(void* arg /* grpc_tcp */,
|
619
|
-
static void tcp_handle_write(void* arg /* grpc_tcp */,
|
617
|
+
static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error);
|
618
|
+
static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error_handle error);
|
620
619
|
|
621
|
-
static void tcp_shutdown(grpc_endpoint* ep,
|
620
|
+
static void tcp_shutdown(grpc_endpoint* ep, grpc_error_handle why) {
|
622
621
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
623
622
|
ZerocopyDisableAndWaitForRemaining(tcp);
|
624
623
|
grpc_fd_shutdown(tcp->em_fd, why);
|
@@ -678,16 +677,14 @@ static void tcp_destroy(grpc_endpoint* ep) {
|
|
678
677
|
TCP_UNREF(tcp, "destroy");
|
679
678
|
}
|
680
679
|
|
681
|
-
static void call_read_cb(grpc_tcp* tcp,
|
680
|
+
static void call_read_cb(grpc_tcp* tcp, grpc_error_handle error) {
|
682
681
|
grpc_closure* cb = tcp->read_cb;
|
683
682
|
|
684
683
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
685
684
|
gpr_log(GPR_INFO, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
|
686
685
|
size_t i;
|
687
|
-
const char* str = grpc_error_string(error);
|
688
686
|
gpr_log(GPR_INFO, "READ %p (peer=%s) error=%s", tcp,
|
689
|
-
tcp->peer_string.c_str(),
|
690
|
-
|
687
|
+
tcp->peer_string.c_str(), grpc_error_std_string(error).c_str());
|
691
688
|
if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
|
692
689
|
for (i = 0; i < tcp->incoming_buffer->count; i++) {
|
693
690
|
char* dump = grpc_dump_slice(tcp->incoming_buffer->slices[i],
|
@@ -850,11 +847,11 @@ static void tcp_do_read(grpc_tcp* tcp) {
|
|
850
847
|
TCP_UNREF(tcp, "read");
|
851
848
|
}
|
852
849
|
|
853
|
-
static void tcp_read_allocation_done(void* tcpp,
|
850
|
+
static void tcp_read_allocation_done(void* tcpp, grpc_error_handle error) {
|
854
851
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(tcpp);
|
855
852
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
856
853
|
gpr_log(GPR_INFO, "TCP:%p read_allocation_done: %s", tcp,
|
857
|
-
|
854
|
+
grpc_error_std_string(error).c_str());
|
858
855
|
}
|
859
856
|
if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
|
860
857
|
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
|
@@ -887,10 +884,11 @@ static void tcp_continue_read(grpc_tcp* tcp) {
|
|
887
884
|
tcp_do_read(tcp);
|
888
885
|
}
|
889
886
|
|
890
|
-
static void tcp_handle_read(void* arg /* grpc_tcp */,
|
887
|
+
static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
|
891
888
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
892
889
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
893
|
-
gpr_log(GPR_INFO, "TCP:%p got_read: %s", tcp,
|
890
|
+
gpr_log(GPR_INFO, "TCP:%p got_read: %s", tcp,
|
891
|
+
grpc_error_std_string(error).c_str());
|
894
892
|
}
|
895
893
|
|
896
894
|
if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
|
@@ -958,7 +956,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
|
958
956
|
int additional_flags = 0);
|
959
957
|
|
960
958
|
/** The callback function to be invoked when we get an error on the socket. */
|
961
|
-
static void tcp_handle_error(void* arg /* grpc_tcp */,
|
959
|
+
static void tcp_handle_error(void* arg /* grpc_tcp */, grpc_error_handle error);
|
962
960
|
|
963
961
|
static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
|
964
962
|
grpc_tcp* tcp, grpc_slice_buffer* buf);
|
@@ -1162,9 +1160,9 @@ static bool process_errors(grpc_tcp* tcp) {
|
|
1162
1160
|
struct cmsghdr align;
|
1163
1161
|
} aligned_buf;
|
1164
1162
|
msg.msg_control = aligned_buf.rbuf;
|
1165
|
-
msg.msg_controllen = sizeof(aligned_buf.rbuf);
|
1166
1163
|
int r, saved_errno;
|
1167
1164
|
while (true) {
|
1165
|
+
msg.msg_controllen = sizeof(aligned_buf.rbuf);
|
1168
1166
|
do {
|
1169
1167
|
r = recvmsg(tcp->fd, &msg, MSG_ERRQUEUE);
|
1170
1168
|
saved_errno = errno;
|
@@ -1213,10 +1211,12 @@ static bool process_errors(grpc_tcp* tcp) {
|
|
1213
1211
|
}
|
1214
1212
|
}
|
1215
1213
|
|
1216
|
-
static void tcp_handle_error(void* arg /* grpc_tcp */,
|
1214
|
+
static void tcp_handle_error(void* arg /* grpc_tcp */,
|
1215
|
+
grpc_error_handle error) {
|
1217
1216
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
1218
1217
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1219
|
-
gpr_log(GPR_INFO, "TCP:%p got_error: %s", tcp,
|
1218
|
+
gpr_log(GPR_INFO, "TCP:%p got_error: %s", tcp,
|
1219
|
+
grpc_error_std_string(error).c_str());
|
1220
1220
|
}
|
1221
1221
|
|
1222
1222
|
if (error != GRPC_ERROR_NONE ||
|
@@ -1257,7 +1257,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* /*tcp*/, struct msghdr* /*msg*/,
|
|
1257
1257
|
}
|
1258
1258
|
|
1259
1259
|
static void tcp_handle_error(void* /*arg*/ /* grpc_tcp */,
|
1260
|
-
|
1260
|
+
grpc_error_handle /*error*/) {
|
1261
1261
|
gpr_log(GPR_ERROR, "Error handling is not supported for this platform");
|
1262
1262
|
GPR_ASSERT(0);
|
1263
1263
|
}
|
@@ -1323,7 +1323,7 @@ void TcpZerocopySendRecord::UpdateOffsetForBytesSent(size_t sending_length,
|
|
1323
1323
|
|
1324
1324
|
// returns true if done, false if pending; if returning true, *error is set
|
1325
1325
|
static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
1326
|
-
|
1326
|
+
grpc_error_handle* error) {
|
1327
1327
|
struct msghdr msg;
|
1328
1328
|
struct iovec iov[MAX_WRITE_IOVEC];
|
1329
1329
|
msg_iovlen_type iov_size;
|
@@ -1399,7 +1399,7 @@ static void UnrefMaybePutZerocopySendRecord(grpc_tcp* tcp,
|
|
1399
1399
|
}
|
1400
1400
|
|
1401
1401
|
static bool tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
1402
|
-
|
1402
|
+
grpc_error_handle* error) {
|
1403
1403
|
bool done = do_tcp_flush_zerocopy(tcp, record, error);
|
1404
1404
|
if (done) {
|
1405
1405
|
// Either we encountered an error, or we successfully sent all the bytes.
|
@@ -1409,7 +1409,7 @@ static bool tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1409
1409
|
return done;
|
1410
1410
|
}
|
1411
1411
|
|
1412
|
-
static bool tcp_flush(grpc_tcp* tcp,
|
1412
|
+
static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
1413
1413
|
struct msghdr msg;
|
1414
1414
|
struct iovec iov[MAX_WRITE_IOVEC];
|
1415
1415
|
msg_iovlen_type iov_size;
|
@@ -1516,7 +1516,8 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error** error) {
|
|
1516
1516
|
}
|
1517
1517
|
}
|
1518
1518
|
|
1519
|
-
static void tcp_handle_write(void* arg /* grpc_tcp */,
|
1519
|
+
static void tcp_handle_write(void* arg /* grpc_tcp */,
|
1520
|
+
grpc_error_handle error) {
|
1520
1521
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
1521
1522
|
grpc_closure* cb;
|
1522
1523
|
|
@@ -1549,8 +1550,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error* error) {
|
|
1549
1550
|
tcp->write_cb = nullptr;
|
1550
1551
|
tcp->current_zerocopy_send = nullptr;
|
1551
1552
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1552
|
-
|
1553
|
-
gpr_log(GPR_INFO, "write: %s", str);
|
1553
|
+
gpr_log(GPR_INFO, "write: %s", grpc_error_std_string(error).c_str());
|
1554
1554
|
}
|
1555
1555
|
// No need to take a ref on error since tcp_flush provides a ref.
|
1556
1556
|
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
@@ -1562,7 +1562,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1562
1562
|
grpc_closure* cb, void* arg) {
|
1563
1563
|
GPR_TIMER_SCOPE("tcp_write", 0);
|
1564
1564
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1565
|
-
|
1565
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1566
1566
|
TcpZerocopySendRecord* zerocopy_send_record = nullptr;
|
1567
1567
|
|
1568
1568
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
@@ -1618,8 +1618,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1618
1618
|
notify_on_write(tcp);
|
1619
1619
|
} else {
|
1620
1620
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1621
|
-
|
1622
|
-
gpr_log(GPR_INFO, "write: %s", str);
|
1621
|
+
gpr_log(GPR_INFO, "write: %s", grpc_error_std_string(error).c_str());
|
1623
1622
|
}
|
1624
1623
|
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
1625
1624
|
}
|
@@ -1639,7 +1638,6 @@ static void tcp_add_to_pollset_set(grpc_endpoint* ep,
|
|
1639
1638
|
static void tcp_delete_from_pollset_set(grpc_endpoint* ep,
|
1640
1639
|
grpc_pollset_set* pollset_set) {
|
1641
1640
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1642
|
-
ZerocopyDisableAndWaitForRemaining(tcp);
|
1643
1641
|
grpc_pollset_set_del_fd(pollset_set, tcp->em_fd);
|
1644
1642
|
}
|
1645
1643
|
|
@@ -1871,4 +1869,11 @@ void grpc_tcp_destroy_and_release_fd(grpc_endpoint* ep, int* fd,
|
|
1871
1869
|
TCP_UNREF(tcp, "destroy");
|
1872
1870
|
}
|
1873
1871
|
|
1872
|
+
void grpc_tcp_posix_init() { g_backup_poller_mu = new grpc_core::Mutex; }
|
1873
|
+
|
1874
|
+
void grpc_tcp_posix_shutdown() {
|
1875
|
+
delete g_backup_poller_mu;
|
1876
|
+
g_backup_poller_mu = nullptr;
|
1877
|
+
}
|
1878
|
+
|
1874
1879
|
#endif /* GRPC_POSIX_SOCKET_TCP */
|