grpc 1.75.0.pre1 → 1.76.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +18 -5
- data/include/grpc/credentials.h +21 -5
- data/src/core/call/call_filters.cc +4 -4
- data/src/core/call/call_filters.h +36 -36
- data/src/core/call/call_spine.h +27 -27
- data/src/core/call/client_call.cc +6 -5
- data/src/core/call/filter_fusion.h +5 -5
- data/src/core/call/metadata_batch.h +3 -3
- data/src/core/call/security_context.cc +1 -1
- data/src/core/call/server_call.cc +4 -4
- data/src/core/call/server_call.h +1 -1
- data/src/core/channelz/channelz.cc +12 -18
- data/src/core/channelz/channelz.h +32 -16
- data/src/core/channelz/channelz_registry.h +11 -0
- data/src/core/channelz/property_list.cc +18 -0
- data/src/core/channelz/property_list.h +10 -1
- data/src/core/channelz/text_encode.cc +66 -0
- data/src/core/channelz/text_encode.h +29 -0
- data/src/core/channelz/v2tov1/convert.cc +11 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +15 -8
- data/src/core/channelz/ztrace_collector.h +247 -86
- data/src/core/client_channel/backup_poller.cc +5 -6
- data/src/core/client_channel/client_channel.cc +20 -13
- data/src/core/client_channel/client_channel_filter.cc +53 -45
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +3 -4
- data/src/core/client_channel/config_selector.h +3 -3
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/global_subchannel_pool.cc +0 -37
- data/src/core/client_channel/global_subchannel_pool.h +0 -27
- data/src/core/client_channel/load_balanced_call_destination.cc +7 -7
- data/src/core/client_channel/local_subchannel_pool.cc +4 -4
- data/src/core/client_channel/retry_filter.h +3 -3
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/subchannel.cc +8 -8
- data/src/core/client_channel/subchannel_stream_client.cc +4 -4
- data/src/core/config/config_vars.cc +30 -1
- data/src/core/config/config_vars.h +21 -0
- data/src/core/config/core_configuration.cc +5 -5
- data/src/core/config/core_configuration.h +7 -7
- data/src/core/config/load_config.cc +12 -0
- data/src/core/config/load_config.h +2 -0
- data/src/core/credentials/call/call_credentials.h +2 -2
- data/src/core/credentials/call/call_creds_util.cc +4 -3
- data/src/core/credentials/call/composite/composite_call_credentials.cc +4 -4
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +3 -3
- data/src/core/credentials/call/external/external_account_credentials.cc +1 -1
- data/src/core/credentials/call/external/url_external_account_credentials.cc +1 -1
- data/src/core/credentials/call/iam/iam_credentials.cc +4 -4
- data/src/core/credentials/call/jwt/json_token.cc +3 -3
- data/src/core/credentials/call/jwt/jwt_credentials.cc +2 -2
- data/src/core/credentials/call/jwt/jwt_verifier.cc +14 -13
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +20 -12
- data/src/core/credentials/call/plugin/plugin_credentials.cc +2 -2
- data/src/core/credentials/transport/alts/alts_credentials.cc +4 -4
- data/src/core/credentials/transport/alts/alts_security_connector.cc +14 -12
- data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +22 -2
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +10 -1
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +31 -0
- data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +8 -3
- data/src/core/credentials/transport/composite/composite_channel_credentials.cc +5 -5
- data/src/core/credentials/transport/fake/fake_security_connector.cc +2 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +78 -28
- data/src/core/credentials/transport/insecure/insecure_security_connector.cc +3 -3
- data/src/core/credentials/transport/local/local_security_connector.cc +8 -8
- data/src/core/credentials/transport/security_connector.cc +5 -5
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +12 -12
- data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +3 -3
- data/src/core/credentials/transport/tls/certificate_provider_registry.cc +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +24 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +5 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +17 -17
- data/src/core/credentials/transport/tls/ssl_utils.cc +14 -9
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -2
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -11
- data/src/core/credentials/transport/transport_credentials.cc +2 -2
- data/src/core/credentials/transport/transport_credentials.h +2 -2
- data/src/core/credentials/transport/xds/xds_credentials.cc +5 -5
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +2 -0
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/message_compress/compression_filter.h +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -7
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -9
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +96 -88
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -7
- data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +60 -0
- data/src/core/ext/transport/chttp2/transport/frame.cc +32 -10
- data/src/core/ext/transport/chttp2/transport/frame.h +16 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +28 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +27 -27
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +543 -366
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +198 -277
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +11 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +179 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +51 -23
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +13 -6
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +115 -71
- data/src/core/ext/transport/chttp2/transport/internal.h +6 -14
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +7 -7
- data/src/core/ext/transport/chttp2/transport/parsing.cc +17 -15
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +62 -26
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +58 -22
- data/src/core/ext/transport/chttp2/transport/stream.h +207 -0
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +328 -187
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +17 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.h +52 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +181 -79
- data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +3 -3
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +740 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +218 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +46 -0
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +87 -55
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +23 -21
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.h +47 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.c +129 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.h +72 -0
- data/src/core/filter/auth/server_auth_filter.cc +2 -2
- data/src/core/handshaker/handshaker.cc +3 -3
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +2 -2
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +2 -2
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +31 -8
- data/src/core/handshaker/security/secure_endpoint.cc +16 -6
- data/src/core/handshaker/security/security_handshaker.cc +3 -3
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/channel/channel_stack.cc +8 -5
- data/src/core/lib/channel/channel_stack.h +3 -0
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -0
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.cc +69 -64
- data/src/core/lib/channel/promise_based_filter.h +16 -15
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/message_compress.cc +7 -7
- data/src/core/lib/event_engine/ares_resolver.cc +22 -20
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -2
- data/src/core/lib/event_engine/extensions/channelz.h +2 -2
- data/src/core/lib/event_engine/extensions/supports_fd.h +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +8 -8
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +10 -10
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +23 -22
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -11
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +168 -170
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +33 -54
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +1 -1
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +3 -3
- data/src/core/lib/event_engine/resolved_address.cc +3 -3
- data/src/core/lib/event_engine/shim.cc +8 -11
- data/src/core/lib/event_engine/shim.h +2 -1
- data/src/core/lib/event_engine/slice.cc +2 -2
- data/src/core/lib/event_engine/tcp_socket_utils.cc +11 -11
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +7 -7
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -31
- data/src/core/lib/event_engine/windows/iocp.cc +10 -10
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -11
- data/src/core/lib/event_engine/windows/windows_engine.cc +16 -14
- data/src/core/lib/event_engine/windows/windows_listener.cc +7 -7
- data/src/core/lib/experiments/experiments.cc +105 -18
- data/src/core/lib/experiments/experiments.h +43 -11
- data/src/core/lib/iomgr/call_combiner.cc +3 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +6 -6
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +5 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +15 -14
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +15 -15
- data/src/core/lib/iomgr/ev_poll_posix.cc +11 -11
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -4
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +8 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +3 -3
- data/src/core/lib/iomgr/lockfree_event.cc +2 -2
- data/src/core/lib/iomgr/polling_entity.cc +3 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
- data/src/core/lib/iomgr/tcp_posix.cc +42 -42
- data/src/core/lib/iomgr/tcp_server.cc +5 -0
- data/src/core/lib/iomgr/tcp_server.h +7 -0
- data/src/core/lib/iomgr/tcp_server_posix.cc +47 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +68 -29
- data/src/core/lib/iomgr/tcp_windows.cc +7 -7
- data/src/core/lib/iomgr/timer_generic.cc +2 -2
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -2
- data/src/core/lib/promise/activity.cc +2 -2
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/context.h +2 -2
- data/src/core/lib/promise/detail/join_state.h +9 -9
- data/src/core/lib/promise/detail/seq_state.h +13 -13
- data/src/core/lib/promise/detail/status.h +2 -2
- data/src/core/lib/promise/for_each.h +5 -5
- data/src/core/lib/promise/interceptor_list.h +2 -2
- data/src/core/lib/promise/latch.h +7 -7
- data/src/core/lib/promise/mpsc.cc +26 -26
- data/src/core/lib/promise/mpsc.h +2 -2
- data/src/core/lib/promise/observable.h +4 -4
- data/src/core/lib/promise/party.cc +32 -25
- data/src/core/lib/promise/party.h +16 -19
- data/src/core/lib/promise/pipe.h +15 -15
- data/src/core/lib/promise/poll.h +5 -4
- data/src/core/lib/promise/promise.h +0 -2
- data/src/core/lib/promise/sleep.cc +3 -1
- data/src/core/lib/promise/status_flag.h +7 -7
- data/src/core/lib/promise/try_join.h +2 -2
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resource_quota/arena.h +15 -2
- data/src/core/lib/resource_quota/connection_quota.cc +9 -7
- data/src/core/lib/resource_quota/memory_quota.cc +45 -24
- data/src/core/lib/resource_quota/memory_quota.h +48 -16
- data/src/core/lib/resource_quota/telemetry.h +54 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -2
- data/src/core/lib/resource_tracker/resource_tracker.cc +33 -0
- data/src/core/lib/resource_tracker/resource_tracker.h +46 -0
- data/src/core/lib/security/authorization/audit_logging.cc +5 -5
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -2
- data/src/core/lib/surface/call.cc +16 -14
- data/src/core/lib/surface/call.h +1 -1
- data/src/core/lib/surface/call_utils.cc +2 -2
- data/src/core/lib/surface/call_utils.h +2 -2
- data/src/core/lib/surface/channel.cc +4 -4
- data/src/core/lib/surface/channel_create.cc +10 -6
- data/src/core/lib/surface/channel_init.cc +80 -23
- data/src/core/lib/surface/channel_init.h +26 -11
- data/src/core/lib/surface/completion_queue.cc +17 -16
- data/src/core/lib/surface/completion_queue_factory.cc +7 -7
- data/src/core/lib/surface/connection_context.h +45 -2
- data/src/core/lib/surface/filter_stack_call.cc +12 -23
- data/src/core/lib/surface/filter_stack_call.h +3 -4
- data/src/core/lib/surface/legacy_channel.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +3 -3
- data/src/core/lib/transport/promise_endpoint.cc +3 -3
- data/src/core/lib/transport/promise_endpoint.h +8 -8
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/load_balancing/child_policy_handler.cc +4 -4
- data/src/core/load_balancing/endpoint_list.cc +2 -2
- data/src/core/load_balancing/grpclb/grpclb.cc +24 -24
- data/src/core/load_balancing/health_check_client.cc +4 -4
- data/src/core/load_balancing/health_check_client_internal.h +2 -2
- data/src/core/load_balancing/lb_policy_registry.cc +2 -2
- data/src/core/load_balancing/oob_backend_metric.cc +4 -4
- data/src/core/load_balancing/oob_backend_metric_internal.h +2 -2
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
- data/src/core/load_balancing/pick_first/pick_first.cc +14 -14
- data/src/core/load_balancing/priority/priority.cc +23 -24
- data/src/core/load_balancing/ring_hash/ring_hash.cc +3 -3
- data/src/core/load_balancing/rls/rls.cc +13 -13
- data/src/core/load_balancing/round_robin/round_robin.cc +9 -9
- data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +3 -3
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -26
- data/src/core/load_balancing/weighted_target/weighted_target.cc +5 -5
- data/src/core/load_balancing/xds/cds.cc +76 -32
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +3 -3
- data/src/core/load_balancing/xds/xds_override_host.cc +4 -4
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +33 -33
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -10
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -3
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +2 -2
- data/src/core/resolver/endpoint_addresses.cc +3 -3
- data/src/core/resolver/endpoint_addresses.h +3 -0
- data/src/core/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +41 -54
- data/src/core/resolver/polling_resolver.cc +3 -3
- data/src/core/resolver/resolver_registry.cc +5 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +5 -5
- data/src/core/resolver/xds/xds_resolver.cc +9 -9
- data/src/core/server/server.cc +38 -38
- data/src/core/server/server_call_tracer_filter.h +4 -4
- data/src/core/server/server_config_selector_filter.cc +2 -2
- data/src/core/server/xds_server_config_fetcher.cc +9 -8
- data/src/core/service_config/service_config_impl.h +2 -2
- data/src/core/telemetry/call_tracer.cc +39 -49
- data/src/core/telemetry/call_tracer.h +199 -22
- data/src/core/telemetry/histogram.h +205 -0
- data/src/core/telemetry/instrument.cc +719 -0
- data/src/core/telemetry/instrument.h +932 -0
- data/src/core/telemetry/metrics.cc +13 -5
- data/src/core/telemetry/metrics.h +3 -1
- data/src/core/telemetry/stats_data.cc +0 -19
- data/src/core/telemetry/stats_data.h +0 -19
- data/src/core/transport/auth_context.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -45
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -0
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +39 -31
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +3 -3
- data/src/core/tsi/fake_transport_security.cc +4 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +4 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +9 -9
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -3
- data/src/core/tsi/ssl_transport_security.cc +26 -25
- data/src/core/tsi/ssl_transport_security_utils.cc +9 -9
- data/src/core/util/chunked_vector.h +4 -4
- data/src/core/util/event_log.cc +2 -2
- data/src/core/util/gcp_metadata_query.cc +2 -2
- data/src/core/util/grpc_check.cc +22 -0
- data/src/core/util/grpc_check.h +103 -0
- data/src/core/util/http_client/httpcli.cc +3 -3
- data/src/core/util/http_client/parser.cc +4 -4
- data/src/core/util/latent_see.h +7 -4
- data/src/core/util/lru_cache.h +4 -4
- data/src/core/util/memory_usage.h +16 -0
- data/src/core/util/posix/directory_reader.cc +3 -2
- data/src/core/util/posix/sync.cc +24 -24
- data/src/core/util/postmortem_emit.cc +52 -0
- data/src/core/util/postmortem_emit.h +30 -0
- data/src/core/util/ref_counted_ptr.h +5 -0
- data/src/core/util/trie_lookup.h +170 -0
- data/src/core/util/unique_ptr_with_bitset.h +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +6 -1
- data/src/core/xds/grpc/xds_certificate_provider.cc +3 -3
- data/src/core/xds/grpc/xds_client_grpc.cc +34 -15
- data/src/core/xds/grpc/xds_client_grpc.h +4 -1
- data/src/core/xds/grpc/xds_cluster_parser.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_endpoint_parser.cc +2 -2
- data/src/core/xds/grpc/xds_http_filter_registry.cc +4 -3
- data/src/core/xds/grpc/xds_listener_parser.cc +3 -3
- data/src/core/xds/grpc/xds_matcher.cc +277 -0
- data/src/core/xds/grpc/xds_matcher.h +432 -0
- data/src/core/xds/grpc/xds_matcher_action.cc +47 -0
- data/src/core/xds/grpc/xds_matcher_action.h +48 -0
- data/src/core/xds/grpc/xds_matcher_context.cc +29 -0
- data/src/core/xds/grpc/xds_matcher_context.h +46 -0
- data/src/core/xds/grpc/xds_matcher_input.cc +79 -0
- data/src/core/xds/grpc/xds_matcher_input.h +105 -0
- data/src/core/xds/grpc/xds_matcher_parse.cc +356 -0
- data/src/core/xds/grpc/xds_matcher_parse.h +39 -0
- data/src/core/xds/grpc/xds_metadata.cc +4 -3
- data/src/core/xds/grpc/xds_route_config_parser.cc +6 -6
- data/src/core/xds/grpc/xds_routing.cc +3 -3
- data/src/core/xds/grpc/xds_transport_grpc.cc +10 -10
- data/src/core/xds/xds_client/lrs_client.cc +6 -6
- data/src/core/xds/xds_client/xds_client.cc +9 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
- data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
- metadata +37 -2
@@ -19,8 +19,8 @@
|
|
19
19
|
#include <memory>
|
20
20
|
#include <optional>
|
21
21
|
|
22
|
-
#include "absl/log/check.h"
|
23
22
|
#include "src/core/util/crash.h"
|
23
|
+
#include "src/core/util/grpc_check.h"
|
24
24
|
|
25
25
|
namespace grpc_core {
|
26
26
|
|
@@ -50,7 +50,7 @@ GlobalInstrumentsRegistry::RegisterInstrument(
|
|
50
50
|
}
|
51
51
|
}
|
52
52
|
InstrumentID index = instruments.size();
|
53
|
-
|
53
|
+
GRPC_CHECK_LT(index, std::numeric_limits<uint32_t>::max());
|
54
54
|
GlobalInstrumentDescriptor descriptor;
|
55
55
|
descriptor.value_type = value_type;
|
56
56
|
descriptor.instrument_type = instrument_type;
|
@@ -101,23 +101,31 @@ RegisteredMetricCallback::~RegisteredMetricCallback() {
|
|
101
101
|
|
102
102
|
void GlobalStatsPluginRegistry::StatsPluginGroup::AddClientCallTracers(
|
103
103
|
const Slice& path, bool registered_method, Arena* arena) {
|
104
|
+
absl::InlinedVector<ClientCallTracerInterface*, 3> tracers;
|
104
105
|
for (auto& state : plugins_state_) {
|
105
106
|
auto* call_tracer = state.plugin->GetClientCallTracer(
|
106
107
|
path, registered_method, state.scope_config);
|
107
108
|
if (call_tracer != nullptr) {
|
108
|
-
|
109
|
+
tracers.push_back(call_tracer);
|
109
110
|
}
|
110
111
|
}
|
112
|
+
SetClientCallTracer(arena, tracers);
|
111
113
|
}
|
112
114
|
|
113
115
|
void GlobalStatsPluginRegistry::StatsPluginGroup::AddServerCallTracers(
|
114
|
-
Arena* arena
|
116
|
+
Arena* arena,
|
117
|
+
absl::Span<ServerCallTracerInterface* const> additional_tracers) {
|
118
|
+
absl::InlinedVector<ServerCallTracerInterface*, 3> tracers;
|
119
|
+
for (auto* tracer : additional_tracers) {
|
120
|
+
if (tracer != nullptr) tracers.push_back(tracer);
|
121
|
+
}
|
115
122
|
for (auto& state : plugins_state_) {
|
116
123
|
auto* call_tracer = state.plugin->GetServerCallTracer(state.scope_config);
|
117
124
|
if (call_tracer != nullptr) {
|
118
|
-
|
125
|
+
tracers.push_back(call_tracer);
|
119
126
|
}
|
120
127
|
}
|
128
|
+
SetServerCallTracer(arena, tracers);
|
121
129
|
}
|
122
130
|
|
123
131
|
int GlobalStatsPluginRegistry::StatsPluginGroup::ChannelArgsCompare(
|
@@ -474,7 +474,9 @@ class GlobalStatsPluginRegistry {
|
|
474
474
|
Arena* arena);
|
475
475
|
// Adds all available server call tracers associated with the stats plugins
|
476
476
|
// within the group to \a call_context.
|
477
|
-
void AddServerCallTracers(
|
477
|
+
void AddServerCallTracers(
|
478
|
+
Arena* arena,
|
479
|
+
absl::Span<ServerCallTracerInterface* const> additional_tracers);
|
478
480
|
|
479
481
|
static absl::string_view ChannelArgName() {
|
480
482
|
return "grpc.internal.stats_plugin_group";
|
@@ -391,9 +391,6 @@ const absl::string_view
|
|
391
391
|
"client_subchannels_created",
|
392
392
|
"server_channels_created",
|
393
393
|
"insecure_connections_created",
|
394
|
-
"rq_connections_dropped",
|
395
|
-
"rq_calls_dropped",
|
396
|
-
"rq_calls_rejected",
|
397
394
|
"syscall_write",
|
398
395
|
"syscall_read",
|
399
396
|
"tcp_read_alloc_8k",
|
@@ -424,9 +421,6 @@ const absl::string_view GlobalStats::counter_doc[static_cast<int>(
|
|
424
421
|
"Number of client subchannels created",
|
425
422
|
"Number of server channels created",
|
426
423
|
"Number of insecure connections created",
|
427
|
-
"Number of connections dropped due to resource quota exceeded",
|
428
|
-
"Number of calls dropped due to resource quota exceeded",
|
429
|
-
"Number of calls rejected (never started) due to resource quota exceeded",
|
430
424
|
"Number of write syscalls (or equivalent - eg sendmsg) made by this "
|
431
425
|
"process",
|
432
426
|
"Number of read syscalls (or equivalent - eg recvmsg) made by this process",
|
@@ -519,9 +513,6 @@ GlobalStats::GlobalStats()
|
|
519
513
|
client_subchannels_created{0},
|
520
514
|
server_channels_created{0},
|
521
515
|
insecure_connections_created{0},
|
522
|
-
rq_connections_dropped{0},
|
523
|
-
rq_calls_dropped{0},
|
524
|
-
rq_calls_rejected{0},
|
525
516
|
syscall_write{0},
|
526
517
|
syscall_read{0},
|
527
518
|
tcp_read_alloc_8k{0},
|
@@ -643,12 +634,6 @@ std::unique_ptr<GlobalStats> GlobalStatsCollector::Collect() const {
|
|
643
634
|
data.server_channels_created.load(std::memory_order_relaxed);
|
644
635
|
result->insecure_connections_created +=
|
645
636
|
data.insecure_connections_created.load(std::memory_order_relaxed);
|
646
|
-
result->rq_connections_dropped +=
|
647
|
-
data.rq_connections_dropped.load(std::memory_order_relaxed);
|
648
|
-
result->rq_calls_dropped +=
|
649
|
-
data.rq_calls_dropped.load(std::memory_order_relaxed);
|
650
|
-
result->rq_calls_rejected +=
|
651
|
-
data.rq_calls_rejected.load(std::memory_order_relaxed);
|
652
637
|
result->syscall_write += data.syscall_write.load(std::memory_order_relaxed);
|
653
638
|
result->syscall_read += data.syscall_read.load(std::memory_order_relaxed);
|
654
639
|
result->tcp_read_alloc_8k +=
|
@@ -746,10 +731,6 @@ std::unique_ptr<GlobalStats> GlobalStats::Diff(const GlobalStats& other) const {
|
|
746
731
|
server_channels_created - other.server_channels_created;
|
747
732
|
result->insecure_connections_created =
|
748
733
|
insecure_connections_created - other.insecure_connections_created;
|
749
|
-
result->rq_connections_dropped =
|
750
|
-
rq_connections_dropped - other.rq_connections_dropped;
|
751
|
-
result->rq_calls_dropped = rq_calls_dropped - other.rq_calls_dropped;
|
752
|
-
result->rq_calls_rejected = rq_calls_rejected - other.rq_calls_rejected;
|
753
734
|
result->syscall_write = syscall_write - other.syscall_write;
|
754
735
|
result->syscall_read = syscall_read - other.syscall_read;
|
755
736
|
result->tcp_read_alloc_8k = tcp_read_alloc_8k - other.tcp_read_alloc_8k;
|
@@ -277,9 +277,6 @@ struct GlobalStats {
|
|
277
277
|
kClientSubchannelsCreated,
|
278
278
|
kServerChannelsCreated,
|
279
279
|
kInsecureConnectionsCreated,
|
280
|
-
kRqConnectionsDropped,
|
281
|
-
kRqCallsDropped,
|
282
|
-
kRqCallsRejected,
|
283
280
|
kSyscallWrite,
|
284
281
|
kSyscallRead,
|
285
282
|
kTcpReadAlloc8k,
|
@@ -347,9 +344,6 @@ struct GlobalStats {
|
|
347
344
|
uint64_t client_subchannels_created;
|
348
345
|
uint64_t server_channels_created;
|
349
346
|
uint64_t insecure_connections_created;
|
350
|
-
uint64_t rq_connections_dropped;
|
351
|
-
uint64_t rq_calls_dropped;
|
352
|
-
uint64_t rq_calls_rejected;
|
353
347
|
uint64_t syscall_write;
|
354
348
|
uint64_t syscall_read;
|
355
349
|
uint64_t tcp_read_alloc_8k;
|
@@ -430,16 +424,6 @@ class GlobalStatsCollector {
|
|
430
424
|
data_.this_cpu().insecure_connections_created.fetch_add(
|
431
425
|
1, std::memory_order_relaxed);
|
432
426
|
}
|
433
|
-
void IncrementRqConnectionsDropped() {
|
434
|
-
data_.this_cpu().rq_connections_dropped.fetch_add(
|
435
|
-
1, std::memory_order_relaxed);
|
436
|
-
}
|
437
|
-
void IncrementRqCallsDropped() {
|
438
|
-
data_.this_cpu().rq_calls_dropped.fetch_add(1, std::memory_order_relaxed);
|
439
|
-
}
|
440
|
-
void IncrementRqCallsRejected() {
|
441
|
-
data_.this_cpu().rq_calls_rejected.fetch_add(1, std::memory_order_relaxed);
|
442
|
-
}
|
443
427
|
void IncrementSyscallWrite() {
|
444
428
|
data_.this_cpu().syscall_write.fetch_add(1, std::memory_order_relaxed);
|
445
429
|
}
|
@@ -598,9 +582,6 @@ class GlobalStatsCollector {
|
|
598
582
|
std::atomic<uint64_t> client_subchannels_created{0};
|
599
583
|
std::atomic<uint64_t> server_channels_created{0};
|
600
584
|
std::atomic<uint64_t> insecure_connections_created{0};
|
601
|
-
std::atomic<uint64_t> rq_connections_dropped{0};
|
602
|
-
std::atomic<uint64_t> rq_calls_dropped{0};
|
603
|
-
std::atomic<uint64_t> rq_calls_rejected{0};
|
604
585
|
std::atomic<uint64_t> syscall_write{0};
|
605
586
|
std::atomic<uint64_t> syscall_read{0};
|
606
587
|
std::atomic<uint64_t> tcp_read_alloc_8k{0};
|
@@ -25,13 +25,13 @@
|
|
25
25
|
|
26
26
|
#include <algorithm>
|
27
27
|
|
28
|
-
#include "absl/log/check.h"
|
29
28
|
#include "absl/log/log.h"
|
30
29
|
#include "src/core/config/core_configuration.h"
|
31
30
|
#include "src/core/lib/channel/channel_args.h"
|
32
31
|
#include "src/core/lib/debug/trace.h"
|
33
32
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
34
33
|
#include "src/core/lib/resource_quota/arena.h"
|
34
|
+
#include "src/core/util/grpc_check.h"
|
35
35
|
#include "src/core/util/ref_counted_ptr.h"
|
36
36
|
|
37
37
|
void grpc_auth_context_release(grpc_auth_context* context) {
|
@@ -99,7 +99,7 @@ const grpc_auth_property* grpc_auth_property_iterator_next(
|
|
99
99
|
while (it->index < it->ctx->properties().count) {
|
100
100
|
const grpc_auth_property* prop =
|
101
101
|
&it->ctx->properties().array[it->index++];
|
102
|
-
|
102
|
+
GRPC_CHECK_NE(prop->name, nullptr);
|
103
103
|
if (strcmp(it->name, prop->name) == 0) {
|
104
104
|
return prop;
|
105
105
|
}
|
@@ -23,19 +23,18 @@
|
|
23
23
|
#include <grpc/support/port_platform.h>
|
24
24
|
|
25
25
|
#include <list>
|
26
|
+
#include <memory>
|
27
|
+
#include <string>
|
26
28
|
|
27
|
-
#include "absl/log/check.h"
|
28
29
|
#include "absl/log/log.h"
|
29
30
|
#include "absl/strings/numbers.h"
|
30
31
|
#include "absl/strings/str_split.h"
|
31
|
-
#include "src/core/lib/slice/slice_internal.h"
|
32
32
|
#include "src/core/lib/surface/call.h"
|
33
33
|
#include "src/core/lib/surface/channel.h"
|
34
|
-
#include "src/core/tsi/alts/handshaker/alts_shared_resource.h"
|
35
34
|
#include "src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h"
|
36
35
|
#include "src/core/tsi/alts/handshaker/alts_tsi_utils.h"
|
37
|
-
#include "src/core/util/crash.h"
|
38
36
|
#include "src/core/util/env.h"
|
37
|
+
#include "src/core/util/grpc_check.h"
|
39
38
|
#include "src/core/util/sync.h"
|
40
39
|
#include "upb/mem/arena.hpp"
|
41
40
|
|
@@ -119,13 +118,13 @@ typedef struct alts_grpc_handshaker_client {
|
|
119
118
|
|
120
119
|
static void handshaker_client_send_buffer_destroy(
|
121
120
|
alts_grpc_handshaker_client* client) {
|
122
|
-
|
121
|
+
GRPC_CHECK_NE(client, nullptr);
|
123
122
|
grpc_byte_buffer_destroy(client->send_buffer);
|
124
123
|
client->send_buffer = nullptr;
|
125
124
|
}
|
126
125
|
|
127
126
|
static bool is_handshake_finished_properly(grpc_gcp_HandshakerResp* resp) {
|
128
|
-
|
127
|
+
GRPC_CHECK_NE(resp, nullptr);
|
129
128
|
return grpc_gcp_HandshakerResp_result(resp) != nullptr;
|
130
129
|
}
|
131
130
|
|
@@ -158,7 +157,7 @@ static void maybe_complete_tsi_next(
|
|
158
157
|
grpc_core::MutexLock lock(&client->mu);
|
159
158
|
client->receive_status_finished |= receive_status_finished;
|
160
159
|
if (pending_recv_message_result != nullptr) {
|
161
|
-
|
160
|
+
GRPC_CHECK_EQ(client->pending_recv_message_result, nullptr);
|
162
161
|
client->pending_recv_message_result = pending_recv_message_result;
|
163
162
|
}
|
164
163
|
if (client->pending_recv_message_result == nullptr) {
|
@@ -199,7 +198,7 @@ static void handle_response_done(alts_grpc_handshaker_client* client,
|
|
199
198
|
|
200
199
|
void alts_handshaker_client_handle_response(alts_handshaker_client* c,
|
201
200
|
bool is_ok) {
|
202
|
-
|
201
|
+
GRPC_CHECK_NE(c, nullptr);
|
203
202
|
alts_grpc_handshaker_client* client =
|
204
203
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
205
204
|
grpc_byte_buffer* recv_buffer = client->recv_buffer;
|
@@ -313,7 +312,7 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
|
|
313
312
|
|
314
313
|
static tsi_result continue_make_grpc_call(alts_grpc_handshaker_client* client,
|
315
314
|
bool is_start) {
|
316
|
-
|
315
|
+
GRPC_CHECK_NE(client, nullptr);
|
317
316
|
grpc_op ops[kHandshakerClientOpNum];
|
318
317
|
memset(ops, 0, sizeof(ops));
|
319
318
|
grpc_op* op = ops;
|
@@ -326,34 +325,34 @@ static tsi_result continue_make_grpc_call(alts_grpc_handshaker_client* client,
|
|
326
325
|
op->flags = 0;
|
327
326
|
op->reserved = nullptr;
|
328
327
|
op++;
|
329
|
-
|
328
|
+
GRPC_CHECK(op - ops <= kHandshakerClientOpNum);
|
330
329
|
gpr_ref(&client->refs);
|
331
330
|
grpc_call_error call_error =
|
332
331
|
client->grpc_caller(client->call, ops, static_cast<size_t>(op - ops),
|
333
332
|
&client->on_status_received);
|
334
333
|
// TODO(apolcyn): return the error here instead, as done for other ops?
|
335
|
-
|
334
|
+
GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
|
336
335
|
memset(ops, 0, sizeof(ops));
|
337
336
|
op = ops;
|
338
337
|
op->op = GRPC_OP_SEND_INITIAL_METADATA;
|
339
338
|
op->data.send_initial_metadata.count = 0;
|
340
339
|
op++;
|
341
|
-
|
340
|
+
GRPC_CHECK(op - ops <= kHandshakerClientOpNum);
|
342
341
|
op->op = GRPC_OP_RECV_INITIAL_METADATA;
|
343
342
|
op->data.recv_initial_metadata.recv_initial_metadata =
|
344
343
|
&client->recv_initial_metadata;
|
345
344
|
op++;
|
346
|
-
|
345
|
+
GRPC_CHECK(op - ops <= kHandshakerClientOpNum);
|
347
346
|
}
|
348
347
|
op->op = GRPC_OP_SEND_MESSAGE;
|
349
348
|
op->data.send_message.send_message = client->send_buffer;
|
350
349
|
op++;
|
351
|
-
|
350
|
+
GRPC_CHECK(op - ops <= kHandshakerClientOpNum);
|
352
351
|
op->op = GRPC_OP_RECV_MESSAGE;
|
353
352
|
op->data.recv_message.recv_message = &client->recv_buffer;
|
354
353
|
op++;
|
355
|
-
|
356
|
-
|
354
|
+
GRPC_CHECK(op - ops <= kHandshakerClientOpNum);
|
355
|
+
GRPC_CHECK_NE(client->grpc_caller, nullptr);
|
357
356
|
if (client->grpc_caller(client->call, ops, static_cast<size_t>(op - ops),
|
358
357
|
&client->on_handshaker_service_resp_recv) !=
|
359
358
|
GRPC_CALL_OK) {
|
@@ -451,7 +450,7 @@ void HandshakeDone(bool is_client) {
|
|
451
450
|
/// make a grpc call.
|
452
451
|
///
|
453
452
|
static tsi_result make_grpc_call(alts_handshaker_client* c, bool is_start) {
|
454
|
-
|
453
|
+
GRPC_CHECK_NE(c, nullptr);
|
455
454
|
alts_grpc_handshaker_client* client =
|
456
455
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
457
456
|
if (is_start) {
|
@@ -500,7 +499,7 @@ static grpc_byte_buffer* get_serialized_handshaker_req(
|
|
500
499
|
// Create and populate a client_start handshaker request, then serialize it.
|
501
500
|
static grpc_byte_buffer* get_serialized_start_client(
|
502
501
|
alts_handshaker_client* c) {
|
503
|
-
|
502
|
+
GRPC_CHECK_NE(c, nullptr);
|
504
503
|
alts_grpc_handshaker_client* client =
|
505
504
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
506
505
|
upb::Arena arena;
|
@@ -512,9 +511,17 @@ static grpc_byte_buffer* get_serialized_start_client(
|
|
512
511
|
grpc_gcp_StartClientHandshakeReq_add_application_protocols(
|
513
512
|
start_client, upb_StringView_FromString(ALTS_APPLICATION_PROTOCOL),
|
514
513
|
arena.ptr());
|
515
|
-
|
516
|
-
|
517
|
-
|
514
|
+
if (client->options->record_protocols.empty()) {
|
515
|
+
grpc_gcp_StartClientHandshakeReq_add_record_protocols(
|
516
|
+
start_client, upb_StringView_FromString(ALTS_RECORD_PROTOCOL),
|
517
|
+
arena.ptr());
|
518
|
+
} else {
|
519
|
+
for (const auto& record_protocol : client->options->record_protocols) {
|
520
|
+
grpc_gcp_StartClientHandshakeReq_add_record_protocols(
|
521
|
+
start_client, upb_StringView_FromString(record_protocol.c_str()),
|
522
|
+
arena.ptr());
|
523
|
+
}
|
524
|
+
}
|
518
525
|
grpc_gcp_RpcProtocolVersions* client_version =
|
519
526
|
grpc_gcp_StartClientHandshakeReq_mutable_rpc_versions(start_client,
|
520
527
|
arena.ptr());
|
@@ -536,6 +543,24 @@ static grpc_byte_buffer* get_serialized_start_client(
|
|
536
543
|
upb_StringView_FromString(ptr->data));
|
537
544
|
ptr = ptr->next;
|
538
545
|
}
|
546
|
+
// This ensures the token string is available when the proto gets serialized.
|
547
|
+
absl::StatusOr<std::string> access_token = absl::NotFoundError("");
|
548
|
+
// Set access token if the token fetcher is available.
|
549
|
+
grpc::alts::TokenFetcher* token_fetcher =
|
550
|
+
(reinterpret_cast<grpc_alts_credentials_client_options*>(client->options))
|
551
|
+
->token_fetcher.get();
|
552
|
+
if (token_fetcher != nullptr) {
|
553
|
+
access_token = token_fetcher->GetToken();
|
554
|
+
if (!access_token.ok()) {
|
555
|
+
LOG_EVERY_N_SEC(ERROR, 60)
|
556
|
+
<< "Failed to get token from the token fetcher "
|
557
|
+
"in client start handshake: "
|
558
|
+
<< access_token.status();
|
559
|
+
return nullptr;
|
560
|
+
}
|
561
|
+
grpc_gcp_StartClientHandshakeReq_set_access_token(
|
562
|
+
start_client, upb_StringView_FromString(access_token->c_str()));
|
563
|
+
}
|
539
564
|
grpc_gcp_StartClientHandshakeReq_set_max_frame_size(
|
540
565
|
start_client, static_cast<uint32_t>(client->max_frame_size));
|
541
566
|
if (!client->preferred_transport_protocols.empty()) {
|
@@ -576,8 +601,8 @@ static tsi_result handshaker_client_start_client(alts_handshaker_client* c) {
|
|
576
601
|
// Create and populate a start_server handshaker request, then serialize it.
|
577
602
|
static grpc_byte_buffer* get_serialized_start_server(
|
578
603
|
alts_handshaker_client* c, grpc_slice* bytes_received) {
|
579
|
-
|
580
|
-
|
604
|
+
GRPC_CHECK_NE(c, nullptr);
|
605
|
+
GRPC_CHECK_NE(bytes_received, nullptr);
|
581
606
|
alts_grpc_handshaker_client* client =
|
582
607
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
583
608
|
|
@@ -591,8 +616,16 @@ static grpc_byte_buffer* get_serialized_start_server(
|
|
591
616
|
arena.ptr());
|
592
617
|
grpc_gcp_ServerHandshakeParameters* value =
|
593
618
|
grpc_gcp_ServerHandshakeParameters_new(arena.ptr());
|
594
|
-
|
595
|
-
|
619
|
+
if (client->options->record_protocols.empty()) {
|
620
|
+
grpc_gcp_ServerHandshakeParameters_add_record_protocols(
|
621
|
+
value, upb_StringView_FromString(ALTS_RECORD_PROTOCOL), arena.ptr());
|
622
|
+
} else {
|
623
|
+
for (const auto& record_protocol : client->options->record_protocols) {
|
624
|
+
grpc_gcp_ServerHandshakeParameters_add_record_protocols(
|
625
|
+
value, upb_StringView_FromString(record_protocol.c_str()),
|
626
|
+
arena.ptr());
|
627
|
+
}
|
628
|
+
}
|
596
629
|
grpc_gcp_StartServerHandshakeReq_handshake_parameters_set(
|
597
630
|
start_server, grpc_gcp_ALTS, value, arena.ptr());
|
598
631
|
grpc_gcp_StartServerHandshakeReq_set_in_bytes(
|
@@ -645,7 +678,7 @@ static tsi_result handshaker_client_start_server(alts_handshaker_client* c,
|
|
645
678
|
|
646
679
|
// Create and populate a next handshaker request, then serialize it.
|
647
680
|
static grpc_byte_buffer* get_serialized_next(grpc_slice* bytes_received) {
|
648
|
-
|
681
|
+
GRPC_CHECK_NE(bytes_received, nullptr);
|
649
682
|
upb::Arena arena;
|
650
683
|
grpc_gcp_HandshakerReq* req = grpc_gcp_HandshakerReq_new(arena.ptr());
|
651
684
|
grpc_gcp_NextHandshakeMessageReq* next =
|
@@ -683,7 +716,7 @@ static tsi_result handshaker_client_next(alts_handshaker_client* c,
|
|
683
716
|
}
|
684
717
|
|
685
718
|
static void handshaker_client_shutdown(alts_handshaker_client* c) {
|
686
|
-
|
719
|
+
GRPC_CHECK_NE(c, nullptr);
|
687
720
|
alts_grpc_handshaker_client* client =
|
688
721
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
689
722
|
if (client->call != nullptr) {
|
@@ -789,8 +822,8 @@ namespace internal {
|
|
789
822
|
|
790
823
|
void alts_handshaker_client_set_grpc_caller_for_testing(
|
791
824
|
alts_handshaker_client* c, alts_grpc_caller caller) {
|
792
|
-
|
793
|
-
|
825
|
+
GRPC_CHECK(c != nullptr);
|
826
|
+
GRPC_CHECK_NE(caller, nullptr);
|
794
827
|
alts_grpc_handshaker_client* client =
|
795
828
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
796
829
|
client->grpc_caller = caller;
|
@@ -798,7 +831,7 @@ void alts_handshaker_client_set_grpc_caller_for_testing(
|
|
798
831
|
|
799
832
|
grpc_byte_buffer* alts_handshaker_client_get_send_buffer_for_testing(
|
800
833
|
alts_handshaker_client* c) {
|
801
|
-
|
834
|
+
GRPC_CHECK_NE(c, nullptr);
|
802
835
|
alts_grpc_handshaker_client* client =
|
803
836
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
804
837
|
return client->send_buffer;
|
@@ -806,7 +839,7 @@ grpc_byte_buffer* alts_handshaker_client_get_send_buffer_for_testing(
|
|
806
839
|
|
807
840
|
grpc_byte_buffer** alts_handshaker_client_get_recv_buffer_addr_for_testing(
|
808
841
|
alts_handshaker_client* c) {
|
809
|
-
|
842
|
+
GRPC_CHECK_NE(c, nullptr);
|
810
843
|
alts_grpc_handshaker_client* client =
|
811
844
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
812
845
|
return &client->recv_buffer;
|
@@ -814,7 +847,7 @@ grpc_byte_buffer** alts_handshaker_client_get_recv_buffer_addr_for_testing(
|
|
814
847
|
|
815
848
|
grpc_metadata_array* alts_handshaker_client_get_initial_metadata_for_testing(
|
816
849
|
alts_handshaker_client* c) {
|
817
|
-
|
850
|
+
GRPC_CHECK_NE(c, nullptr);
|
818
851
|
alts_grpc_handshaker_client* client =
|
819
852
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
820
853
|
return &client->recv_initial_metadata;
|
@@ -822,7 +855,7 @@ grpc_metadata_array* alts_handshaker_client_get_initial_metadata_for_testing(
|
|
822
855
|
|
823
856
|
void alts_handshaker_client_set_recv_bytes_for_testing(
|
824
857
|
alts_handshaker_client* c, grpc_slice* recv_bytes) {
|
825
|
-
|
858
|
+
GRPC_CHECK_NE(c, nullptr);
|
826
859
|
alts_grpc_handshaker_client* client =
|
827
860
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
828
861
|
client->recv_bytes = CSliceRef(*recv_bytes);
|
@@ -832,7 +865,7 @@ void alts_handshaker_client_set_fields_for_testing(
|
|
832
865
|
alts_handshaker_client* c, alts_tsi_handshaker* handshaker,
|
833
866
|
tsi_handshaker_on_next_done_cb cb, void* user_data,
|
834
867
|
grpc_byte_buffer* recv_buffer, bool inject_read_failure) {
|
835
|
-
|
868
|
+
GRPC_CHECK_NE(c, nullptr);
|
836
869
|
alts_grpc_handshaker_client* client =
|
837
870
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
838
871
|
client->handshaker = handshaker;
|
@@ -845,22 +878,22 @@ void alts_handshaker_client_set_fields_for_testing(
|
|
845
878
|
void alts_handshaker_client_check_fields_for_testing(
|
846
879
|
alts_handshaker_client* c, tsi_handshaker_on_next_done_cb cb,
|
847
880
|
void* user_data, bool has_sent_start_message, grpc_slice* recv_bytes) {
|
848
|
-
|
881
|
+
GRPC_CHECK_NE(c, nullptr);
|
849
882
|
alts_grpc_handshaker_client* client =
|
850
883
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
851
|
-
|
852
|
-
|
884
|
+
GRPC_CHECK(client->cb == cb);
|
885
|
+
GRPC_CHECK(client->user_data == user_data);
|
853
886
|
if (recv_bytes != nullptr) {
|
854
|
-
|
887
|
+
GRPC_CHECK_EQ(grpc_slice_cmp(client->recv_bytes, *recv_bytes), 0);
|
855
888
|
}
|
856
|
-
|
857
|
-
|
889
|
+
GRPC_CHECK(alts_tsi_handshaker_get_has_sent_start_message_for_testing(
|
890
|
+
client->handshaker) == has_sent_start_message);
|
858
891
|
}
|
859
892
|
|
860
893
|
void alts_handshaker_client_set_vtable_for_testing(
|
861
894
|
alts_handshaker_client* c, alts_handshaker_client_vtable* vtable) {
|
862
|
-
|
863
|
-
|
895
|
+
GRPC_CHECK_NE(c, nullptr);
|
896
|
+
GRPC_CHECK_NE(vtable, nullptr);
|
864
897
|
alts_grpc_handshaker_client* client =
|
865
898
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
866
899
|
client->base.vtable = vtable;
|
@@ -868,7 +901,7 @@ void alts_handshaker_client_set_vtable_for_testing(
|
|
868
901
|
|
869
902
|
alts_tsi_handshaker* alts_handshaker_client_get_handshaker_for_testing(
|
870
903
|
alts_handshaker_client* c) {
|
871
|
-
|
904
|
+
GRPC_CHECK_NE(c, nullptr);
|
872
905
|
alts_grpc_handshaker_client* client =
|
873
906
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
874
907
|
return client->handshaker;
|
@@ -876,7 +909,7 @@ alts_tsi_handshaker* alts_handshaker_client_get_handshaker_for_testing(
|
|
876
909
|
|
877
910
|
void alts_handshaker_client_set_cb_for_testing(
|
878
911
|
alts_handshaker_client* c, tsi_handshaker_on_next_done_cb cb) {
|
879
|
-
|
912
|
+
GRPC_CHECK_NE(c, nullptr);
|
880
913
|
alts_grpc_handshaker_client* client =
|
881
914
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
882
915
|
client->cb = cb;
|
@@ -884,7 +917,7 @@ void alts_handshaker_client_set_cb_for_testing(
|
|
884
917
|
|
885
918
|
grpc_closure* alts_handshaker_client_get_closure_for_testing(
|
886
919
|
alts_handshaker_client* c) {
|
887
|
-
|
920
|
+
GRPC_CHECK_NE(c, nullptr);
|
888
921
|
alts_grpc_handshaker_client* client =
|
889
922
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
890
923
|
return &client->on_handshaker_service_resp_recv;
|
@@ -32,6 +32,7 @@
|
|
32
32
|
#define ALTS_SERVICE_METHOD "/grpc.gcp.HandshakerService/DoHandshake"
|
33
33
|
#define ALTS_APPLICATION_PROTOCOL "grpc"
|
34
34
|
#define ALTS_RECORD_PROTOCOL "ALTSRP_GCM_AES128_REKEY"
|
35
|
+
#define ALTS_INTEGRITY_ONLY_RECORD_PROTOCOL "ALTSRP_GCM_GMAC_128"
|
35
36
|
#define ALTS_HANDSHAKER_SERVICE_URL_FOR_TESTING "lame"
|
36
37
|
|
37
38
|
const size_t kAltsAes128GcmRekeyKeyLength = 44;
|
@@ -20,10 +20,10 @@
|
|
20
20
|
|
21
21
|
#include <grpc/support/port_platform.h>
|
22
22
|
|
23
|
-
#include "absl/log/check.h"
|
24
23
|
#include "src/core/lib/channel/channel_args.h"
|
25
24
|
#include "src/core/tsi/alts/handshaker/alts_handshaker_client.h"
|
26
25
|
#include "src/core/util/crash.h"
|
26
|
+
#include "src/core/util/grpc_check.h"
|
27
27
|
|
28
28
|
static alts_shared_resource_dedicated g_alts_resource_dedicated;
|
29
29
|
|
@@ -36,11 +36,11 @@ static void thread_worker(void* /*arg*/) {
|
|
36
36
|
grpc_event event =
|
37
37
|
grpc_completion_queue_next(g_alts_resource_dedicated.cq,
|
38
38
|
gpr_inf_future(GPR_CLOCK_REALTIME), nullptr);
|
39
|
-
|
39
|
+
GRPC_CHECK(event.type != GRPC_QUEUE_TIMEOUT);
|
40
40
|
if (event.type == GRPC_QUEUE_SHUTDOWN) {
|
41
41
|
break;
|
42
42
|
}
|
43
|
-
|
43
|
+
GRPC_CHECK(event.type == GRPC_OP_COMPLETE);
|
44
44
|
alts_handshaker_client* client =
|
45
45
|
static_cast<alts_handshaker_client*>(event.tag);
|
46
46
|
alts_handshaker_client_handle_response(client, event.success);
|