grpc 1.36.0 → 1.38.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 +126 -92
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/channel_args.h +28 -0
- data/include/grpc/event_engine/event_engine.h +336 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice_allocator.h +81 -0
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security_constants.h +14 -0
- data/include/grpc/impl/codegen/grpc_types.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -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 +715 -3166
- 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_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +9 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +18 -14
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- 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 +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -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 +36 -30
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +29 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +86 -63
- 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/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +3 -0
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
- 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_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +38 -33
- 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_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 +17 -9
- 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 +31 -14
- 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 +334 -114
- 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 +2188 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
- data/src/core/ext/filters/client_channel/server_address.cc +4 -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 +86 -162
- data/src/core/ext/filters/client_channel/subchannel.h +68 -99
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- 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 +501 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- 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 +5 -4
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +5 -4
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +485 -199
- 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 +3 -3
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +167 -122
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- 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 +13 -9
- 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_encoder.cc +1 -1
- 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 +63 -56
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +44 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +13 -9
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +13 -7
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +21 -20
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- 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 +1649 -329
- data/src/core/ext/xds/xds_api.h +284 -44
- data/src/core/ext/xds/xds_bootstrap.cc +110 -156
- data/src/core/ext/xds/xds_bootstrap.h +24 -25
- 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 +454 -177
- data/src/core/ext/xds/xds_client.h +62 -22
- data/src/core/ext/xds/xds_client_stats.h +5 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +410 -131
- 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 +107 -4
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +26 -6
- data/src/core/lib/channel/channel_stack.cc +22 -9
- data/src/core/lib/channel/channel_stack.h +17 -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 +108 -12
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +7 -45
- data/src/core/lib/channel/handshaker.h +5 -22
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/event_engine/slice_allocator.cc +59 -0
- data/src/core/lib/event_engine/sockaddr.cc +38 -0
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- data/src/core/lib/gprpp/thd.h +1 -1
- 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 +5 -6
- 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 +5 -5
- 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_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -61
- data/src/core/lib/iomgr/error.h +218 -107
- 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 +6 -6
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
- 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 +12 -11
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +10 -6
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- 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 +1 -1
- 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 +1 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- 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 +5 -5
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +3 -3
- data/src/core/lib/iomgr/resolve_address.h +6 -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 +12 -11
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
- 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 +15 -17
- 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 +37 -38
- 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 +23 -21
- data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
- 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 +27 -25
- 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_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +8 -8
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- 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_nospecial.cc +1 -1
- 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/{security/authorization → matchers}/matchers.cc +47 -47
- data/src/core/lib/{security/authorization → matchers}/matchers.h +42 -40
- 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 +9 -9
- 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/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 +14 -4
- 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 +28 -8
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +62 -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 +65 -34
- data/src/core/lib/security/transport/server_auth_filter.cc +24 -11
- 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/slice/slice_intern.cc +6 -7
- data/src/core/lib/surface/call.cc +46 -45
- data/src/core/lib/surface/call.h +2 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +6 -5
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +46 -47
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/lame_client.cc +43 -24
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +68 -55
- data/src/core/lib/surface/server.h +89 -29
- 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 +19 -8
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +64 -37
- data/src/core/lib/transport/metadata_batch.h +33 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +6 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +10 -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 +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -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/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- 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 +478 -462
- 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 +1 -1
- 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/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/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- 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/cipher/cipher.c +32 -16
- 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/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
- 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 +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
- 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/rand.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -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 +45 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
- 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 +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -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 -30
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -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_vfy.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- 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_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
- 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/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -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 +1 -38
- 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/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
- 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/ssl.h +210 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -122
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- 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 +74 -15
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +131 -83
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +128 -61
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -99
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- 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/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -67,10 +67,10 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
|
|
67
67
|
/// Returns null on parse error.
|
68
68
|
static RefCountedPtr<ServiceConfig> Create(const grpc_channel_args* args,
|
69
69
|
absl::string_view json_string,
|
70
|
-
|
70
|
+
grpc_error_handle* error);
|
71
71
|
|
72
72
|
ServiceConfig(const grpc_channel_args* args, std::string json_string,
|
73
|
-
Json json,
|
73
|
+
Json json, grpc_error_handle* error);
|
74
74
|
~ServiceConfig() override;
|
75
75
|
|
76
76
|
const std::string& json_string() const { return json_string_; }
|
@@ -91,13 +91,14 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
|
|
91
91
|
|
92
92
|
private:
|
93
93
|
// Helper functions for parsing the method configs.
|
94
|
-
|
95
|
-
|
96
|
-
|
94
|
+
grpc_error_handle ParsePerMethodParams(const grpc_channel_args* args);
|
95
|
+
grpc_error_handle ParseJsonMethodConfig(const grpc_channel_args* args,
|
96
|
+
const Json& json);
|
97
97
|
|
98
98
|
// Returns a path string for the JSON name object specified by json.
|
99
99
|
// Sets *error on error.
|
100
|
-
static std::string ParseJsonMethodName(const Json& json,
|
100
|
+
static std::string ParseJsonMethodName(const Json& json,
|
101
|
+
grpc_error_handle* error);
|
101
102
|
|
102
103
|
std::string json_string_;
|
103
104
|
Json json_;
|
@@ -36,13 +36,14 @@ class ServiceConfigChannelArgChannelData {
|
|
36
36
|
const char* service_config_str = grpc_channel_args_find_string(
|
37
37
|
args->channel_args, GRPC_ARG_SERVICE_CONFIG);
|
38
38
|
if (service_config_str != nullptr) {
|
39
|
-
|
39
|
+
grpc_error_handle service_config_error = GRPC_ERROR_NONE;
|
40
40
|
auto service_config = ServiceConfig::Create(
|
41
41
|
args->channel_args, service_config_str, &service_config_error);
|
42
42
|
if (service_config_error == GRPC_ERROR_NONE) {
|
43
43
|
service_config_ = std::move(service_config);
|
44
44
|
} else {
|
45
|
-
gpr_log(GPR_ERROR, "%s",
|
45
|
+
gpr_log(GPR_ERROR, "%s",
|
46
|
+
grpc_error_std_string(service_config_error).c_str());
|
46
47
|
}
|
47
48
|
GRPC_ERROR_UNREF(service_config_error);
|
48
49
|
}
|
@@ -73,7 +74,7 @@ class ServiceConfigChannelArgCallData {
|
|
73
74
|
}
|
74
75
|
};
|
75
76
|
|
76
|
-
|
77
|
+
grpc_error_handle ServiceConfigChannelArgInitCallElem(
|
77
78
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
78
79
|
ServiceConfigChannelArgCallData* calld =
|
79
80
|
static_cast<ServiceConfigChannelArgCallData*>(elem->call_data);
|
@@ -89,7 +90,7 @@ void ServiceConfigChannelArgDestroyCallElem(
|
|
89
90
|
calld->~ServiceConfigChannelArgCallData();
|
90
91
|
}
|
91
92
|
|
92
|
-
|
93
|
+
grpc_error_handle ServiceConfigChannelArgInitChannelElem(
|
93
94
|
grpc_channel_element* elem, grpc_channel_element_args* args) {
|
94
95
|
ServiceConfigChannelArgChannelData* chand =
|
95
96
|
static_cast<ServiceConfigChannelArgChannelData*>(elem->channel_data);
|
@@ -47,11 +47,11 @@ size_t ServiceConfigParser::RegisterParser(std::unique_ptr<Parser> parser) {
|
|
47
47
|
ServiceConfigParser::ParsedConfigVector
|
48
48
|
ServiceConfigParser::ParseGlobalParameters(const grpc_channel_args* args,
|
49
49
|
const Json& json,
|
50
|
-
|
50
|
+
grpc_error_handle* error) {
|
51
51
|
ParsedConfigVector parsed_global_configs;
|
52
|
-
std::vector<
|
52
|
+
std::vector<grpc_error_handle> error_list;
|
53
53
|
for (size_t i = 0; i < g_registered_parsers->size(); i++) {
|
54
|
-
|
54
|
+
grpc_error_handle parser_error = GRPC_ERROR_NONE;
|
55
55
|
auto parsed_config = (*g_registered_parsers)[i]->ParseGlobalParams(
|
56
56
|
args, json, &parser_error);
|
57
57
|
if (parser_error != GRPC_ERROR_NONE) {
|
@@ -68,11 +68,11 @@ ServiceConfigParser::ParseGlobalParameters(const grpc_channel_args* args,
|
|
68
68
|
ServiceConfigParser::ParsedConfigVector
|
69
69
|
ServiceConfigParser::ParsePerMethodParameters(const grpc_channel_args* args,
|
70
70
|
const Json& json,
|
71
|
-
|
71
|
+
grpc_error_handle* error) {
|
72
72
|
ParsedConfigVector parsed_method_configs;
|
73
|
-
std::vector<
|
73
|
+
std::vector<grpc_error_handle> error_list;
|
74
74
|
for (size_t i = 0; i < g_registered_parsers->size(); i++) {
|
75
|
-
|
75
|
+
grpc_error_handle parser_error = GRPC_ERROR_NONE;
|
76
76
|
auto parsed_config = (*g_registered_parsers)[i]->ParsePerMethodParams(
|
77
77
|
args, json, &parser_error);
|
78
78
|
if (parser_error != GRPC_ERROR_NONE) {
|
@@ -47,7 +47,8 @@ class ServiceConfigParser {
|
|
47
47
|
virtual ~Parser() = default;
|
48
48
|
|
49
49
|
virtual std::unique_ptr<ParsedConfig> ParseGlobalParams(
|
50
|
-
const grpc_channel_args*, const Json& /* json */,
|
50
|
+
const grpc_channel_args*, const Json& /* json */,
|
51
|
+
grpc_error_handle* error) {
|
51
52
|
// Avoid unused parameter warning on debug-only parameter
|
52
53
|
(void)error;
|
53
54
|
GPR_DEBUG_ASSERT(error != nullptr);
|
@@ -55,7 +56,8 @@ class ServiceConfigParser {
|
|
55
56
|
}
|
56
57
|
|
57
58
|
virtual std::unique_ptr<ParsedConfig> ParsePerMethodParams(
|
58
|
-
const grpc_channel_args*, const Json& /* json */,
|
59
|
+
const grpc_channel_args*, const Json& /* json */,
|
60
|
+
grpc_error_handle* error) {
|
59
61
|
// Avoid unused parameter warning on debug-only parameter
|
60
62
|
(void)error;
|
61
63
|
GPR_DEBUG_ASSERT(error != nullptr);
|
@@ -81,10 +83,11 @@ class ServiceConfigParser {
|
|
81
83
|
|
82
84
|
static ParsedConfigVector ParseGlobalParameters(const grpc_channel_args* args,
|
83
85
|
const Json& json,
|
84
|
-
|
86
|
+
grpc_error_handle* error);
|
85
87
|
|
86
88
|
static ParsedConfigVector ParsePerMethodParameters(
|
87
|
-
const grpc_channel_args* args, const Json& json,
|
89
|
+
const grpc_channel_args* args, const Json& json,
|
90
|
+
grpc_error_handle* error);
|
88
91
|
};
|
89
92
|
|
90
93
|
} // namespace grpc_core
|
@@ -36,6 +36,8 @@
|
|
36
36
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
37
37
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
38
38
|
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
|
39
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
40
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
39
41
|
#include "src/core/lib/backoff/backoff.h"
|
40
42
|
#include "src/core/lib/channel/channel_args.h"
|
41
43
|
#include "src/core/lib/channel/connected_channel.h"
|
@@ -45,8 +47,6 @@
|
|
45
47
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
46
48
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
47
49
|
#include "src/core/lib/gprpp/sync.h"
|
48
|
-
#include "src/core/lib/iomgr/parse_address.h"
|
49
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
50
50
|
#include "src/core/lib/profiling/timers.h"
|
51
51
|
#include "src/core/lib/slice/slice_internal.h"
|
52
52
|
#include "src/core/lib/surface/channel.h"
|
@@ -131,7 +131,7 @@ size_t ConnectedSubchannel::GetInitialCallSizeEstimate() const {
|
|
131
131
|
//
|
132
132
|
|
133
133
|
RefCountedPtr<SubchannelCall> SubchannelCall::Create(Args args,
|
134
|
-
|
134
|
+
grpc_error_handle* error) {
|
135
135
|
const size_t allocation_size =
|
136
136
|
args.connected_subchannel->GetInitialCallSizeEstimate();
|
137
137
|
Arena* arena = args.arena;
|
@@ -139,7 +139,7 @@ RefCountedPtr<SubchannelCall> SubchannelCall::Create(Args args,
|
|
139
139
|
arena->Alloc(allocation_size)) SubchannelCall(std::move(args), error));
|
140
140
|
}
|
141
141
|
|
142
|
-
SubchannelCall::SubchannelCall(Args args,
|
142
|
+
SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error)
|
143
143
|
: connected_subchannel_(std::move(args.connected_subchannel)),
|
144
144
|
deadline_(args.deadline) {
|
145
145
|
grpc_call_stack* callstk = SUBCHANNEL_CALL_TO_CALL_STACK(this);
|
@@ -156,8 +156,7 @@ SubchannelCall::SubchannelCall(Args args, grpc_error** error)
|
|
156
156
|
*error = grpc_call_stack_init(connected_subchannel_->channel_stack(), 1,
|
157
157
|
SubchannelCall::Destroy, this, &call_args);
|
158
158
|
if (GPR_UNLIKELY(*error != GRPC_ERROR_NONE)) {
|
159
|
-
|
160
|
-
gpr_log(GPR_ERROR, "error: %s", error_string);
|
159
|
+
gpr_log(GPR_ERROR, "error: %s", grpc_error_std_string(*error).c_str());
|
161
160
|
return;
|
162
161
|
}
|
163
162
|
grpc_call_stack_set_pollset_or_pollset_set(callstk, args.pollent);
|
@@ -207,7 +206,7 @@ void SubchannelCall::Unref(const DebugLocation& /*location*/,
|
|
207
206
|
GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(this), reason);
|
208
207
|
}
|
209
208
|
|
210
|
-
void SubchannelCall::Destroy(void* arg,
|
209
|
+
void SubchannelCall::Destroy(void* arg, grpc_error_handle /*error*/) {
|
211
210
|
GPR_TIMER_SCOPE("subchannel_call_destroy", 0);
|
212
211
|
SubchannelCall* self = static_cast<SubchannelCall*>(arg);
|
213
212
|
// Keep some members before destroying the subchannel call.
|
@@ -252,7 +251,7 @@ namespace {
|
|
252
251
|
|
253
252
|
// Sets *status based on the rest of the parameters.
|
254
253
|
void GetCallStatus(grpc_status_code* status, grpc_millis deadline,
|
255
|
-
grpc_metadata_batch* md_batch,
|
254
|
+
grpc_metadata_batch* md_batch, grpc_error_handle error) {
|
256
255
|
if (error != GRPC_ERROR_NONE) {
|
257
256
|
grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr);
|
258
257
|
} else {
|
@@ -268,7 +267,8 @@ void GetCallStatus(grpc_status_code* status, grpc_millis deadline,
|
|
268
267
|
|
269
268
|
} // namespace
|
270
269
|
|
271
|
-
void SubchannelCall::RecvTrailingMetadataReady(void* arg,
|
270
|
+
void SubchannelCall::RecvTrailingMetadataReady(void* arg,
|
271
|
+
grpc_error_handle error) {
|
272
272
|
SubchannelCall* call = static_cast<SubchannelCall*>(arg);
|
273
273
|
GPR_ASSERT(call->recv_trailing_metadata_ != nullptr);
|
274
274
|
grpc_status_code status = GRPC_STATUS_OK;
|
@@ -303,20 +303,17 @@ class Subchannel::ConnectedSubchannelStateWatcher
|
|
303
303
|
: public AsyncConnectivityStateWatcherInterface {
|
304
304
|
public:
|
305
305
|
// Must be instantiated while holding c->mu.
|
306
|
-
explicit ConnectedSubchannelStateWatcher(Subchannel
|
307
|
-
|
308
|
-
GRPC_SUBCHANNEL_WEAK_REF(subchannel_, "state_watcher");
|
309
|
-
GRPC_SUBCHANNEL_WEAK_UNREF(subchannel_, "connecting");
|
310
|
-
}
|
306
|
+
explicit ConnectedSubchannelStateWatcher(WeakRefCountedPtr<Subchannel> c)
|
307
|
+
: subchannel_(std::move(c)) {}
|
311
308
|
|
312
309
|
~ConnectedSubchannelStateWatcher() override {
|
313
|
-
|
310
|
+
subchannel_.reset(DEBUG_LOCATION, "state_watcher");
|
314
311
|
}
|
315
312
|
|
316
313
|
private:
|
317
314
|
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
318
315
|
const absl::Status& status) override {
|
319
|
-
Subchannel* c = subchannel_;
|
316
|
+
Subchannel* c = subchannel_.get();
|
320
317
|
MutexLock lock(&c->mu_);
|
321
318
|
switch (new_state) {
|
322
319
|
case GRPC_CHANNEL_TRANSIENT_FAILURE:
|
@@ -357,7 +354,7 @@ class Subchannel::ConnectedSubchannelStateWatcher
|
|
357
354
|
}
|
358
355
|
}
|
359
356
|
|
360
|
-
Subchannel
|
357
|
+
WeakRefCountedPtr<Subchannel> subchannel_;
|
361
358
|
};
|
362
359
|
|
363
360
|
// Asynchronously notifies the \a watcher of a change in the connectvity state
|
@@ -378,7 +375,7 @@ class Subchannel::AsyncWatcherNotifierLocked {
|
|
378
375
|
ExecCtx::Run(DEBUG_LOCATION,
|
379
376
|
GRPC_CLOSURE_INIT(
|
380
377
|
&closure_,
|
381
|
-
[](void* arg,
|
378
|
+
[](void* arg, grpc_error_handle /*error*/) {
|
382
379
|
auto* self =
|
383
380
|
static_cast<AsyncWatcherNotifierLocked*>(arg);
|
384
381
|
self->watcher_->OnConnectivityStateChange();
|
@@ -424,19 +421,19 @@ void Subchannel::ConnectivityStateWatcherList::NotifyLocked(
|
|
424
421
|
class Subchannel::HealthWatcherMap::HealthWatcher
|
425
422
|
: public AsyncConnectivityStateWatcherInterface {
|
426
423
|
public:
|
427
|
-
HealthWatcher(Subchannel
|
428
|
-
|
429
|
-
: subchannel_(c),
|
424
|
+
HealthWatcher(WeakRefCountedPtr<Subchannel> c,
|
425
|
+
std::string health_check_service_name)
|
426
|
+
: subchannel_(std::move(c)),
|
430
427
|
health_check_service_name_(std::move(health_check_service_name)),
|
431
|
-
state_(
|
432
|
-
|
433
|
-
|
428
|
+
state_(subchannel_->state_ == GRPC_CHANNEL_READY
|
429
|
+
? GRPC_CHANNEL_CONNECTING
|
430
|
+
: subchannel_->state_) {
|
434
431
|
// If the subchannel is already connected, start health checking.
|
435
|
-
if (
|
432
|
+
if (subchannel_->state_ == GRPC_CHANNEL_READY) StartHealthCheckingLocked();
|
436
433
|
}
|
437
434
|
|
438
435
|
~HealthWatcher() override {
|
439
|
-
|
436
|
+
subchannel_.reset(DEBUG_LOCATION, "health_watcher");
|
440
437
|
}
|
441
438
|
|
442
439
|
const std::string& health_check_service_name() const {
|
@@ -449,7 +446,8 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
449
446
|
grpc_connectivity_state initial_state,
|
450
447
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface> watcher) {
|
451
448
|
if (state_ != initial_state) {
|
452
|
-
new AsyncWatcherNotifierLocked(watcher, subchannel_, state_,
|
449
|
+
new AsyncWatcherNotifierLocked(watcher, subchannel_.get(), state_,
|
450
|
+
status_);
|
453
451
|
}
|
454
452
|
watcher_list_.AddWatcherLocked(std::move(watcher));
|
455
453
|
}
|
@@ -461,7 +459,8 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
461
459
|
|
462
460
|
bool HasWatchers() const { return !watcher_list_.empty(); }
|
463
461
|
|
464
|
-
void NotifyLocked(grpc_connectivity_state state, const absl::Status& status)
|
462
|
+
void NotifyLocked(grpc_connectivity_state state, const absl::Status& status)
|
463
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(subchannel_->mu_) {
|
465
464
|
if (state == GRPC_CHANNEL_READY) {
|
466
465
|
// If we had not already notified for CONNECTING state, do so now.
|
467
466
|
// (We may have missed this earlier, because if the transition
|
@@ -470,14 +469,14 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
470
469
|
if (state_ != GRPC_CHANNEL_CONNECTING) {
|
471
470
|
state_ = GRPC_CHANNEL_CONNECTING;
|
472
471
|
status_ = status;
|
473
|
-
watcher_list_.NotifyLocked(subchannel_, state_, status);
|
472
|
+
watcher_list_.NotifyLocked(subchannel_.get(), state_, status);
|
474
473
|
}
|
475
474
|
// If we've become connected, start health checking.
|
476
475
|
StartHealthCheckingLocked();
|
477
476
|
} else {
|
478
477
|
state_ = state;
|
479
478
|
status_ = status;
|
480
|
-
watcher_list_.NotifyLocked(subchannel_, state_, status);
|
479
|
+
watcher_list_.NotifyLocked(subchannel_.get(), state_, status);
|
481
480
|
// We're not connected, so stop health checking.
|
482
481
|
health_check_client_.reset();
|
483
482
|
}
|
@@ -496,18 +495,19 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
496
495
|
if (new_state != GRPC_CHANNEL_SHUTDOWN && health_check_client_ != nullptr) {
|
497
496
|
state_ = new_state;
|
498
497
|
status_ = status;
|
499
|
-
watcher_list_.NotifyLocked(subchannel_, new_state, status);
|
498
|
+
watcher_list_.NotifyLocked(subchannel_.get(), new_state, status);
|
500
499
|
}
|
501
500
|
}
|
502
501
|
|
503
|
-
void StartHealthCheckingLocked()
|
502
|
+
void StartHealthCheckingLocked()
|
503
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(subchannel_->mu_) {
|
504
504
|
GPR_ASSERT(health_check_client_ == nullptr);
|
505
505
|
health_check_client_ = MakeOrphanable<HealthCheckClient>(
|
506
506
|
health_check_service_name_, subchannel_->connected_subchannel_,
|
507
507
|
subchannel_->pollset_set_, subchannel_->channelz_node_, Ref());
|
508
508
|
}
|
509
509
|
|
510
|
-
Subchannel
|
510
|
+
WeakRefCountedPtr<Subchannel> subchannel_;
|
511
511
|
std::string health_check_service_name_;
|
512
512
|
OrphanablePtr<HealthCheckClient> health_check_client_;
|
513
513
|
grpc_connectivity_state state_;
|
@@ -520,7 +520,8 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
520
520
|
//
|
521
521
|
|
522
522
|
void Subchannel::HealthWatcherMap::AddWatcherLocked(
|
523
|
-
Subchannel
|
523
|
+
WeakRefCountedPtr<Subchannel> subchannel,
|
524
|
+
grpc_connectivity_state initial_state,
|
524
525
|
const std::string& health_check_service_name,
|
525
526
|
RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
|
526
527
|
// If the health check service name is not already present in the map,
|
@@ -528,8 +529,8 @@ void Subchannel::HealthWatcherMap::AddWatcherLocked(
|
|
528
529
|
auto it = map_.find(health_check_service_name);
|
529
530
|
HealthWatcher* health_watcher;
|
530
531
|
if (it == map_.end()) {
|
531
|
-
auto w = MakeOrphanable<HealthWatcher>(
|
532
|
-
|
532
|
+
auto w = MakeOrphanable<HealthWatcher>(std::move(subchannel),
|
533
|
+
health_check_service_name);
|
533
534
|
health_watcher = w.get();
|
534
535
|
map_.emplace(health_check_service_name, std::move(w));
|
535
536
|
} else {
|
@@ -647,14 +648,16 @@ Subchannel::ConnectivityStateWatcherInterface::PopConnectivityStateChange() {
|
|
647
648
|
return state_change;
|
648
649
|
}
|
649
650
|
|
650
|
-
Subchannel::Subchannel(SubchannelKey
|
651
|
+
Subchannel::Subchannel(SubchannelKey key,
|
651
652
|
OrphanablePtr<SubchannelConnector> connector,
|
652
653
|
const grpc_channel_args* args)
|
653
|
-
:
|
654
|
+
: DualRefCounted<Subchannel>(
|
655
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_trace_subchannel_refcount) ? "Subchannel"
|
656
|
+
: nullptr),
|
657
|
+
key_(std::move(key)),
|
654
658
|
connector_(std::move(connector)),
|
655
659
|
backoff_(ParseArgsForBackoffValues(args, &min_connect_timeout_ms_)) {
|
656
660
|
GRPC_STATS_INC_CLIENT_SUBCHANNELS_CREATED();
|
657
|
-
gpr_atm_no_barrier_store(&ref_pair_, 1 << INTERNAL_REF_BITS);
|
658
661
|
pollset_set_ = grpc_pollset_set_create();
|
659
662
|
grpc_resolved_address* addr =
|
660
663
|
static_cast<grpc_resolved_address*>(gpr_malloc(sizeof(*addr)));
|
@@ -704,26 +707,26 @@ Subchannel::~Subchannel() {
|
|
704
707
|
grpc_channel_args_destroy(args_);
|
705
708
|
connector_.reset();
|
706
709
|
grpc_pollset_set_destroy(pollset_set_);
|
707
|
-
delete key_;
|
708
710
|
}
|
709
711
|
|
710
|
-
Subchannel
|
711
|
-
|
712
|
-
|
712
|
+
RefCountedPtr<Subchannel> Subchannel::Create(
|
713
|
+
OrphanablePtr<SubchannelConnector> connector,
|
714
|
+
const grpc_channel_args* args) {
|
715
|
+
SubchannelKey key(args);
|
713
716
|
SubchannelPoolInterface* subchannel_pool =
|
714
717
|
SubchannelPoolInterface::GetSubchannelPoolFromChannelArgs(args);
|
715
718
|
GPR_ASSERT(subchannel_pool != nullptr);
|
716
|
-
Subchannel
|
719
|
+
RefCountedPtr<Subchannel> c = subchannel_pool->FindSubchannel(key);
|
717
720
|
if (c != nullptr) {
|
718
|
-
delete key;
|
719
721
|
return c;
|
720
722
|
}
|
721
|
-
c =
|
723
|
+
c = MakeRefCounted<Subchannel>(std::move(key), std::move(connector), args);
|
722
724
|
// Try to register the subchannel before setting the subchannel pool.
|
723
725
|
// Otherwise, in case of a registration race, unreffing c in
|
724
726
|
// RegisterSubchannel() will cause c to be tried to be unregistered, while
|
725
727
|
// its key maps to a different subchannel.
|
726
|
-
Subchannel
|
728
|
+
RefCountedPtr<Subchannel> registered =
|
729
|
+
subchannel_pool->RegisterSubchannel(c->key_, c);
|
727
730
|
if (registered == c) c->subchannel_pool_ = subchannel_pool->Ref();
|
728
731
|
return registered;
|
729
732
|
}
|
@@ -747,68 +750,6 @@ void Subchannel::ThrottleKeepaliveTime(int new_keepalive_time) {
|
|
747
750
|
}
|
748
751
|
}
|
749
752
|
|
750
|
-
Subchannel* Subchannel::Ref(GRPC_SUBCHANNEL_REF_EXTRA_ARGS) {
|
751
|
-
gpr_atm old_refs;
|
752
|
-
old_refs = RefMutate((1 << INTERNAL_REF_BITS),
|
753
|
-
0 GRPC_SUBCHANNEL_REF_MUTATE_PURPOSE("STRONG_REF"));
|
754
|
-
GPR_ASSERT((old_refs & STRONG_REF_MASK) != 0);
|
755
|
-
return this;
|
756
|
-
}
|
757
|
-
|
758
|
-
void Subchannel::Unref(GRPC_SUBCHANNEL_REF_EXTRA_ARGS) {
|
759
|
-
gpr_atm old_refs;
|
760
|
-
// add a weak ref and subtract a strong ref (atomically)
|
761
|
-
old_refs = RefMutate(
|
762
|
-
static_cast<gpr_atm>(1) - static_cast<gpr_atm>(1 << INTERNAL_REF_BITS),
|
763
|
-
1 GRPC_SUBCHANNEL_REF_MUTATE_PURPOSE("STRONG_UNREF"));
|
764
|
-
if ((old_refs & STRONG_REF_MASK) == (1 << INTERNAL_REF_BITS)) {
|
765
|
-
Disconnect();
|
766
|
-
}
|
767
|
-
GRPC_SUBCHANNEL_WEAK_UNREF(this, "strong-unref");
|
768
|
-
}
|
769
|
-
|
770
|
-
Subchannel* Subchannel::WeakRef(GRPC_SUBCHANNEL_REF_EXTRA_ARGS) {
|
771
|
-
gpr_atm old_refs;
|
772
|
-
old_refs = RefMutate(1, 0 GRPC_SUBCHANNEL_REF_MUTATE_PURPOSE("WEAK_REF"));
|
773
|
-
GPR_ASSERT(old_refs != 0);
|
774
|
-
return this;
|
775
|
-
}
|
776
|
-
|
777
|
-
namespace {
|
778
|
-
|
779
|
-
void subchannel_destroy(void* arg, grpc_error* /*error*/) {
|
780
|
-
Subchannel* self = static_cast<Subchannel*>(arg);
|
781
|
-
delete self;
|
782
|
-
}
|
783
|
-
|
784
|
-
} // namespace
|
785
|
-
|
786
|
-
void Subchannel::WeakUnref(GRPC_SUBCHANNEL_REF_EXTRA_ARGS) {
|
787
|
-
gpr_atm old_refs;
|
788
|
-
old_refs = RefMutate(-static_cast<gpr_atm>(1),
|
789
|
-
1 GRPC_SUBCHANNEL_REF_MUTATE_PURPOSE("WEAK_UNREF"));
|
790
|
-
if (old_refs == 1) {
|
791
|
-
ExecCtx::Run(DEBUG_LOCATION,
|
792
|
-
GRPC_CLOSURE_CREATE(subchannel_destroy, this,
|
793
|
-
grpc_schedule_on_exec_ctx),
|
794
|
-
GRPC_ERROR_NONE);
|
795
|
-
}
|
796
|
-
}
|
797
|
-
|
798
|
-
Subchannel* Subchannel::RefFromWeakRef() {
|
799
|
-
for (;;) {
|
800
|
-
gpr_atm old_refs = gpr_atm_acq_load(&ref_pair_);
|
801
|
-
if (old_refs >= (1 << INTERNAL_REF_BITS)) {
|
802
|
-
gpr_atm new_refs = old_refs + (1 << INTERNAL_REF_BITS);
|
803
|
-
if (gpr_atm_rel_cas(&ref_pair_, old_refs, new_refs)) {
|
804
|
-
return this;
|
805
|
-
}
|
806
|
-
} else {
|
807
|
-
return nullptr;
|
808
|
-
}
|
809
|
-
}
|
810
|
-
}
|
811
|
-
|
812
753
|
const char* Subchannel::GetTargetAddress() {
|
813
754
|
const grpc_arg* addr_arg =
|
814
755
|
grpc_channel_args_find(args_, GRPC_ARG_SUBCHANNEL_ADDRESS);
|
@@ -854,7 +795,8 @@ void Subchannel::WatchConnectivityState(
|
|
854
795
|
watcher_list_.AddWatcherLocked(std::move(watcher));
|
855
796
|
} else {
|
856
797
|
health_watcher_map_.AddWatcherLocked(
|
857
|
-
|
798
|
+
WeakRef(DEBUG_LOCATION, "health_watcher"), initial_state,
|
799
|
+
*health_check_service_name, std::move(watcher));
|
858
800
|
}
|
859
801
|
}
|
860
802
|
|
@@ -891,6 +833,21 @@ void Subchannel::ResetBackoff() {
|
|
891
833
|
}
|
892
834
|
}
|
893
835
|
|
836
|
+
void Subchannel::Orphan() {
|
837
|
+
// The subchannel_pool is only used once here in this subchannel, so the
|
838
|
+
// access can be outside of the lock.
|
839
|
+
if (subchannel_pool_ != nullptr) {
|
840
|
+
subchannel_pool_->UnregisterSubchannel(key_, this);
|
841
|
+
subchannel_pool_.reset();
|
842
|
+
}
|
843
|
+
MutexLock lock(&mu_);
|
844
|
+
GPR_ASSERT(!disconnected_);
|
845
|
+
disconnected_ = true;
|
846
|
+
connector_.reset();
|
847
|
+
connected_subchannel_.reset();
|
848
|
+
health_watcher_map_.ShutdownLocked();
|
849
|
+
}
|
850
|
+
|
894
851
|
grpc_arg Subchannel::CreateSubchannelAddressArg(
|
895
852
|
const grpc_resolved_address* addr) {
|
896
853
|
return grpc_channel_arg_string_create(
|
@@ -984,7 +941,8 @@ void Subchannel::MaybeStartConnectingLocked() {
|
|
984
941
|
return;
|
985
942
|
}
|
986
943
|
connecting_ = true;
|
987
|
-
|
944
|
+
WeakRef(DEBUG_LOCATION, "connecting")
|
945
|
+
.release(); // ref held by pending connect
|
988
946
|
if (!backoff_begun_) {
|
989
947
|
backoff_begun_ = true;
|
990
948
|
ContinueConnectingLocked();
|
@@ -1005,11 +963,9 @@ void Subchannel::MaybeStartConnectingLocked() {
|
|
1005
963
|
}
|
1006
964
|
}
|
1007
965
|
|
1008
|
-
void Subchannel::OnRetryAlarm(void* arg,
|
1009
|
-
Subchannel
|
1010
|
-
|
1011
|
-
// MutexLock instead of ReleasableMutexLock, here.
|
1012
|
-
ReleasableMutexLock lock(&c->mu_);
|
966
|
+
void Subchannel::OnRetryAlarm(void* arg, grpc_error_handle error) {
|
967
|
+
WeakRefCountedPtr<Subchannel> c(static_cast<Subchannel*>(arg));
|
968
|
+
MutexLock lock(&c->mu_);
|
1013
969
|
c->have_retry_alarm_ = false;
|
1014
970
|
if (c->disconnected_) {
|
1015
971
|
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Disconnected",
|
@@ -1023,10 +979,9 @@ void Subchannel::OnRetryAlarm(void* arg, grpc_error* error) {
|
|
1023
979
|
if (error == GRPC_ERROR_NONE) {
|
1024
980
|
gpr_log(GPR_INFO, "Failed to connect to channel, retrying");
|
1025
981
|
c->ContinueConnectingLocked();
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
GRPC_SUBCHANNEL_WEAK_UNREF(c, "connecting");
|
982
|
+
// Still connecting, keep ref around. Note that this stolen ref won't
|
983
|
+
// be dropped without first acquiring c->mu_.
|
984
|
+
c.release();
|
1030
985
|
}
|
1031
986
|
GRPC_ERROR_UNREF(error);
|
1032
987
|
}
|
@@ -1043,33 +998,30 @@ void Subchannel::ContinueConnectingLocked() {
|
|
1043
998
|
connector_->Connect(args, &connecting_result_, &on_connecting_finished_);
|
1044
999
|
}
|
1045
1000
|
|
1046
|
-
void Subchannel::OnConnectingFinished(void* arg,
|
1047
|
-
|
1001
|
+
void Subchannel::OnConnectingFinished(void* arg, grpc_error_handle error) {
|
1002
|
+
WeakRefCountedPtr<Subchannel> c(static_cast<Subchannel*>(arg));
|
1048
1003
|
const grpc_channel_args* delete_channel_args =
|
1049
1004
|
c->connecting_result_.channel_args;
|
1050
|
-
GRPC_SUBCHANNEL_WEAK_REF(c, "on_connecting_finished");
|
1051
1005
|
{
|
1052
1006
|
MutexLock lock(&c->mu_);
|
1053
1007
|
c->connecting_ = false;
|
1054
1008
|
if (c->connecting_result_.transport != nullptr &&
|
1055
1009
|
c->PublishTransportLocked()) {
|
1056
1010
|
// Do nothing, transport was published.
|
1057
|
-
} else if (c->disconnected_) {
|
1058
|
-
|
1059
|
-
|
1060
|
-
gpr_log(GPR_INFO, "Connect failed: %s", grpc_error_string(error));
|
1011
|
+
} else if (!c->disconnected_) {
|
1012
|
+
gpr_log(GPR_INFO, "Connect failed: %s",
|
1013
|
+
grpc_error_std_string(error).c_str());
|
1061
1014
|
c->SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1062
1015
|
grpc_error_to_absl_status(error));
|
1063
|
-
GRPC_SUBCHANNEL_WEAK_UNREF(c, "connecting");
|
1064
1016
|
}
|
1065
1017
|
}
|
1066
|
-
GRPC_SUBCHANNEL_WEAK_UNREF(c, "on_connecting_finished");
|
1067
1018
|
grpc_channel_args_destroy(delete_channel_args);
|
1019
|
+
c.reset(DEBUG_LOCATION, "connecting");
|
1068
1020
|
}
|
1069
1021
|
|
1070
1022
|
namespace {
|
1071
1023
|
|
1072
|
-
void ConnectionDestroy(void* arg,
|
1024
|
+
void ConnectionDestroy(void* arg, grpc_error_handle /*error*/) {
|
1073
1025
|
grpc_channel_stack* stk = static_cast<grpc_channel_stack*>(arg);
|
1074
1026
|
grpc_channel_stack_destroy(stk);
|
1075
1027
|
gpr_free(stk);
|
@@ -1089,13 +1041,13 @@ bool Subchannel::PublishTransportLocked() {
|
|
1089
1041
|
return false;
|
1090
1042
|
}
|
1091
1043
|
grpc_channel_stack* stk;
|
1092
|
-
|
1044
|
+
grpc_error_handle error = grpc_channel_stack_builder_finish(
|
1093
1045
|
builder, 0, 1, ConnectionDestroy, nullptr,
|
1094
1046
|
reinterpret_cast<void**>(&stk));
|
1095
1047
|
if (error != GRPC_ERROR_NONE) {
|
1096
1048
|
grpc_transport_destroy(connecting_result_.transport);
|
1097
1049
|
gpr_log(GPR_ERROR, "error initializing subchannel stack: %s",
|
1098
|
-
|
1050
|
+
grpc_error_std_string(error).c_str());
|
1099
1051
|
GRPC_ERROR_UNREF(error);
|
1100
1052
|
return false;
|
1101
1053
|
}
|
@@ -1117,39 +1069,11 @@ bool Subchannel::PublishTransportLocked() {
|
|
1117
1069
|
}
|
1118
1070
|
// Start watching connected subchannel.
|
1119
1071
|
connected_subchannel_->StartWatch(
|
1120
|
-
pollset_set_, MakeOrphanable<ConnectedSubchannelStateWatcher>(
|
1072
|
+
pollset_set_, MakeOrphanable<ConnectedSubchannelStateWatcher>(
|
1073
|
+
WeakRef(DEBUG_LOCATION, "state_watcher")));
|
1121
1074
|
// Report initial state.
|
1122
1075
|
SetConnectivityStateLocked(GRPC_CHANNEL_READY, absl::Status());
|
1123
1076
|
return true;
|
1124
1077
|
}
|
1125
1078
|
|
1126
|
-
void Subchannel::Disconnect() {
|
1127
|
-
// The subchannel_pool is only used once here in this subchannel, so the
|
1128
|
-
// access can be outside of the lock.
|
1129
|
-
if (subchannel_pool_ != nullptr) {
|
1130
|
-
subchannel_pool_->UnregisterSubchannel(key_);
|
1131
|
-
subchannel_pool_.reset();
|
1132
|
-
}
|
1133
|
-
MutexLock lock(&mu_);
|
1134
|
-
GPR_ASSERT(!disconnected_);
|
1135
|
-
disconnected_ = true;
|
1136
|
-
connector_.reset();
|
1137
|
-
connected_subchannel_.reset();
|
1138
|
-
health_watcher_map_.ShutdownLocked();
|
1139
|
-
}
|
1140
|
-
|
1141
|
-
gpr_atm Subchannel::RefMutate(
|
1142
|
-
gpr_atm delta, int barrier GRPC_SUBCHANNEL_REF_MUTATE_EXTRA_ARGS) {
|
1143
|
-
gpr_atm old_val = barrier ? gpr_atm_full_fetch_add(&ref_pair_, delta)
|
1144
|
-
: gpr_atm_no_barrier_fetch_add(&ref_pair_, delta);
|
1145
|
-
#ifndef NDEBUG
|
1146
|
-
if (grpc_trace_subchannel_refcount.enabled()) {
|
1147
|
-
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
1148
|
-
"SUBCHANNEL: %p %12s 0x%" PRIxPTR " -> 0x%" PRIxPTR " [%s]", this,
|
1149
|
-
purpose, old_val, old_val + delta, reason);
|
1150
|
-
}
|
1151
|
-
#endif
|
1152
|
-
return old_val;
|
1153
|
-
}
|
1154
|
-
|
1155
1079
|
} // namespace grpc_core
|