grpc 1.55.0 → 1.56.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +100 -68
- 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 +86 -104
- data/src/core/ext/filters/client_channel/client_channel.h +6 -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/internal.h +1 -15
- 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/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 +33 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
- 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 +148 -107
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- 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/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 +48 -12
- 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/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -45,6 +45,7 @@
|
|
45
45
|
#include "envoy/config/route/v3/route.upbdefs.h"
|
46
46
|
#include "envoy/config/route/v3/route_components.upb.h"
|
47
47
|
#include "envoy/type/matcher/v3/regex.upb.h"
|
48
|
+
#include "envoy/type/matcher/v3/string.upb.h"
|
48
49
|
#include "envoy/type/v3/percent.upb.h"
|
49
50
|
#include "envoy/type/v3/range.upb.h"
|
50
51
|
#include "google/protobuf/any.upb.h"
|
@@ -79,10 +80,10 @@
|
|
79
80
|
|
80
81
|
namespace grpc_core {
|
81
82
|
|
82
|
-
// TODO(
|
83
|
+
// TODO(apolcyn): remove this flag by the 1.58 release
|
83
84
|
bool XdsRlsEnabled() {
|
84
85
|
auto value = GetEnv("GRPC_EXPERIMENTAL_XDS_RLS_LB");
|
85
|
-
if (!value.has_value()) return
|
86
|
+
if (!value.has_value()) return true;
|
86
87
|
bool parsed_value;
|
87
88
|
bool parse_succeeded = gpr_parse_bool_value(value->c_str(), &parsed_value);
|
88
89
|
return parse_succeeded && parsed_value;
|
@@ -486,6 +487,7 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match,
|
|
486
487
|
int64_t range_start = 0;
|
487
488
|
int64_t range_end = 0;
|
488
489
|
bool present_match = false;
|
490
|
+
bool case_sensitive = true;
|
489
491
|
if (envoy_config_route_v3_HeaderMatcher_has_exact_match(header)) {
|
490
492
|
type = HeaderMatcher::Type::kExact;
|
491
493
|
match_string = UpbStringToStdString(
|
@@ -514,11 +516,46 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match,
|
|
514
516
|
type = HeaderMatcher::Type::kRange;
|
515
517
|
const envoy_type_v3_Int64Range* range_matcher =
|
516
518
|
envoy_config_route_v3_HeaderMatcher_range_match(header);
|
519
|
+
GPR_ASSERT(range_matcher != nullptr);
|
517
520
|
range_start = envoy_type_v3_Int64Range_start(range_matcher);
|
518
521
|
range_end = envoy_type_v3_Int64Range_end(range_matcher);
|
519
522
|
} else if (envoy_config_route_v3_HeaderMatcher_has_present_match(header)) {
|
520
523
|
type = HeaderMatcher::Type::kPresent;
|
521
524
|
present_match = envoy_config_route_v3_HeaderMatcher_present_match(header);
|
525
|
+
} else if (envoy_config_route_v3_HeaderMatcher_has_string_match(header)) {
|
526
|
+
ValidationErrors::ScopedField field(errors, ".string_match");
|
527
|
+
const auto* matcher =
|
528
|
+
envoy_config_route_v3_HeaderMatcher_string_match(header);
|
529
|
+
GPR_ASSERT(matcher != nullptr);
|
530
|
+
if (envoy_type_matcher_v3_StringMatcher_has_exact(matcher)) {
|
531
|
+
type = HeaderMatcher::Type::kExact;
|
532
|
+
match_string = UpbStringToStdString(
|
533
|
+
envoy_type_matcher_v3_StringMatcher_exact(matcher));
|
534
|
+
} else if (envoy_type_matcher_v3_StringMatcher_has_prefix(matcher)) {
|
535
|
+
type = HeaderMatcher::Type::kPrefix;
|
536
|
+
match_string = UpbStringToStdString(
|
537
|
+
envoy_type_matcher_v3_StringMatcher_prefix(matcher));
|
538
|
+
} else if (envoy_type_matcher_v3_StringMatcher_has_suffix(matcher)) {
|
539
|
+
type = HeaderMatcher::Type::kSuffix;
|
540
|
+
match_string = UpbStringToStdString(
|
541
|
+
envoy_type_matcher_v3_StringMatcher_suffix(matcher));
|
542
|
+
} else if (envoy_type_matcher_v3_StringMatcher_has_contains(matcher)) {
|
543
|
+
type = HeaderMatcher::Type::kContains;
|
544
|
+
match_string = UpbStringToStdString(
|
545
|
+
envoy_type_matcher_v3_StringMatcher_contains(matcher));
|
546
|
+
} else if (envoy_type_matcher_v3_StringMatcher_has_safe_regex(matcher)) {
|
547
|
+
type = HeaderMatcher::Type::kSafeRegex;
|
548
|
+
const auto* regex_matcher =
|
549
|
+
envoy_type_matcher_v3_StringMatcher_safe_regex(matcher);
|
550
|
+
GPR_ASSERT(regex_matcher != nullptr);
|
551
|
+
match_string = UpbStringToStdString(
|
552
|
+
envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
|
553
|
+
} else {
|
554
|
+
errors->AddError("invalid string matcher");
|
555
|
+
continue;
|
556
|
+
}
|
557
|
+
case_sensitive =
|
558
|
+
!envoy_type_matcher_v3_StringMatcher_ignore_case(matcher);
|
522
559
|
} else {
|
523
560
|
errors->AddError("invalid header matcher");
|
524
561
|
continue;
|
@@ -527,7 +564,7 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match,
|
|
527
564
|
envoy_config_route_v3_HeaderMatcher_invert_match(header);
|
528
565
|
absl::StatusOr<HeaderMatcher> header_matcher =
|
529
566
|
HeaderMatcher::Create(name, type, match_string, range_start, range_end,
|
530
|
-
present_match, invert_match);
|
567
|
+
present_match, invert_match, case_sensitive);
|
531
568
|
if (!header_matcher.ok()) {
|
532
569
|
errors->AddError(absl::StrCat("cannot create header matcher: ",
|
533
570
|
header_matcher.status().message()));
|
@@ -248,8 +248,8 @@ XdsRouting::GeneratePerHTTPFilterConfigs(
|
|
248
248
|
FindFilterConfigOverride(http_filter.name, vhost, route,
|
249
249
|
cluster_weight);
|
250
250
|
// Generate service config for filter.
|
251
|
-
auto method_config_field =
|
252
|
-
|
251
|
+
auto method_config_field = filter_impl->GenerateServiceConfig(
|
252
|
+
http_filter.config, config_override, http_filter.name);
|
253
253
|
if (!method_config_field.ok()) {
|
254
254
|
return absl::FailedPreconditionError(absl::StrCat(
|
255
255
|
"failed to generate method config for HTTP filter ", http_filter.name,
|
@@ -47,6 +47,7 @@
|
|
47
47
|
#include "src/core/lib/gprpp/time.h"
|
48
48
|
#include "src/core/lib/iomgr/closure.h"
|
49
49
|
#include "src/core/lib/iomgr/pollset_set.h"
|
50
|
+
#include "src/core/lib/json/json.h"
|
50
51
|
#include "src/core/lib/security/credentials/channel_creds_registry.h"
|
51
52
|
#include "src/core/lib/security/credentials/credentials.h"
|
52
53
|
#include "src/core/lib/slice/slice.h"
|
@@ -255,7 +256,8 @@ grpc_channel* CreateXdsChannel(const ChannelArgs& args,
|
|
255
256
|
const GrpcXdsBootstrap::GrpcXdsServer& server) {
|
256
257
|
RefCountedPtr<grpc_channel_credentials> channel_creds =
|
257
258
|
CoreConfiguration::Get().channel_creds_registry().CreateChannelCreds(
|
258
|
-
server.channel_creds_type(),
|
259
|
+
server.channel_creds_type(),
|
260
|
+
Json::FromObject(server.channel_creds_config()));
|
259
261
|
return grpc_channel_create(server.server_uri().c_str(), channel_creds.get(),
|
260
262
|
args.ToC().get());
|
261
263
|
}
|
data/src/core/lib/avl/avl.h
CHANGED
@@ -39,6 +39,7 @@
|
|
39
39
|
#include <grpc/support/string_util.h>
|
40
40
|
|
41
41
|
#include "src/core/lib/gpr/useful.h"
|
42
|
+
#include "src/core/lib/gprpp/crash.h"
|
42
43
|
#include "src/core/lib/gprpp/match.h"
|
43
44
|
|
44
45
|
namespace grpc_core {
|
@@ -126,21 +127,55 @@ ChannelArgs ChannelArgs::FromC(const grpc_channel_args* args) {
|
|
126
127
|
return result;
|
127
128
|
}
|
128
129
|
|
130
|
+
grpc_arg ChannelArgs::Value::MakeCArg(const char* name) const {
|
131
|
+
char* c_name = const_cast<char*>(name);
|
132
|
+
return Match(
|
133
|
+
rep_,
|
134
|
+
[c_name](int i) { return grpc_channel_arg_integer_create(c_name, i); },
|
135
|
+
[c_name](const std::shared_ptr<const std::string>& s) {
|
136
|
+
return grpc_channel_arg_string_create(c_name,
|
137
|
+
const_cast<char*>(s->c_str()));
|
138
|
+
},
|
139
|
+
[c_name](const Pointer& p) {
|
140
|
+
return grpc_channel_arg_pointer_create(c_name, p.c_pointer(),
|
141
|
+
p.c_vtable());
|
142
|
+
});
|
143
|
+
}
|
144
|
+
|
145
|
+
bool ChannelArgs::Value::operator<(const Value& rhs) const {
|
146
|
+
if (rhs.rep_.index() != rep_.index()) return rep_.index() < rhs.rep_.index();
|
147
|
+
switch (rep_.index()) {
|
148
|
+
case 0:
|
149
|
+
return absl::get<int>(rep_) < absl::get<int>(rhs.rep_);
|
150
|
+
case 1:
|
151
|
+
return *absl::get<std::shared_ptr<const std::string>>(rep_) <
|
152
|
+
*absl::get<std::shared_ptr<const std::string>>(rhs.rep_);
|
153
|
+
case 2:
|
154
|
+
return absl::get<Pointer>(rep_) < absl::get<Pointer>(rhs.rep_);
|
155
|
+
default:
|
156
|
+
Crash("unreachable");
|
157
|
+
}
|
158
|
+
}
|
159
|
+
|
160
|
+
bool ChannelArgs::Value::operator==(const Value& rhs) const {
|
161
|
+
if (rhs.rep_.index() != rep_.index()) return false;
|
162
|
+
switch (rep_.index()) {
|
163
|
+
case 0:
|
164
|
+
return absl::get<int>(rep_) == absl::get<int>(rhs.rep_);
|
165
|
+
case 1:
|
166
|
+
return *absl::get<std::shared_ptr<const std::string>>(rep_) ==
|
167
|
+
*absl::get<std::shared_ptr<const std::string>>(rhs.rep_);
|
168
|
+
case 2:
|
169
|
+
return absl::get<Pointer>(rep_) == absl::get<Pointer>(rhs.rep_);
|
170
|
+
default:
|
171
|
+
Crash("unreachable");
|
172
|
+
}
|
173
|
+
}
|
174
|
+
|
129
175
|
ChannelArgs::CPtr ChannelArgs::ToC() const {
|
130
176
|
std::vector<grpc_arg> c_args;
|
131
177
|
args_.ForEach([&c_args](const std::string& key, const Value& value) {
|
132
|
-
|
133
|
-
c_args.push_back(Match(
|
134
|
-
value,
|
135
|
-
[name](int i) { return grpc_channel_arg_integer_create(name, i); },
|
136
|
-
[name](const std::string& s) {
|
137
|
-
return grpc_channel_arg_string_create(name,
|
138
|
-
const_cast<char*>(s.c_str()));
|
139
|
-
},
|
140
|
-
[name](const Pointer& p) {
|
141
|
-
return grpc_channel_arg_pointer_create(name, p.c_pointer(),
|
142
|
-
p.c_vtable());
|
143
|
-
}));
|
178
|
+
c_args.push_back(value.MakeCArg(key.c_str()));
|
144
179
|
});
|
145
180
|
return CPtr(static_cast<const grpc_channel_args*>(
|
146
181
|
grpc_channel_args_copy_and_add(nullptr, c_args.data(), c_args.size())));
|
@@ -178,8 +213,9 @@ ChannelArgs ChannelArgs::Remove(absl::string_view key) const {
|
|
178
213
|
absl::optional<int> ChannelArgs::GetInt(absl::string_view name) const {
|
179
214
|
auto* v = Get(name);
|
180
215
|
if (v == nullptr) return absl::nullopt;
|
181
|
-
|
182
|
-
return absl::
|
216
|
+
const auto* i = v->GetIfInt();
|
217
|
+
if (i == nullptr) return absl::nullopt;
|
218
|
+
return *i;
|
183
219
|
}
|
184
220
|
|
185
221
|
absl::optional<Duration> ChannelArgs::GetDurationFromIntMillis(
|
@@ -195,8 +231,9 @@ absl::optional<absl::string_view> ChannelArgs::GetString(
|
|
195
231
|
absl::string_view name) const {
|
196
232
|
auto* v = Get(name);
|
197
233
|
if (v == nullptr) return absl::nullopt;
|
198
|
-
|
199
|
-
return absl::
|
234
|
+
const auto* s = v->GetIfString();
|
235
|
+
if (s == nullptr) return absl::nullopt;
|
236
|
+
return *s;
|
200
237
|
}
|
201
238
|
|
202
239
|
absl::optional<std::string> ChannelArgs::GetOwnedString(
|
@@ -209,14 +246,15 @@ absl::optional<std::string> ChannelArgs::GetOwnedString(
|
|
209
246
|
void* ChannelArgs::GetVoidPointer(absl::string_view name) const {
|
210
247
|
auto* v = Get(name);
|
211
248
|
if (v == nullptr) return nullptr;
|
212
|
-
|
213
|
-
|
249
|
+
const auto* pp = v->GetIfPointer();
|
250
|
+
if (pp == nullptr) return nullptr;
|
251
|
+
return pp->c_pointer();
|
214
252
|
}
|
215
253
|
|
216
254
|
absl::optional<bool> ChannelArgs::GetBool(absl::string_view name) const {
|
217
255
|
auto* v = Get(name);
|
218
256
|
if (v == nullptr) return absl::nullopt;
|
219
|
-
auto* i =
|
257
|
+
auto* i = v->GetIfInt();
|
220
258
|
if (i == nullptr) {
|
221
259
|
gpr_log(GPR_ERROR, "%s ignored: it must be an integer",
|
222
260
|
std::string(name).c_str());
|
@@ -238,11 +276,11 @@ std::string ChannelArgs::ToString() const {
|
|
238
276
|
std::vector<std::string> arg_strings;
|
239
277
|
args_.ForEach([&arg_strings](const std::string& key, const Value& value) {
|
240
278
|
std::string value_str;
|
241
|
-
if (auto* i =
|
279
|
+
if (auto* i = value.GetIfInt()) {
|
242
280
|
value_str = std::to_string(*i);
|
243
|
-
} else if (auto* s =
|
281
|
+
} else if (auto* s = value.GetIfString()) {
|
244
282
|
value_str = *s;
|
245
|
-
} else if (auto* p =
|
283
|
+
} else if (auto* p = value.GetIfPointer()) {
|
246
284
|
value_str = absl::StrFormat("%p", p->c_pointer());
|
247
285
|
}
|
248
286
|
arg_strings.push_back(absl::StrCat(key, "=", value_str));
|
@@ -251,6 +289,26 @@ std::string ChannelArgs::ToString() const {
|
|
251
289
|
}
|
252
290
|
|
253
291
|
ChannelArgs ChannelArgs::UnionWith(ChannelArgs other) const {
|
292
|
+
if (args_.Empty()) return other;
|
293
|
+
if (other.args_.Empty()) return *this;
|
294
|
+
if (args_.Height() <= other.args_.Height()) {
|
295
|
+
args_.ForEach([&other](const std::string& key, const Value& value) {
|
296
|
+
other.args_ = other.args_.Add(key, value);
|
297
|
+
});
|
298
|
+
return other;
|
299
|
+
} else {
|
300
|
+
auto result = *this;
|
301
|
+
other.args_.ForEach([&result](const std::string& key, const Value& value) {
|
302
|
+
if (result.args_.Lookup(key) == nullptr) {
|
303
|
+
result.args_ = result.args_.Add(key, value);
|
304
|
+
}
|
305
|
+
});
|
306
|
+
return result;
|
307
|
+
}
|
308
|
+
}
|
309
|
+
|
310
|
+
ChannelArgs ChannelArgs::FuzzingReferenceUnionWith(ChannelArgs other) const {
|
311
|
+
// DO NOT OPTIMIZE THIS!!
|
254
312
|
args_.ForEach([&other](const std::string& key, const Value& value) {
|
255
313
|
other.args_ = other.args_.Add(key, value);
|
256
314
|
});
|
@@ -281,7 +281,35 @@ class ChannelArgs {
|
|
281
281
|
const grpc_arg_pointer_vtable* vtable_;
|
282
282
|
};
|
283
283
|
|
284
|
-
|
284
|
+
class Value {
|
285
|
+
public:
|
286
|
+
explicit Value(int n) : rep_(n) {}
|
287
|
+
explicit Value(std::string s)
|
288
|
+
: rep_(std::make_shared<const std::string>(std::move(s))) {}
|
289
|
+
explicit Value(Pointer p) : rep_(std::move(p)) {}
|
290
|
+
|
291
|
+
const int* GetIfInt() const { return absl::get_if<int>(&rep_); }
|
292
|
+
const std::string* GetIfString() const {
|
293
|
+
auto* p = absl::get_if<std::shared_ptr<const std::string>>(&rep_);
|
294
|
+
if (p == nullptr) return nullptr;
|
295
|
+
return p->get();
|
296
|
+
}
|
297
|
+
const Pointer* GetIfPointer() const { return absl::get_if<Pointer>(&rep_); }
|
298
|
+
|
299
|
+
grpc_arg MakeCArg(const char* name) const;
|
300
|
+
|
301
|
+
bool operator<(const Value& rhs) const;
|
302
|
+
bool operator==(const Value& rhs) const;
|
303
|
+
bool operator!=(const Value& rhs) const { return !this->operator==(rhs); }
|
304
|
+
bool operator==(absl::string_view rhs) const {
|
305
|
+
auto* p = absl::get_if<std::shared_ptr<const std::string>>(&rep_);
|
306
|
+
if (p == nullptr) return false;
|
307
|
+
return **p == rhs;
|
308
|
+
}
|
309
|
+
|
310
|
+
private:
|
311
|
+
absl::variant<int, std::shared_ptr<const std::string>, Pointer> rep_;
|
312
|
+
};
|
285
313
|
|
286
314
|
struct ChannelArgsDeleter {
|
287
315
|
void operator()(const grpc_channel_args* p) const;
|
@@ -307,6 +335,11 @@ class ChannelArgs {
|
|
307
335
|
// If a key is present in both, the value from this is used.
|
308
336
|
GRPC_MUST_USE_RESULT ChannelArgs UnionWith(ChannelArgs other) const;
|
309
337
|
|
338
|
+
// Only used in union_with_test.cc, reference version of UnionWith for
|
339
|
+
// differential fuzzing.
|
340
|
+
GRPC_MUST_USE_RESULT ChannelArgs
|
341
|
+
FuzzingReferenceUnionWith(ChannelArgs other) const;
|
342
|
+
|
310
343
|
const Value* Get(absl::string_view name) const;
|
311
344
|
GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name,
|
312
345
|
Pointer value) const;
|
@@ -21,10 +21,12 @@
|
|
21
21
|
#include "src/core/lib/channel/channel_trace.h"
|
22
22
|
|
23
23
|
#include <algorithm>
|
24
|
-
#include <string>
|
25
24
|
#include <utility>
|
26
25
|
|
26
|
+
#include "absl/strings/str_cat.h"
|
27
|
+
|
27
28
|
#include <grpc/support/alloc.h>
|
29
|
+
#include <grpc/support/json.h>
|
28
30
|
|
29
31
|
#include "src/core/lib/channel/channelz.h"
|
30
32
|
#include "src/core/lib/gpr/string.h"
|
@@ -140,21 +142,21 @@ const char* severity_string(ChannelTrace::Severity severity) {
|
|
140
142
|
Json ChannelTrace::TraceEvent::RenderTraceEvent() const {
|
141
143
|
char* description = grpc_slice_to_c_string(data_);
|
142
144
|
Json::Object object = {
|
143
|
-
{"description", description},
|
144
|
-
{"severity", severity_string(severity_)},
|
145
|
-
{"timestamp", gpr_format_timespec(timestamp_)},
|
145
|
+
{"description", Json::FromString(description)},
|
146
|
+
{"severity", Json::FromString(severity_string(severity_))},
|
147
|
+
{"timestamp", Json::FromString(gpr_format_timespec(timestamp_))},
|
146
148
|
};
|
147
149
|
gpr_free(description);
|
148
150
|
if (referenced_entity_ != nullptr) {
|
149
151
|
const bool is_channel =
|
150
152
|
(referenced_entity_->type() == BaseNode::EntityType::kTopLevelChannel ||
|
151
153
|
referenced_entity_->type() == BaseNode::EntityType::kInternalChannel);
|
152
|
-
object[is_channel ? "channelRef" : "subchannelRef"] = Json::
|
154
|
+
object[is_channel ? "channelRef" : "subchannelRef"] = Json::FromObject({
|
153
155
|
{(is_channel ? "channelId" : "subchannelId"),
|
154
|
-
|
155
|
-
};
|
156
|
+
Json::FromString(absl::StrCat(referenced_entity_->uuid()))},
|
157
|
+
});
|
156
158
|
}
|
157
|
-
return object;
|
159
|
+
return Json::FromObject(std::move(object));
|
158
160
|
}
|
159
161
|
|
160
162
|
Json ChannelTrace::RenderJson() const {
|
@@ -163,10 +165,12 @@ Json ChannelTrace::RenderJson() const {
|
|
163
165
|
return Json(); // JSON null
|
164
166
|
}
|
165
167
|
Json::Object object = {
|
166
|
-
{"creationTimestamp",
|
168
|
+
{"creationTimestamp",
|
169
|
+
Json::FromString(gpr_format_timespec(time_created_))},
|
167
170
|
};
|
168
171
|
if (num_events_logged_ > 0) {
|
169
|
-
object["numEventsLogged"] =
|
172
|
+
object["numEventsLogged"] =
|
173
|
+
Json::FromString(absl::StrCat(num_events_logged_));
|
170
174
|
}
|
171
175
|
// Only add in the event list if it is non-empty.
|
172
176
|
if (head_trace_ != nullptr) {
|
@@ -174,9 +178,9 @@ Json ChannelTrace::RenderJson() const {
|
|
174
178
|
for (TraceEvent* it = head_trace_; it != nullptr; it = it->next()) {
|
175
179
|
array.emplace_back(it->RenderTraceEvent());
|
176
180
|
}
|
177
|
-
object["events"] = std::move(array);
|
181
|
+
object["events"] = Json::FromArray(std::move(array));
|
178
182
|
}
|
179
|
-
return object;
|
183
|
+
return Json::FromObject(std::move(object));
|
180
184
|
}
|
181
185
|
|
182
186
|
} // namespace channelz
|