grpc 1.55.0 → 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 -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 +50 -14
- 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
@@ -38,6 +38,7 @@
|
|
38
38
|
#include <grpc/event_engine/event_engine.h>
|
39
39
|
#include <grpc/grpc.h>
|
40
40
|
#include <grpc/impl/connectivity_state.h>
|
41
|
+
#include <grpc/support/json.h>
|
41
42
|
#include <grpc/support/log.h>
|
42
43
|
|
43
44
|
#include "src/core/ext/filters/client_channel/lb_policy/address_filtering.h"
|
@@ -308,10 +309,10 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
308
309
|
void Start() override;
|
309
310
|
void Orphan() override;
|
310
311
|
Json::Array override_child_policy() override {
|
311
|
-
return
|
312
|
-
Json::
|
313
|
-
{"pick_first", Json::
|
314
|
-
},
|
312
|
+
return {
|
313
|
+
Json::FromObject({
|
314
|
+
{"pick_first", Json::FromObject({})},
|
315
|
+
}),
|
315
316
|
};
|
316
317
|
}
|
317
318
|
bool disable_reresolution() override { return false; };
|
@@ -878,8 +879,8 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
878
879
|
Json child_policy;
|
879
880
|
if (!discovery_entry.discovery_mechanism->override_child_policy()
|
880
881
|
.empty()) {
|
881
|
-
child_policy =
|
882
|
-
discovery_entry.discovery_mechanism->override_child_policy();
|
882
|
+
child_policy = Json::FromArray(
|
883
|
+
discovery_entry.discovery_mechanism->override_child_policy());
|
883
884
|
} else {
|
884
885
|
child_policy = config_->xds_lb_policy();
|
885
886
|
}
|
@@ -889,32 +890,34 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
889
890
|
};
|
890
891
|
if (!discovery_config.override_host_statuses.empty()) {
|
891
892
|
xds_override_host_lb_config["overrideHostStatus"] =
|
892
|
-
discovery_config.override_host_statuses;
|
893
|
+
Json::FromArray(discovery_config.override_host_statuses);
|
893
894
|
}
|
894
|
-
Json::Array xds_override_host_config = {Json::
|
895
|
+
Json::Array xds_override_host_config = {Json::FromObject({
|
895
896
|
{"xds_override_host_experimental",
|
896
|
-
std::move(xds_override_host_lb_config)},
|
897
|
-
}};
|
897
|
+
Json::FromObject(std::move(xds_override_host_lb_config))},
|
898
|
+
})};
|
898
899
|
// Wrap it in the xds_cluster_impl policy.
|
899
900
|
Json::Array drop_categories;
|
900
901
|
if (discovery_entry.latest_update->drop_config != nullptr) {
|
901
902
|
for (const auto& category :
|
902
903
|
discovery_entry.latest_update->drop_config->drop_category_list()) {
|
903
|
-
drop_categories.push_back(Json::
|
904
|
-
{"category", category.name},
|
905
|
-
{"requests_per_million",
|
906
|
-
|
904
|
+
drop_categories.push_back(Json::FromObject({
|
905
|
+
{"category", Json::FromString(category.name)},
|
906
|
+
{"requests_per_million",
|
907
|
+
Json::FromNumber(category.parts_per_million)},
|
908
|
+
}));
|
907
909
|
}
|
908
910
|
}
|
909
911
|
Json::Object xds_cluster_impl_config = {
|
910
|
-
{"clusterName", discovery_config.cluster_name},
|
911
|
-
{"childPolicy", std::move(xds_override_host_config)},
|
912
|
-
{"dropCategories", std::move(drop_categories)},
|
913
|
-
{"maxConcurrentRequests",
|
912
|
+
{"clusterName", Json::FromString(discovery_config.cluster_name)},
|
913
|
+
{"childPolicy", Json::FromArray(std::move(xds_override_host_config))},
|
914
|
+
{"dropCategories", Json::FromArray(std::move(drop_categories))},
|
915
|
+
{"maxConcurrentRequests",
|
916
|
+
Json::FromNumber(discovery_config.max_concurrent_requests)},
|
914
917
|
};
|
915
918
|
if (!discovery_config.eds_service_name.empty()) {
|
916
919
|
xds_cluster_impl_config["edsServiceName"] =
|
917
|
-
discovery_config.eds_service_name;
|
920
|
+
Json::FromString(discovery_config.eds_service_name);
|
918
921
|
}
|
919
922
|
if (discovery_config.lrs_load_reporting_server.has_value()) {
|
920
923
|
xds_cluster_impl_config["lrsLoadReportingServer"] =
|
@@ -926,32 +929,34 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
926
929
|
outlier_detection_config =
|
927
930
|
discovery_entry.config().outlier_detection_lb_config.value();
|
928
931
|
}
|
929
|
-
outlier_detection_config["childPolicy"] =
|
930
|
-
{
|
931
|
-
|
932
|
-
|
932
|
+
outlier_detection_config["childPolicy"] =
|
933
|
+
Json::FromArray({Json::FromObject({
|
934
|
+
{"xds_cluster_impl_experimental",
|
935
|
+
Json::FromObject(std::move(xds_cluster_impl_config))},
|
936
|
+
})});
|
937
|
+
Json locality_picking_policy = Json::FromArray({Json::FromObject({
|
933
938
|
{"outlier_detection_experimental",
|
934
|
-
std::move(outlier_detection_config)},
|
935
|
-
}};
|
939
|
+
Json::FromObject(std::move(outlier_detection_config))},
|
940
|
+
})});
|
936
941
|
// Add priority entry, with the appropriate child name.
|
937
942
|
std::string child_name = discovery_entry.GetChildPolicyName(priority);
|
938
|
-
priority_priorities.emplace_back(child_name);
|
943
|
+
priority_priorities.emplace_back(Json::FromString(child_name));
|
939
944
|
Json::Object child_config = {
|
940
945
|
{"config", std::move(locality_picking_policy)},
|
941
946
|
};
|
942
947
|
if (discovery_entry.discovery_mechanism->disable_reresolution()) {
|
943
|
-
child_config["ignore_reresolution_requests"] = true;
|
948
|
+
child_config["ignore_reresolution_requests"] = Json::FromBool(true);
|
944
949
|
}
|
945
|
-
priority_children[child_name] = std::move(child_config);
|
950
|
+
priority_children[child_name] = Json::FromObject(std::move(child_config));
|
946
951
|
}
|
947
952
|
}
|
948
|
-
Json json = Json::
|
953
|
+
Json json = Json::FromArray({Json::FromObject({
|
949
954
|
{"priority_experimental",
|
950
|
-
Json::
|
951
|
-
{"children", std::move(priority_children)},
|
952
|
-
{"priorities", std::move(priority_priorities)},
|
953
|
-
}},
|
954
|
-
}};
|
955
|
+
Json::FromObject({
|
956
|
+
{"children", Json::FromObject(std::move(priority_children))},
|
957
|
+
{"priorities", Json::FromArray(std::move(priority_priorities))},
|
958
|
+
})},
|
959
|
+
})});
|
955
960
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
|
956
961
|
gpr_log(
|
957
962
|
GPR_INFO,
|
@@ -1145,15 +1150,7 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1145
1150
|
|
1146
1151
|
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
1147
1152
|
ParseLoadBalancingConfig(const Json& json) const override {
|
1148
|
-
|
1149
|
-
// xds_cluster_resolver was mentioned as a policy in the deprecated
|
1150
|
-
// loadBalancingPolicy field or in the client API.
|
1151
|
-
return absl::InvalidArgumentError(
|
1152
|
-
"field:loadBalancingPolicy error:xds_cluster_resolver policy "
|
1153
|
-
"requires configuration. "
|
1154
|
-
"Please use loadBalancingConfig field of service config instead.");
|
1155
|
-
}
|
1156
|
-
return LoadRefCountedFromJson<XdsClusterResolverLbConfig>(
|
1153
|
+
return LoadFromJson<RefCountedPtr<XdsClusterResolverLbConfig>>(
|
1157
1154
|
json, JsonArgs(),
|
1158
1155
|
"errors validating xds_cluster_resolver LB policy config");
|
1159
1156
|
}
|
@@ -319,7 +319,7 @@ class XdsOverrideHostLb : public LoadBalancingPolicy {
|
|
319
319
|
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
320
320
|
|
321
321
|
// Latest state and picker reported by the child policy.
|
322
|
-
grpc_connectivity_state state_ =
|
322
|
+
grpc_connectivity_state state_ = GRPC_CHANNEL_CONNECTING;
|
323
323
|
absl::Status status_;
|
324
324
|
RefCountedPtr<SubchannelPicker> picker_;
|
325
325
|
Mutex subchannel_map_mu_;
|
@@ -370,8 +370,11 @@ XdsOverrideHostLb::Picker::PickOverridenHost(absl::string_view override_host) {
|
|
370
370
|
LoadBalancingPolicy::PickResult XdsOverrideHostLb::Picker::Pick(
|
371
371
|
LoadBalancingPolicy::PickArgs args) {
|
372
372
|
auto* call_state = static_cast<ClientChannelLbCallState*>(args.call_state);
|
373
|
-
auto override_host =
|
374
|
-
|
373
|
+
auto* override_host = static_cast<XdsOverrideHostAttribute*>(
|
374
|
+
call_state->GetCallAttribute(XdsOverrideHostAttribute::TypeName()));
|
375
|
+
auto overridden_host_pick =
|
376
|
+
PickOverridenHost(override_host != nullptr ? override_host->host_name()
|
377
|
+
: absl::string_view());
|
375
378
|
if (overridden_host_pick.has_value()) {
|
376
379
|
return std::move(*overridden_host_pick);
|
377
380
|
}
|
@@ -740,15 +743,7 @@ class XdsOverrideHostLbFactory : public LoadBalancingPolicyFactory {
|
|
740
743
|
|
741
744
|
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
742
745
|
ParseLoadBalancingConfig(const Json& json) const override {
|
743
|
-
|
744
|
-
// This policy was configured in the deprecated loadBalancingPolicy
|
745
|
-
// field or in the client API.
|
746
|
-
return absl::InvalidArgumentError(
|
747
|
-
"field:loadBalancingPolicy error:xds_override_host policy requires "
|
748
|
-
"configuration. Please use loadBalancingConfig field of service "
|
749
|
-
"config instead.");
|
750
|
-
}
|
751
|
-
return LoadRefCountedFromJson<XdsOverrideHostLbConfig>(
|
746
|
+
return LoadFromJson<RefCountedPtr<XdsOverrideHostLbConfig>>(
|
752
747
|
json, JsonArgs(),
|
753
748
|
"errors validating xds_override_host LB policy config");
|
754
749
|
}
|
@@ -30,6 +30,7 @@
|
|
30
30
|
|
31
31
|
#include <grpc/event_engine/event_engine.h>
|
32
32
|
#include <grpc/impl/connectivity_state.h>
|
33
|
+
#include <grpc/support/json.h>
|
33
34
|
#include <grpc/support/log.h>
|
34
35
|
|
35
36
|
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h"
|
@@ -211,19 +212,19 @@ absl::Status XdsWrrLocalityLb::UpdateLocked(UpdateArgs args) {
|
|
211
212
|
const std::string& locality_name = p.first;
|
212
213
|
uint32_t weight = p.second;
|
213
214
|
// Add weighted target entry.
|
214
|
-
weighted_targets[locality_name] = Json::
|
215
|
-
{"weight", weight},
|
215
|
+
weighted_targets[locality_name] = Json::FromObject({
|
216
|
+
{"weight", Json::FromNumber(weight)},
|
216
217
|
{"childPolicy", config->child_config()},
|
217
|
-
};
|
218
|
+
});
|
218
219
|
}
|
219
|
-
Json child_config_json = Json::
|
220
|
-
Json::
|
220
|
+
Json child_config_json = Json::FromArray({
|
221
|
+
Json::FromObject({
|
221
222
|
{"weighted_target_experimental",
|
222
|
-
Json::
|
223
|
-
{"targets", std::move(weighted_targets)},
|
224
|
-
}},
|
225
|
-
},
|
226
|
-
};
|
223
|
+
Json::FromObject({
|
224
|
+
{"targets", Json::FromObject(std::move(weighted_targets))},
|
225
|
+
})},
|
226
|
+
}),
|
227
|
+
});
|
227
228
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_wrr_locality_lb_trace)) {
|
228
229
|
gpr_log(GPR_INFO,
|
229
230
|
"[xds_wrr_locality_lb %p] generated child policy config: %s", this,
|
@@ -346,15 +347,7 @@ class XdsWrrLocalityLbFactory : public LoadBalancingPolicyFactory {
|
|
346
347
|
|
347
348
|
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
348
349
|
ParseLoadBalancingConfig(const Json& json) const override {
|
349
|
-
|
350
|
-
// xds_wrr_locality was mentioned as a policy in the deprecated
|
351
|
-
// loadBalancingPolicy field or in the client API.
|
352
|
-
return absl::InvalidArgumentError(
|
353
|
-
"field:loadBalancingPolicy error:xds_wrr_locality policy requires "
|
354
|
-
"configuration. Please use loadBalancingConfig field of service "
|
355
|
-
"config instead.");
|
356
|
-
}
|
357
|
-
return LoadRefCountedFromJson<XdsWrrLocalityLbConfig>(
|
350
|
+
return LoadFromJson<RefCountedPtr<XdsWrrLocalityLbConfig>>(
|
358
351
|
json, JsonArgs(),
|
359
352
|
"errors validating xds_wrr_locality LB policy config");
|
360
353
|
}
|
@@ -666,35 +666,33 @@ static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
|
|
666
666
|
if (hr->is_balancer) {
|
667
667
|
args = args.Set(GRPC_ARG_DEFAULT_AUTHORITY, hr->host);
|
668
668
|
}
|
669
|
+
grpc_resolved_address address;
|
670
|
+
memset(&address, 0, sizeof(address));
|
669
671
|
switch (hostent->h_addrtype) {
|
670
672
|
case AF_INET6: {
|
671
|
-
|
672
|
-
struct sockaddr_in6
|
673
|
-
|
674
|
-
memcpy(&addr.sin6_addr, hostent->h_addr_list[i],
|
673
|
+
address.len = sizeof(struct sockaddr_in6);
|
674
|
+
auto* addr = reinterpret_cast<struct sockaddr_in6*>(&address.addr);
|
675
|
+
memcpy(&addr->sin6_addr, hostent->h_addr_list[i],
|
675
676
|
sizeof(struct in6_addr));
|
676
|
-
addr
|
677
|
-
addr
|
678
|
-
addresses.emplace_back(&addr, addr_len, args);
|
677
|
+
addr->sin6_family = static_cast<unsigned char>(hostent->h_addrtype);
|
678
|
+
addr->sin6_port = hr->port;
|
679
679
|
char output[INET6_ADDRSTRLEN];
|
680
|
-
ares_inet_ntop(AF_INET6, &addr
|
680
|
+
ares_inet_ntop(AF_INET6, &addr->sin6_addr, output, INET6_ADDRSTRLEN);
|
681
681
|
GRPC_CARES_TRACE_LOG(
|
682
682
|
"request:%p c-ares resolver gets a AF_INET6 result: \n"
|
683
683
|
" addr: %s\n port: %d\n sin6_scope_id: %d\n",
|
684
|
-
r, output, ntohs(hr->port), addr
|
684
|
+
r, output, ntohs(hr->port), addr->sin6_scope_id);
|
685
685
|
break;
|
686
686
|
}
|
687
687
|
case AF_INET: {
|
688
|
-
|
689
|
-
struct sockaddr_in
|
690
|
-
|
691
|
-
memcpy(&addr.sin_addr, hostent->h_addr_list[i],
|
688
|
+
address.len = sizeof(struct sockaddr_in);
|
689
|
+
auto* addr = reinterpret_cast<struct sockaddr_in*>(&address.addr);
|
690
|
+
memcpy(&addr->sin_addr, hostent->h_addr_list[i],
|
692
691
|
sizeof(struct in_addr));
|
693
|
-
addr
|
694
|
-
addr
|
695
|
-
addresses.emplace_back(&addr, addr_len, args);
|
692
|
+
addr->sin_family = static_cast<unsigned char>(hostent->h_addrtype);
|
693
|
+
addr->sin_port = hr->port;
|
696
694
|
char output[INET_ADDRSTRLEN];
|
697
|
-
ares_inet_ntop(AF_INET, &addr
|
695
|
+
ares_inet_ntop(AF_INET, &addr->sin_addr, output, INET_ADDRSTRLEN);
|
698
696
|
GRPC_CARES_TRACE_LOG(
|
699
697
|
"request:%p c-ares resolver gets a AF_INET result: \n"
|
700
698
|
" addr: %s\n port: %d\n",
|
@@ -702,6 +700,7 @@ static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
|
|
702
700
|
break;
|
703
701
|
}
|
704
702
|
}
|
703
|
+
addresses.emplace_back(address, args);
|
705
704
|
}
|
706
705
|
} else {
|
707
706
|
std::string error_msg = absl::StrFormat(
|
@@ -920,7 +919,7 @@ static bool inner_resolve_as_ip_literal_locked(
|
|
920
919
|
false /* log errors */)) {
|
921
920
|
GPR_ASSERT(*addrs == nullptr);
|
922
921
|
*addrs = std::make_unique<ServerAddressList>();
|
923
|
-
(*addrs)->emplace_back(addr
|
922
|
+
(*addrs)->emplace_back(addr, grpc_core::ChannelArgs());
|
924
923
|
return true;
|
925
924
|
}
|
926
925
|
return false;
|
@@ -979,23 +978,26 @@ static bool inner_maybe_resolve_localhost_manually_locked(
|
|
979
978
|
GPR_ASSERT(*addrs == nullptr);
|
980
979
|
*addrs = std::make_unique<grpc_core::ServerAddressList>();
|
981
980
|
uint16_t numeric_port = grpc_strhtons(port->c_str());
|
981
|
+
grpc_resolved_address address;
|
982
982
|
// Append the ipv6 loopback address.
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
ipv6_loopback_addr
|
987
|
-
ipv6_loopback_addr
|
988
|
-
|
989
|
-
|
983
|
+
memset(&address, 0, sizeof(address));
|
984
|
+
auto* ipv6_loopback_addr =
|
985
|
+
reinterpret_cast<struct sockaddr_in6*>(&address.addr);
|
986
|
+
((char*)&ipv6_loopback_addr->sin6_addr)[15] = 1;
|
987
|
+
ipv6_loopback_addr->sin6_family = AF_INET6;
|
988
|
+
ipv6_loopback_addr->sin6_port = numeric_port;
|
989
|
+
address.len = sizeof(struct sockaddr_in6);
|
990
|
+
(*addrs)->emplace_back(address, grpc_core::ChannelArgs());
|
990
991
|
// Append the ipv4 loopback address.
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
((char*)&ipv4_loopback_addr
|
995
|
-
ipv4_loopback_addr
|
996
|
-
ipv4_loopback_addr
|
997
|
-
|
998
|
-
|
992
|
+
memset(&address, 0, sizeof(address));
|
993
|
+
auto* ipv4_loopback_addr =
|
994
|
+
reinterpret_cast<struct sockaddr_in*>(&address.addr);
|
995
|
+
((char*)&ipv4_loopback_addr->sin_addr)[0] = 0x7f;
|
996
|
+
((char*)&ipv4_loopback_addr->sin_addr)[3] = 0x01;
|
997
|
+
ipv4_loopback_addr->sin_family = AF_INET;
|
998
|
+
ipv4_loopback_addr->sin_port = numeric_port;
|
999
|
+
address.len = sizeof(struct sockaddr_in);
|
1000
|
+
(*addrs)->emplace_back(address, grpc_core::ChannelArgs());
|
999
1001
|
// Let the address sorter figure out which one should be tried first.
|
1000
1002
|
grpc_cares_wrapper_address_sorting_sort(r, addrs->get());
|
1001
1003
|
return true;
|
@@ -31,6 +31,7 @@
|
|
31
31
|
#include "absl/container/flat_hash_set.h"
|
32
32
|
#include "absl/status/status.h"
|
33
33
|
#include "absl/status/statusor.h"
|
34
|
+
#include "absl/strings/match.h"
|
34
35
|
#include "absl/strings/str_cat.h"
|
35
36
|
#include "absl/strings/strip.h"
|
36
37
|
#include "absl/types/optional.h"
|
@@ -128,7 +129,7 @@ class EventEngineClientChannelDNSResolver : public PollingResolver {
|
|
128
129
|
void OnBalancerHostnamesResolved(
|
129
130
|
std::string authority,
|
130
131
|
absl::StatusOr<std::vector<EventEngine::ResolvedAddress>> addresses);
|
131
|
-
void OnTXTResolved(absl::StatusOr<std::string
|
132
|
+
void OnTXTResolved(absl::StatusOr<std::vector<std::string>> service_config);
|
132
133
|
// Returns a Result if resolution is complete.
|
133
134
|
// callers must release the lock and call OnRequestComplete if a Result is
|
134
135
|
// returned. This is because OnRequestComplete may Orphan the resolver,
|
@@ -251,7 +252,7 @@ EventEngineClientChannelDNSResolver::EventEngineDNSRequestWrapper::
|
|
251
252
|
resolver_.get(), resolver_->name_to_resolve().c_str());
|
252
253
|
txt_handle_ = event_engine_resolver_->LookupTXT(
|
253
254
|
[self = Ref(DEBUG_LOCATION, "OnTXTResolved")](
|
254
|
-
absl::StatusOr<std::string
|
255
|
+
absl::StatusOr<std::vector<std::string>> service_config) {
|
255
256
|
self->OnTXTResolved(std::move(service_config));
|
256
257
|
},
|
257
258
|
absl::StrCat("_grpc_config.", resolver_->name_to_resolve()),
|
@@ -333,6 +334,10 @@ void EventEngineClientChannelDNSResolver::EventEngineDNSRequestWrapper::
|
|
333
334
|
result = OnResolvedLocked();
|
334
335
|
return;
|
335
336
|
}
|
337
|
+
if (srv_records->empty()) {
|
338
|
+
result = OnResolvedLocked();
|
339
|
+
return;
|
340
|
+
}
|
336
341
|
// Do a subsequent hostname query since SRV records were returned
|
337
342
|
for (auto& srv_record : *srv_records) {
|
338
343
|
GRPC_EVENT_ENGINE_RESOLVER_TRACE(
|
@@ -388,7 +393,7 @@ void EventEngineClientChannelDNSResolver::EventEngineDNSRequestWrapper::
|
|
388
393
|
}
|
389
394
|
|
390
395
|
void EventEngineClientChannelDNSResolver::EventEngineDNSRequestWrapper::
|
391
|
-
OnTXTResolved(absl::StatusOr<std::string
|
396
|
+
OnTXTResolved(absl::StatusOr<std::vector<std::string>> service_config) {
|
392
397
|
ValidationErrors::ScopedField field(&errors_, "txt lookup");
|
393
398
|
absl::optional<Resolver::Result> result;
|
394
399
|
{
|
@@ -400,7 +405,22 @@ void EventEngineClientChannelDNSResolver::EventEngineDNSRequestWrapper::
|
|
400
405
|
errors_.AddError(service_config.status().message());
|
401
406
|
service_config_json_ = service_config.status();
|
402
407
|
} else {
|
403
|
-
|
408
|
+
static constexpr absl::string_view kServiceConfigAttributePrefix =
|
409
|
+
"grpc_config=";
|
410
|
+
auto result = std::find_if(service_config->begin(), service_config->end(),
|
411
|
+
[&](absl::string_view s) {
|
412
|
+
return absl::StartsWith(
|
413
|
+
s, kServiceConfigAttributePrefix);
|
414
|
+
});
|
415
|
+
if (result != service_config->end()) {
|
416
|
+
service_config_json_ =
|
417
|
+
result->substr(kServiceConfigAttributePrefix.size());
|
418
|
+
} else {
|
419
|
+
service_config_json_ = absl::UnavailableError(absl::StrCat(
|
420
|
+
"failed to find attribute prefix: ", kServiceConfigAttributePrefix,
|
421
|
+
" in TXT records"));
|
422
|
+
errors_.AddError(service_config_json_.status().message());
|
423
|
+
}
|
404
424
|
}
|
405
425
|
result = OnResolvedLocked();
|
406
426
|
}
|
@@ -480,6 +500,11 @@ absl::optional<Resolver::Result> EventEngineClientChannelDNSResolver::
|
|
480
500
|
absl::Status status = errors_.status(
|
481
501
|
absl::StatusCode::kUnavailable,
|
482
502
|
absl::StrCat("errors resolving ", resolver_->name_to_resolve()));
|
503
|
+
if (status.ok()) {
|
504
|
+
// If no errors were returned, but the results are empty, we still need to
|
505
|
+
// return an error. Validation errors may be empty.
|
506
|
+
status = absl::UnavailableError("No results from DNS queries");
|
507
|
+
}
|
483
508
|
GRPC_EVENT_ENGINE_RESOLVER_TRACE("%s", status.message().data());
|
484
509
|
result.addresses = status;
|
485
510
|
result.service_config = status;
|
@@ -29,6 +29,7 @@
|
|
29
29
|
#include "absl/strings/strip.h"
|
30
30
|
#include "absl/types/optional.h"
|
31
31
|
|
32
|
+
#include <grpc/support/json.h>
|
32
33
|
#include <grpc/support/log.h>
|
33
34
|
|
34
35
|
#include "src/core/ext/gcp/metadata_query.h"
|
@@ -219,17 +220,17 @@ void GoogleCloud2ProdResolver::StartXdsResolver() {
|
|
219
220
|
std::mt19937 mt(rd());
|
220
221
|
std::uniform_int_distribution<uint64_t> dist(1, UINT64_MAX);
|
221
222
|
Json::Object node = {
|
222
|
-
{"id", absl::StrCat("C2P-", dist(mt))},
|
223
|
+
{"id", Json::FromString(absl::StrCat("C2P-", dist(mt)))},
|
223
224
|
};
|
224
225
|
if (!zone_->empty()) {
|
225
|
-
node["locality"] = Json::
|
226
|
-
{"zone", *zone_},
|
227
|
-
};
|
226
|
+
node["locality"] = Json::FromObject({
|
227
|
+
{"zone", Json::FromString(*zone_)},
|
228
|
+
});
|
228
229
|
};
|
229
230
|
if (*supports_ipv6_) {
|
230
|
-
node["metadata"] = Json::
|
231
|
-
{"TRAFFICDIRECTOR_DIRECTPATH_C2P_IPV6_CAPABLE", true},
|
232
|
-
};
|
231
|
+
node["metadata"] = Json::FromObject({
|
232
|
+
{"TRAFFICDIRECTOR_DIRECTPATH_C2P_IPV6_CAPABLE", Json::FromBool(true)},
|
233
|
+
});
|
233
234
|
}
|
234
235
|
// Allow the TD server uri to be overridden for testing purposes.
|
235
236
|
auto override_server =
|
@@ -238,29 +239,29 @@ void GoogleCloud2ProdResolver::StartXdsResolver() {
|
|
238
239
|
override_server.has_value() && !override_server->empty()
|
239
240
|
? override_server->c_str()
|
240
241
|
: "directpath-pa.googleapis.com";
|
241
|
-
Json xds_server = Json::
|
242
|
-
Json::
|
243
|
-
{"server_uri", server_uri},
|
242
|
+
Json xds_server = Json::FromArray({
|
243
|
+
Json::FromObject({
|
244
|
+
{"server_uri", Json::FromString(server_uri)},
|
244
245
|
{"channel_creds",
|
245
|
-
Json::
|
246
|
-
Json::
|
247
|
-
{"type", "google_default"},
|
248
|
-
},
|
249
|
-
}},
|
250
|
-
{"server_features",
|
251
|
-
|
252
|
-
|
253
|
-
|
246
|
+
Json::FromArray({
|
247
|
+
Json::FromObject({
|
248
|
+
{"type", Json::FromString("google_default")},
|
249
|
+
}),
|
250
|
+
})},
|
251
|
+
{"server_features",
|
252
|
+
Json::FromArray({Json::FromString("ignore_resource_deletion")})},
|
253
|
+
}),
|
254
|
+
});
|
255
|
+
Json bootstrap = Json::FromObject({
|
254
256
|
{"xds_servers", xds_server},
|
255
257
|
{"authorities",
|
256
|
-
Json::
|
257
|
-
{kC2PAuthority,
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
};
|
258
|
+
Json::FromObject({
|
259
|
+
{kC2PAuthority, Json::FromObject({
|
260
|
+
{"xds_servers", std::move(xds_server)},
|
261
|
+
})},
|
262
|
+
})},
|
263
|
+
{"node", Json::FromObject(std::move(node))},
|
264
|
+
});
|
264
265
|
// Inject bootstrap JSON as fallback config.
|
265
266
|
internal::SetXdsFallbackBootstrapConfig(JsonDump(bootstrap).c_str());
|
266
267
|
// Now start xDS resolver.
|