grpc 1.55.3 → 1.56.0.pre3
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 +100 -70
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/json.h +218 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +82 -98
- data/src/core/ext/filters/client_channel/client_channel.h +4 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
- data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
- data/src/core/ext/filters/client_channel/config_selector.h +9 -24
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
- data/src/core/ext/filters/client_channel/subchannel.h +3 -43
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +543 -567
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +9 -150
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +32 -46
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +5 -18
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
- data/src/core/ext/transport/chttp2/transport/parsing.cc +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -9
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
- data/src/core/ext/xds/xds_api.cc +9 -6
- data/src/core/ext/xds/xds_api.h +3 -2
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
- data/src/core/ext/xds/xds_client.cc +5 -4
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_cluster.cc +20 -19
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
- data/src/core/ext/xds/xds_common_types.cc +3 -1
- data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
- data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
- data/src/core/ext/xds/xds_http_filters.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
- data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_route_config.cc +40 -3
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
- data/src/core/lib/avl/avl.h +5 -0
- data/src/core/lib/backoff/random_early_detection.h +0 -5
- data/src/core/lib/channel/channel_args.cc +80 -22
- data/src/core/lib/channel/channel_args.h +34 -1
- data/src/core/lib/channel/channel_trace.cc +16 -12
- data/src/core/lib/channel/channelz.cc +159 -132
- data/src/core/lib/channel/channelz.h +42 -35
- data/src/core/lib/channel/channelz_registry.cc +23 -20
- data/src/core/lib/channel/connected_channel.cc +17 -6
- data/src/core/lib/channel/promise_based_filter.cc +0 -4
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -5
- data/src/core/lib/config/config_vars.cc +20 -18
- data/src/core/lib/config/config_vars.h +4 -4
- data/src/core/lib/config/load_config.cc +13 -0
- data/src/core/lib/config/load_config.h +6 -0
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/stats_data.h +1 -1
- data/src/core/lib/debug/trace.cc +24 -55
- data/src/core/lib/debug/trace.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/default_event_engine.cc +13 -1
- data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
- data/src/core/lib/event_engine/poller.h +2 -2
- data/src/core/lib/event_engine/posix.h +4 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -33
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -11
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/shim.cc +7 -1
- data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
- data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/windows/iocp.cc +4 -3
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/win_socket.h +4 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
- data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
- data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +38 -7
- data/src/core/lib/experiments/config.h +16 -0
- data/src/core/lib/experiments/experiments.cc +67 -20
- data/src/core/lib/experiments/experiments.h +27 -21
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gprpp/crash.cc +10 -0
- data/src/core/lib/gprpp/crash.h +3 -0
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +29 -6
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
- data/src/core/lib/iomgr/ev_apple.cc +12 -12
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
- data/src/core/lib/iomgr/iocp_windows.cc +24 -3
- data/src/core/lib/iomgr/iocp_windows.h +11 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
- data/src/core/lib/iomgr/socket_windows.cc +61 -7
- data/src/core/lib/iomgr/socket_windows.h +9 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +156 -140
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
- data/src/core/lib/json/json.h +2 -166
- data/src/core/lib/json/json_object_loader.cc +8 -9
- data/src/core/lib/json/json_object_loader.h +25 -18
- data/src/core/lib/json/json_reader.cc +13 -6
- data/src/core/lib/json/json_util.cc +6 -11
- data/src/core/lib/json/json_writer.cc +7 -8
- data/src/core/lib/load_balancing/lb_policy.h +13 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/promise/activity.cc +5 -0
- data/src/core/lib/promise/activity.h +10 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/party.cc +31 -13
- data/src/core/lib/promise/party.h +11 -2
- data/src/core/lib/promise/pipe.h +9 -2
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/sleep.cc +2 -1
- data/src/core/lib/resolver/server_address.cc +0 -8
- data/src/core/lib/resolver/server_address.h +0 -6
- data/src/core/lib/resource_quota/memory_quota.cc +7 -7
- data/src/core/lib/resource_quota/memory_quota.h +1 -2
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
- data/src/core/lib/security/authorization/rbac_policy.h +19 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
- data/src/core/lib/security/util/json_util.cc +1 -0
- data/src/core/lib/service_config/service_config_call_data.h +49 -20
- data/src/core/lib/service_config/service_config_impl.cc +2 -1
- data/src/core/lib/surface/call.cc +38 -23
- data/src/core/lib/surface/completion_queue.cc +6 -2
- data/src/core/lib/surface/validate_metadata.cc +22 -37
- data/src/core/lib/surface/validate_metadata.h +3 -13
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +15 -12
- data/src/core/lib/transport/batch_builder.h +39 -35
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/ruby/ext/grpc/extconf.rb +8 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- metadata +50 -16
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +0 -176
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +0 -325
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -23,12 +23,15 @@
|
|
23
23
|
|
24
24
|
#include <string>
|
25
25
|
|
26
|
+
#include "absl/strings/string_view.h"
|
27
|
+
|
26
28
|
#include <grpc/grpc_security.h>
|
27
29
|
|
28
30
|
#include "src/core/lib/gprpp/ref_counted.h"
|
29
31
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
30
|
-
#include "src/core/lib/
|
32
|
+
#include "src/core/lib/gprpp/validation_errors.h"
|
31
33
|
#include "src/core/lib/json/json.h"
|
34
|
+
#include "src/core/lib/json/json_args.h"
|
32
35
|
|
33
36
|
namespace grpc_core {
|
34
37
|
|
@@ -43,7 +46,7 @@ class CertificateProviderFactory {
|
|
43
46
|
|
44
47
|
// Name of the type of the CertificateProvider. Unique to each type of
|
45
48
|
// config.
|
46
|
-
virtual
|
49
|
+
virtual absl::string_view name() const = 0;
|
47
50
|
|
48
51
|
virtual std::string ToString() const = 0;
|
49
52
|
};
|
@@ -51,10 +54,11 @@ class CertificateProviderFactory {
|
|
51
54
|
virtual ~CertificateProviderFactory() = default;
|
52
55
|
|
53
56
|
// Name of the plugin.
|
54
|
-
virtual
|
57
|
+
virtual absl::string_view name() const = 0;
|
55
58
|
|
56
59
|
virtual RefCountedPtr<Config> CreateCertificateProviderConfig(
|
57
|
-
const Json& config_json,
|
60
|
+
const Json& config_json, const JsonArgs& args,
|
61
|
+
ValidationErrors* errors) = 0;
|
58
62
|
|
59
63
|
// Create a CertificateProvider instance from config.
|
60
64
|
virtual RefCountedPtr<grpc_tls_certificate_provider>
|
@@ -20,11 +20,8 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/security/certificate_provider/certificate_provider_registry.h"
|
22
22
|
|
23
|
-
#include <string
|
24
|
-
|
25
|
-
#include <algorithm>
|
23
|
+
#include <string>
|
26
24
|
#include <utility>
|
27
|
-
#include <vector>
|
28
25
|
|
29
26
|
#include <grpc/support/log.h>
|
30
27
|
|
@@ -32,29 +29,22 @@ namespace grpc_core {
|
|
32
29
|
|
33
30
|
void CertificateProviderRegistry::Builder::RegisterCertificateProviderFactory(
|
34
31
|
std::unique_ptr<CertificateProviderFactory> factory) {
|
32
|
+
absl::string_view name = factory->name();
|
35
33
|
gpr_log(GPR_DEBUG, "registering certificate provider factory for \"%s\"",
|
36
|
-
|
37
|
-
|
38
|
-
GPR_ASSERT(strcmp(factories_[i]->name(), factory->name()) != 0);
|
39
|
-
}
|
40
|
-
factories_.push_back(std::move(factory));
|
34
|
+
std::string(name).c_str());
|
35
|
+
GPR_ASSERT(factories_.emplace(name, std::move(factory)).second);
|
41
36
|
}
|
42
37
|
|
43
38
|
CertificateProviderRegistry CertificateProviderRegistry::Builder::Build() {
|
44
|
-
CertificateProviderRegistry
|
45
|
-
r.factories_ = std::move(factories_);
|
46
|
-
return r;
|
39
|
+
return CertificateProviderRegistry(std::move(factories_));
|
47
40
|
}
|
48
41
|
|
49
42
|
CertificateProviderFactory*
|
50
43
|
CertificateProviderRegistry::LookupCertificateProviderFactory(
|
51
44
|
absl::string_view name) const {
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
}
|
56
|
-
}
|
57
|
-
return nullptr;
|
45
|
+
auto it = factories_.find(name);
|
46
|
+
if (it == factories_.end()) return nullptr;
|
47
|
+
return it->second.get();
|
58
48
|
}
|
59
49
|
|
60
50
|
} // namespace grpc_core
|
@@ -21,8 +21,9 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <map>
|
24
25
|
#include <memory>
|
25
|
-
#include <
|
26
|
+
#include <utility>
|
26
27
|
|
27
28
|
#include "absl/strings/string_view.h"
|
28
29
|
|
@@ -32,20 +33,24 @@ namespace grpc_core {
|
|
32
33
|
|
33
34
|
// Global registry for all the certificate provider plugins.
|
34
35
|
class CertificateProviderRegistry {
|
36
|
+
private:
|
37
|
+
using FactoryMap =
|
38
|
+
std::map<absl::string_view, std::unique_ptr<CertificateProviderFactory>>;
|
39
|
+
|
35
40
|
public:
|
36
41
|
class Builder {
|
37
42
|
public:
|
38
|
-
// Register a provider with the registry.
|
39
|
-
//
|
40
|
-
//
|
41
|
-
//
|
43
|
+
// Register a provider with the registry. The key of the factory is
|
44
|
+
// extracted from factory parameter with method
|
45
|
+
// CertificateProviderFactory::name. The registry with a given name
|
46
|
+
// cannot be registered twice.
|
42
47
|
void RegisterCertificateProviderFactory(
|
43
48
|
std::unique_ptr<CertificateProviderFactory> factory);
|
44
49
|
|
45
50
|
CertificateProviderRegistry Build();
|
46
51
|
|
47
52
|
private:
|
48
|
-
|
53
|
+
FactoryMap factories_;
|
49
54
|
};
|
50
55
|
|
51
56
|
CertificateProviderRegistry(const CertificateProviderRegistry&) = delete;
|
@@ -60,9 +65,10 @@ class CertificateProviderRegistry {
|
|
60
65
|
absl::string_view name) const;
|
61
66
|
|
62
67
|
private:
|
63
|
-
CertificateProviderRegistry()
|
68
|
+
explicit CertificateProviderRegistry(FactoryMap factories)
|
69
|
+
: factories_(std::move(factories)) {}
|
64
70
|
|
65
|
-
|
71
|
+
FactoryMap factories_;
|
66
72
|
};
|
67
73
|
|
68
74
|
} // namespace grpc_core
|
@@ -34,6 +34,7 @@
|
|
34
34
|
#include <grpc/grpc.h>
|
35
35
|
#include <grpc/grpc_security.h>
|
36
36
|
#include <grpc/support/alloc.h>
|
37
|
+
#include <grpc/support/json.h>
|
37
38
|
#include <grpc/support/log.h>
|
38
39
|
#include <grpc/support/string_util.h>
|
39
40
|
|
@@ -487,19 +488,25 @@ void AwsExternalAccountCredentials::BuildSubjectToken() {
|
|
487
488
|
}
|
488
489
|
// Construct subject token
|
489
490
|
Json::Array headers;
|
490
|
-
headers.push_back(Json(
|
491
|
-
{{"key", "Authorization"},
|
492
|
-
|
491
|
+
headers.push_back(Json::FromObject(
|
492
|
+
{{"key", Json::FromString("Authorization")},
|
493
|
+
{"value", Json::FromString(signed_headers["Authorization"])}}));
|
493
494
|
headers.push_back(
|
494
|
-
Json({{"key", "
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
Json::
|
500
|
-
|
501
|
-
|
502
|
-
Json
|
495
|
+
Json::FromObject({{"key", Json::FromString("host")},
|
496
|
+
{"value", Json::FromString(signed_headers["host"])}}));
|
497
|
+
headers.push_back(Json::FromObject(
|
498
|
+
{{"key", Json::FromString("x-amz-date")},
|
499
|
+
{"value", Json::FromString(signed_headers["x-amz-date"])}}));
|
500
|
+
headers.push_back(Json::FromObject(
|
501
|
+
{{"key", Json::FromString("x-amz-security-token")},
|
502
|
+
{"value", Json::FromString(signed_headers["x-amz-security-token"])}}));
|
503
|
+
headers.push_back(Json::FromObject(
|
504
|
+
{{"key", Json::FromString("x-goog-cloud-target-resource")},
|
505
|
+
{"value", Json::FromString(audience_)}}));
|
506
|
+
Json subject_token_json =
|
507
|
+
Json::FromObject({{"url", Json::FromString(cred_verification_url_)},
|
508
|
+
{"method", Json::FromString("POST")},
|
509
|
+
{"headers", Json::FromArray(headers)}});
|
503
510
|
std::string subject_token = UrlEncode(JsonDump(subject_token_json));
|
504
511
|
FinishRetrieveSubjectToken(subject_token, absl::OkStatus());
|
505
512
|
}
|
@@ -40,6 +40,7 @@
|
|
40
40
|
#include <grpc/grpc.h>
|
41
41
|
#include <grpc/grpc_security.h>
|
42
42
|
#include <grpc/support/alloc.h>
|
43
|
+
#include <grpc/support/json.h>
|
43
44
|
#include <grpc/support/log.h>
|
44
45
|
#include <grpc/support/string_util.h>
|
45
46
|
|
@@ -328,9 +329,10 @@ void ExternalAccountCredentials::ExchangeToken(
|
|
328
329
|
Json::Object addtional_options_json_object;
|
329
330
|
if (options_.client_id.empty() && options_.client_secret.empty()) {
|
330
331
|
addtional_options_json_object["userProject"] =
|
331
|
-
options_.workforce_pool_user_project;
|
332
|
+
Json::FromString(options_.workforce_pool_user_project);
|
332
333
|
}
|
333
|
-
Json addtional_options_json
|
334
|
+
Json addtional_options_json =
|
335
|
+
Json::FromObject(std::move(addtional_options_json_object));
|
334
336
|
body_parts.push_back(absl::StrFormat(
|
335
337
|
"options=%s", UrlEncode(JsonDump(addtional_options_json)).c_str()));
|
336
338
|
std::string body = absl::StrJoin(body_parts, "&");
|
@@ -36,6 +36,7 @@
|
|
36
36
|
|
37
37
|
#include <grpc/grpc_security.h>
|
38
38
|
#include <grpc/support/alloc.h>
|
39
|
+
#include <grpc/support/json.h>
|
39
40
|
#include <grpc/support/log.h>
|
40
41
|
#include <grpc/support/time.h>
|
41
42
|
|
@@ -165,12 +166,12 @@ void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key) {
|
|
165
166
|
// --- jwt encoding and signature. ---
|
166
167
|
|
167
168
|
static char* encoded_jwt_header(const char* key_id, const char* algorithm) {
|
168
|
-
Json json = Json::
|
169
|
-
{"alg", algorithm},
|
170
|
-
{"typ", GRPC_JWT_TYPE},
|
171
|
-
{"kid", key_id},
|
172
|
-
};
|
173
|
-
std::string json_str = JsonDump(json);
|
169
|
+
Json json = Json::FromObject({
|
170
|
+
{"alg", Json::FromString(algorithm)},
|
171
|
+
{"typ", Json::FromString(GRPC_JWT_TYPE)},
|
172
|
+
{"kid", Json::FromString(key_id)},
|
173
|
+
});
|
174
|
+
std::string json_str = grpc_core::JsonDump(json);
|
174
175
|
return grpc_base64_encode(json_str.c_str(), json_str.size(), 1, 0);
|
175
176
|
}
|
176
177
|
|
@@ -185,20 +186,20 @@ static char* encoded_jwt_claim(const grpc_auth_json_key* json_key,
|
|
185
186
|
}
|
186
187
|
|
187
188
|
Json::Object object = {
|
188
|
-
{"iss", json_key->client_email},
|
189
|
-
{"aud", audience},
|
190
|
-
{"iat", now.tv_sec},
|
191
|
-
{"exp", expiration.tv_sec},
|
189
|
+
{"iss", Json::FromString(json_key->client_email)},
|
190
|
+
{"aud", Json::FromString(audience)},
|
191
|
+
{"iat", Json::FromNumber(now.tv_sec)},
|
192
|
+
{"exp", Json::FromNumber(expiration.tv_sec)},
|
192
193
|
};
|
193
194
|
if (scope != nullptr) {
|
194
|
-
object["scope"] = scope;
|
195
|
+
object["scope"] = Json::FromString(scope);
|
195
196
|
} else {
|
196
197
|
// Unscoped JWTs need a sub field.
|
197
|
-
object["sub"] = json_key->client_email;
|
198
|
+
object["sub"] = Json::FromString(json_key->client_email);
|
198
199
|
}
|
199
200
|
|
200
|
-
|
201
|
-
|
201
|
+
std::string json_str =
|
202
|
+
grpc_core::JsonDump(Json::FromObject(std::move(object)));
|
202
203
|
return grpc_base64_encode(json_str.c_str(), json_str.size(), 1, 0);
|
203
204
|
}
|
204
205
|
|
@@ -30,6 +30,7 @@
|
|
30
30
|
#include "absl/strings/str_cat.h"
|
31
31
|
|
32
32
|
#include <grpc/support/alloc.h>
|
33
|
+
#include <grpc/support/json.h>
|
33
34
|
#include <grpc/support/log.h>
|
34
35
|
#include <grpc/support/string_util.h>
|
35
36
|
#include <grpc/support/sync.h>
|
@@ -145,9 +146,10 @@ static char* redact_private_key(const char* json_key) {
|
|
145
146
|
return gpr_strdup("<Json failed to parse.>");
|
146
147
|
}
|
147
148
|
Json::Object object = json->object();
|
148
|
-
object["private_key"] = "<redacted>";
|
149
|
+
object["private_key"] = Json::FromString("<redacted>");
|
149
150
|
return gpr_strdup(
|
150
|
-
grpc_core::JsonDump(Json(std::move(object)), /*indent=*/2)
|
151
|
+
grpc_core::JsonDump(Json::FromObject(std::move(object)), /*indent=*/2)
|
152
|
+
.c_str());
|
151
153
|
}
|
152
154
|
|
153
155
|
grpc_call_credentials* grpc_service_account_jwt_access_credentials_create(
|
@@ -130,11 +130,7 @@ class grpc_alts_channel_security_connector final
|
|
130
130
|
}
|
131
131
|
|
132
132
|
grpc_core::ArenaPromise<absl::Status> CheckCallHost(
|
133
|
-
absl::string_view
|
134
|
-
if (host.empty() || host != target_name_) {
|
135
|
-
return grpc_core::Immediate(absl::UnauthenticatedError(
|
136
|
-
"ALTS call host does not match target name"));
|
137
|
-
}
|
133
|
+
absl::string_view, grpc_auth_context*) override {
|
138
134
|
return grpc_core::ImmediateOkStatus();
|
139
135
|
}
|
140
136
|
|
@@ -21,14 +21,14 @@
|
|
21
21
|
|
22
22
|
#include <stddef.h>
|
23
23
|
|
24
|
-
#include <map>
|
25
24
|
#include <memory>
|
26
25
|
#include <utility>
|
27
26
|
|
28
|
-
#include "
|
29
|
-
|
27
|
+
#include "src/core/lib/channel/context.h"
|
28
|
+
#include "src/core/lib/gprpp/chunked_vector.h"
|
30
29
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
31
30
|
#include "src/core/lib/gprpp/unique_type_name.h"
|
31
|
+
#include "src/core/lib/resource_quota/arena.h"
|
32
32
|
#include "src/core/lib/service_config/service_config.h"
|
33
33
|
#include "src/core/lib/service_config/service_config_parser.h"
|
34
34
|
|
@@ -38,43 +38,72 @@ namespace grpc_core {
|
|
38
38
|
/// A pointer to this object is stored in the call_context
|
39
39
|
/// GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA element, so that filters can
|
40
40
|
/// easily access method and global parameters for the call.
|
41
|
+
///
|
42
|
+
/// Must be accessed when holding the call combiner (legacy filter) or from
|
43
|
+
/// inside the activity (promise-based filter).
|
41
44
|
class ServiceConfigCallData {
|
42
45
|
public:
|
43
|
-
|
46
|
+
class CallAttributeInterface {
|
47
|
+
public:
|
48
|
+
virtual ~CallAttributeInterface() = default;
|
49
|
+
virtual UniqueTypeName type() const = 0;
|
50
|
+
};
|
51
|
+
|
52
|
+
ServiceConfigCallData(Arena* arena, grpc_call_context_element* call_context)
|
53
|
+
: call_attributes_(arena) {
|
54
|
+
call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value = this;
|
55
|
+
call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].destroy = Destroy;
|
56
|
+
}
|
44
57
|
|
45
|
-
ServiceConfigCallData()
|
58
|
+
virtual ~ServiceConfigCallData() = default;
|
46
59
|
|
47
|
-
|
60
|
+
void SetServiceConfig(
|
48
61
|
RefCountedPtr<ServiceConfig> service_config,
|
49
|
-
const ServiceConfigParser::ParsedConfigVector* method_configs
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
call_attributes_(std::move(call_attributes)) {}
|
62
|
+
const ServiceConfigParser::ParsedConfigVector* method_configs) {
|
63
|
+
service_config_ = std::move(service_config);
|
64
|
+
method_configs_ = method_configs;
|
65
|
+
}
|
54
66
|
|
55
67
|
ServiceConfig* service_config() { return service_config_.get(); }
|
56
68
|
|
57
69
|
ServiceConfigParser::ParsedConfig* GetMethodParsedConfig(size_t index) const {
|
58
|
-
|
59
|
-
|
70
|
+
if (method_configs_ == nullptr) return nullptr;
|
71
|
+
return (*method_configs_)[index].get();
|
60
72
|
}
|
61
73
|
|
62
74
|
ServiceConfigParser::ParsedConfig* GetGlobalParsedConfig(size_t index) const {
|
75
|
+
if (service_config_ == nullptr) return nullptr;
|
63
76
|
return service_config_->GetGlobalParsedConfig(index);
|
64
77
|
}
|
65
78
|
|
66
|
-
|
79
|
+
void SetCallAttribute(CallAttributeInterface* value) {
|
80
|
+
// Overwrite existing entry if we already have one for this type.
|
81
|
+
for (CallAttributeInterface*& attribute : call_attributes_) {
|
82
|
+
if (value->type() == attribute->type()) {
|
83
|
+
attribute = value;
|
84
|
+
return;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
// Otherwise, add a new entry.
|
88
|
+
call_attributes_.EmplaceBack(value);
|
89
|
+
}
|
67
90
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
91
|
+
CallAttributeInterface* GetCallAttribute(UniqueTypeName type) const {
|
92
|
+
for (CallAttributeInterface* attribute : call_attributes_) {
|
93
|
+
if (attribute->type() == type) return attribute;
|
94
|
+
}
|
95
|
+
return nullptr;
|
72
96
|
}
|
73
97
|
|
74
98
|
private:
|
99
|
+
static void Destroy(void* ptr) {
|
100
|
+
auto* self = static_cast<ServiceConfigCallData*>(ptr);
|
101
|
+
self->~ServiceConfigCallData();
|
102
|
+
}
|
103
|
+
|
75
104
|
RefCountedPtr<ServiceConfig> service_config_;
|
76
|
-
const ServiceConfigParser::ParsedConfigVector* method_configs_;
|
77
|
-
|
105
|
+
const ServiceConfigParser::ParsedConfigVector* method_configs_ = nullptr;
|
106
|
+
ChunkedVector<CallAttributeInterface*, 4> call_attributes_;
|
78
107
|
};
|
79
108
|
|
80
109
|
} // namespace grpc_core
|
@@ -121,7 +121,8 @@ RefCountedPtr<ServiceConfig> ServiceConfigImpl::Create(
|
|
121
121
|
service_config->parsed_method_config_vectors_storage_.reserve(
|
122
122
|
method_configs->size());
|
123
123
|
for (size_t i = 0; i < method_configs->size(); ++i) {
|
124
|
-
const Json
|
124
|
+
const Json method_config_json =
|
125
|
+
Json::FromObject(std::move((*method_configs)[i]));
|
125
126
|
ValidationErrors::ScopedField field(
|
126
127
|
errors, absl::StrCat(".methodConfig[", i, "]"));
|
127
128
|
// Have each parser read this method config.
|
@@ -195,7 +195,7 @@ class Call : public CppImplOf<Call, grpc_call> {
|
|
195
195
|
|
196
196
|
ParentCall* GetOrCreateParentCall();
|
197
197
|
ParentCall* parent_call();
|
198
|
-
Channel* channel() {
|
198
|
+
Channel* channel() const {
|
199
199
|
GPR_DEBUG_ASSERT(channel_ != nullptr);
|
200
200
|
return channel_.get();
|
201
201
|
}
|
@@ -445,6 +445,8 @@ void Call::PrepareOutgoingInitialMetadata(const grpc_op& op,
|
|
445
445
|
}
|
446
446
|
// Ignore any te metadata key value pairs specified.
|
447
447
|
md.Remove(TeMetadata());
|
448
|
+
// Should never come from applications
|
449
|
+
md.Remove(GrpcLbClientStatsMetadata());
|
448
450
|
}
|
449
451
|
|
450
452
|
void Call::ProcessIncomingInitialMetadata(grpc_metadata_batch& md) {
|
@@ -1047,8 +1049,8 @@ void FilterStackCall::CancelWithError(grpc_error_handle error) {
|
|
1047
1049
|
|
1048
1050
|
void FilterStackCall::SetFinalStatus(grpc_error_handle error) {
|
1049
1051
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
|
1050
|
-
gpr_log(GPR_DEBUG, "set_final_status %s", is_client() ? "CLI" : "SVR"
|
1051
|
-
|
1052
|
+
gpr_log(GPR_DEBUG, "set_final_status %s %s", is_client() ? "CLI" : "SVR",
|
1053
|
+
StatusToString(error).c_str());
|
1052
1054
|
}
|
1053
1055
|
if (is_client()) {
|
1054
1056
|
std::string status_details;
|
@@ -1295,8 +1297,9 @@ void FilterStackCall::BatchControl::PostCompletion() {
|
|
1295
1297
|
FilterStackCall* call = call_;
|
1296
1298
|
grpc_error_handle error = batch_error_.get();
|
1297
1299
|
if (grpc_call_trace.enabled()) {
|
1298
|
-
gpr_log(GPR_DEBUG, "tag:%p batch_error=%s",
|
1299
|
-
error.ToString().c_str()
|
1300
|
+
gpr_log(GPR_DEBUG, "tag:%p batch_error=%s op:%s",
|
1301
|
+
completion_data_.notify_tag.tag, error.ToString().c_str(),
|
1302
|
+
grpc_transport_stream_op_batch_string(&op_, false).c_str());
|
1300
1303
|
}
|
1301
1304
|
|
1302
1305
|
if (op_.send_initial_metadata) {
|
@@ -1314,16 +1317,16 @@ void FilterStackCall::BatchControl::PostCompletion() {
|
|
1314
1317
|
if (op_.send_trailing_metadata) {
|
1315
1318
|
call->send_trailing_metadata_.Clear();
|
1316
1319
|
}
|
1320
|
+
if (!error.ok() && op_.recv_message && *call->receiving_buffer_ != nullptr) {
|
1321
|
+
grpc_byte_buffer_destroy(*call->receiving_buffer_);
|
1322
|
+
*call->receiving_buffer_ = nullptr;
|
1323
|
+
}
|
1317
1324
|
if (op_.recv_trailing_metadata) {
|
1318
1325
|
// propagate cancellation to any interested children
|
1319
1326
|
gpr_atm_rel_store(&call->received_final_op_atm_, 1);
|
1320
1327
|
call->PropagateCancellationToChildren();
|
1321
1328
|
error = absl::OkStatus();
|
1322
1329
|
}
|
1323
|
-
if (!error.ok() && op_.recv_message && *call->receiving_buffer_ != nullptr) {
|
1324
|
-
grpc_byte_buffer_destroy(*call->receiving_buffer_);
|
1325
|
-
*call->receiving_buffer_ = nullptr;
|
1326
|
-
}
|
1327
1330
|
batch_error_.set(absl::OkStatus());
|
1328
1331
|
|
1329
1332
|
if (completion_data_.notify_tag.is_closure) {
|
@@ -2010,6 +2013,10 @@ class PromiseBasedCall : public Call,
|
|
2010
2013
|
return failed_before_recv_message_.load(std::memory_order_relaxed);
|
2011
2014
|
}
|
2012
2015
|
|
2016
|
+
grpc_event_engine::experimental::EventEngine* event_engine() const final {
|
2017
|
+
return channel()->event_engine();
|
2018
|
+
}
|
2019
|
+
|
2013
2020
|
using Call::arena;
|
2014
2021
|
|
2015
2022
|
protected:
|
@@ -2183,7 +2190,7 @@ class PromiseBasedCall : public Call,
|
|
2183
2190
|
void StartRecvMessage(const grpc_op& op, const Completion& completion,
|
2184
2191
|
FirstPromise first,
|
2185
2192
|
PipeReceiver<MessageHandle>* receiver,
|
2186
|
-
Party::BulkSpawner& spawner);
|
2193
|
+
bool cancel_on_error, Party::BulkSpawner& spawner);
|
2187
2194
|
void StartSendMessage(const grpc_op& op, const Completion& completion,
|
2188
2195
|
PipeSender<MessageHandle>* sender,
|
2189
2196
|
Party::BulkSpawner& spawner);
|
@@ -2538,7 +2545,8 @@ template <typename FirstPromiseFactory>
|
|
2538
2545
|
void PromiseBasedCall::StartRecvMessage(
|
2539
2546
|
const grpc_op& op, const Completion& completion,
|
2540
2547
|
FirstPromiseFactory first_promise_factory,
|
2541
|
-
PipeReceiver<MessageHandle>* receiver,
|
2548
|
+
PipeReceiver<MessageHandle>* receiver, bool cancel_on_error,
|
2549
|
+
Party::BulkSpawner& spawner) {
|
2542
2550
|
if (grpc_call_trace.enabled()) {
|
2543
2551
|
gpr_log(GPR_INFO, "%s[call] Start RecvMessage: %s", DebugTag().c_str(),
|
2544
2552
|
CompletionString(completion).c_str());
|
@@ -2549,7 +2557,7 @@ void PromiseBasedCall::StartRecvMessage(
|
|
2549
2557
|
[first_promise_factory = std::move(first_promise_factory), receiver]() {
|
2550
2558
|
return Seq(first_promise_factory(), receiver->Next());
|
2551
2559
|
},
|
2552
|
-
[this,
|
2560
|
+
[this, cancel_on_error,
|
2553
2561
|
completion = AddOpToCompletion(completion, PendingOp::kReceiveMessage)](
|
2554
2562
|
NextResult<MessageHandle> result) mutable {
|
2555
2563
|
if (result.has_value()) {
|
@@ -2580,6 +2588,7 @@ void PromiseBasedCall::StartRecvMessage(
|
|
2580
2588
|
}
|
2581
2589
|
failed_before_recv_message_.store(true);
|
2582
2590
|
FailCompletion(completion);
|
2591
|
+
if (cancel_on_error) CancelWithError(absl::CancelledError());
|
2583
2592
|
*recv_message_ = nullptr;
|
2584
2593
|
} else {
|
2585
2594
|
if (grpc_call_trace.enabled()) {
|
@@ -2873,7 +2882,7 @@ void ClientPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
|
|
2873
2882
|
[this]() {
|
2874
2883
|
return server_initial_metadata_.receiver.AwaitClosed();
|
2875
2884
|
},
|
2876
|
-
&server_to_client_messages_.receiver, spawner);
|
2885
|
+
&server_to_client_messages_.receiver, false, spawner);
|
2877
2886
|
break;
|
2878
2887
|
case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
|
2879
2888
|
spawner.Spawn(
|
@@ -3218,14 +3227,6 @@ void ServerPromiseBasedCall::Finish(ServerMetadataHandle result) {
|
|
3218
3227
|
DebugTag().c_str(), recv_close_op_cancel_state_.ToString().c_str(),
|
3219
3228
|
result->DebugString().c_str());
|
3220
3229
|
}
|
3221
|
-
if (recv_close_op_cancel_state_.CompleteCallWithCancelledSetTo(
|
3222
|
-
result->get(GrpcCallWasCancelled()).value_or(true))) {
|
3223
|
-
FinishOpOnCompletion(&recv_close_completion_,
|
3224
|
-
PendingOp::kReceiveCloseOnServer);
|
3225
|
-
}
|
3226
|
-
if (server_initial_metadata_ != nullptr) {
|
3227
|
-
server_initial_metadata_->Close();
|
3228
|
-
}
|
3229
3230
|
const auto status =
|
3230
3231
|
result->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
|
3231
3232
|
channelz::ServerNode* channelz_node = server_->channelz_node();
|
@@ -3236,6 +3237,14 @@ void ServerPromiseBasedCall::Finish(ServerMetadataHandle result) {
|
|
3236
3237
|
channelz_node->RecordCallFailed();
|
3237
3238
|
}
|
3238
3239
|
}
|
3240
|
+
if (recv_close_op_cancel_state_.CompleteCallWithCancelledSetTo(
|
3241
|
+
result->get(GrpcCallWasCancelled()).value_or(true))) {
|
3242
|
+
FinishOpOnCompletion(&recv_close_completion_,
|
3243
|
+
PendingOp::kReceiveCloseOnServer);
|
3244
|
+
}
|
3245
|
+
if (server_initial_metadata_ != nullptr) {
|
3246
|
+
server_initial_metadata_->Close();
|
3247
|
+
}
|
3239
3248
|
absl::string_view message_string;
|
3240
3249
|
if (Slice* message = result->get_pointer(GrpcMessageMetadata())) {
|
3241
3250
|
message_string = message->as_string_view();
|
@@ -3328,7 +3337,7 @@ void ServerPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
|
|
3328
3337
|
}
|
3329
3338
|
StartRecvMessage(
|
3330
3339
|
op, completion, []() { return []() { return Empty{}; }; },
|
3331
|
-
client_to_server_messages_, spawner);
|
3340
|
+
client_to_server_messages_, true, spawner);
|
3332
3341
|
break;
|
3333
3342
|
case GRPC_OP_SEND_STATUS_FROM_SERVER: {
|
3334
3343
|
auto metadata = arena()->MakePooled<ServerMetadata>(arena());
|
@@ -3521,6 +3530,9 @@ grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) {
|
|
3521
3530
|
grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
|
3522
3531
|
GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
|
3523
3532
|
GPR_ASSERT(reserved == nullptr);
|
3533
|
+
if (call == nullptr) {
|
3534
|
+
return GRPC_CALL_ERROR;
|
3535
|
+
}
|
3524
3536
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
3525
3537
|
grpc_core::ExecCtx exec_ctx;
|
3526
3538
|
grpc_core::Call::FromC(call)->CancelWithError(absl::CancelledError());
|
@@ -3536,6 +3548,9 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
|
|
3536
3548
|
"c=%p, status=%d, description=%s, reserved=%p)",
|
3537
3549
|
4, (c, (int)status, description, reserved));
|
3538
3550
|
GPR_ASSERT(reserved == nullptr);
|
3551
|
+
if (c == nullptr) {
|
3552
|
+
return GRPC_CALL_ERROR;
|
3553
|
+
}
|
3539
3554
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
3540
3555
|
grpc_core::ExecCtx exec_ctx;
|
3541
3556
|
grpc_core::Call::FromC(c)->CancelWithStatus(status, description);
|
@@ -3576,7 +3591,7 @@ grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
3576
3591
|
"reserved=%p)",
|
3577
3592
|
5, (call, ops, (unsigned long)nops, tag, reserved));
|
3578
3593
|
|
3579
|
-
if (reserved != nullptr) {
|
3594
|
+
if (reserved != nullptr || call == nullptr) {
|
3580
3595
|
return GRPC_CALL_ERROR;
|
3581
3596
|
} else {
|
3582
3597
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|