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
@@ -72,6 +72,7 @@ struct host_query
|
|
72
72
|
struct ares_addrinfo *ai; /* store results between lookups */
|
73
73
|
int remaining; /* number of DNS answers waiting for */
|
74
74
|
int next_domain; /* next search domain to try */
|
75
|
+
int nodata_cnt; /* Track nodata responses to possibly override final result */
|
75
76
|
};
|
76
77
|
|
77
78
|
static const struct ares_addrinfo_hints default_hints = {
|
@@ -101,13 +102,15 @@ static const struct ares_addrinfo_node empty_addrinfo_node = {
|
|
101
102
|
|
102
103
|
static const struct ares_addrinfo empty_addrinfo = {
|
103
104
|
NULL, /* cnames */
|
104
|
-
NULL
|
105
|
+
NULL, /* nodes */
|
106
|
+
NULL /* name */
|
105
107
|
};
|
106
108
|
|
107
109
|
/* forward declarations */
|
108
110
|
static void host_callback(void *arg, int status, int timeouts,
|
109
111
|
unsigned char *abuf, int alen);
|
110
112
|
static int as_is_first(const struct host_query *hquery);
|
113
|
+
static int as_is_only(const struct host_query* hquery);
|
111
114
|
static int next_dns_lookup(struct host_query *hquery);
|
112
115
|
|
113
116
|
struct ares_addrinfo_cname *ares__malloc_addrinfo_cname()
|
@@ -281,9 +284,7 @@ static int fake_addrinfo(const char *name,
|
|
281
284
|
void *arg)
|
282
285
|
{
|
283
286
|
struct ares_addrinfo_cname *cname;
|
284
|
-
|
285
|
-
ares_sockaddr addr;
|
286
|
-
size_t addrlen;
|
287
|
+
int status = ARES_SUCCESS;
|
287
288
|
int result = 0;
|
288
289
|
int family = hints->ai_family;
|
289
290
|
if (family == AF_INET || family == AF_INET6 || family == AF_UNSPEC)
|
@@ -304,62 +305,45 @@ static int fake_addrinfo(const char *name,
|
|
304
305
|
}
|
305
306
|
}
|
306
307
|
|
307
|
-
memset(&addr, 0, sizeof(addr));
|
308
|
-
|
309
308
|
/* if we don't have 3 dots, it is illegal
|
310
309
|
* (although inet_pton doesn't think so).
|
311
310
|
*/
|
312
311
|
if (numdots != 3 || !valid)
|
313
312
|
result = 0;
|
314
313
|
else
|
315
|
-
result =
|
316
|
-
(ares_inet_pton(AF_INET, name, &addr.sa4.sin_addr) < 1 ? 0 : 1);
|
317
|
-
|
318
|
-
if (result)
|
319
314
|
{
|
320
|
-
|
321
|
-
|
322
|
-
|
315
|
+
struct in_addr addr4;
|
316
|
+
result = ares_inet_pton(AF_INET, name, &addr4) < 1 ? 0 : 1;
|
317
|
+
if (result)
|
318
|
+
{
|
319
|
+
status = ares_append_ai_node(AF_INET, port, 0, &addr4, &ai->nodes);
|
320
|
+
if (status != ARES_SUCCESS)
|
321
|
+
{
|
322
|
+
callback(arg, status, 0, NULL);
|
323
|
+
return 1;
|
324
|
+
}
|
325
|
+
}
|
323
326
|
}
|
324
327
|
}
|
325
328
|
|
326
|
-
if (family == AF_INET6 || family == AF_UNSPEC)
|
329
|
+
if (!result && (family == AF_INET6 || family == AF_UNSPEC))
|
327
330
|
{
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
331
|
+
struct ares_in6_addr addr6;
|
332
|
+
result = ares_inet_pton(AF_INET6, name, &addr6) < 1 ? 0 : 1;
|
333
|
+
if (result)
|
334
|
+
{
|
335
|
+
status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &ai->nodes);
|
336
|
+
if (status != ARES_SUCCESS)
|
337
|
+
{
|
338
|
+
callback(arg, status, 0, NULL);
|
339
|
+
return 1;
|
340
|
+
}
|
341
|
+
}
|
333
342
|
}
|
334
343
|
|
335
344
|
if (!result)
|
336
345
|
return 0;
|
337
346
|
|
338
|
-
node = ares__malloc_addrinfo_node();
|
339
|
-
if (!node)
|
340
|
-
{
|
341
|
-
ares_freeaddrinfo(ai);
|
342
|
-
callback(arg, ARES_ENOMEM, 0, NULL);
|
343
|
-
return 1;
|
344
|
-
}
|
345
|
-
|
346
|
-
ai->nodes = node;
|
347
|
-
|
348
|
-
node->ai_addr = ares_malloc(addrlen);
|
349
|
-
if (!node->ai_addr)
|
350
|
-
{
|
351
|
-
ares_freeaddrinfo(ai);
|
352
|
-
callback(arg, ARES_ENOMEM, 0, NULL);
|
353
|
-
return 1;
|
354
|
-
}
|
355
|
-
|
356
|
-
node->ai_addrlen = (unsigned int)addrlen;
|
357
|
-
node->ai_family = addr.sa.sa_family;
|
358
|
-
if (addr.sa.sa_family == AF_INET)
|
359
|
-
memcpy(node->ai_addr, &addr.sa4, sizeof(addr.sa4));
|
360
|
-
else
|
361
|
-
memcpy(node->ai_addr, &addr.sa6, sizeof(addr.sa6));
|
362
|
-
|
363
347
|
if (hints->ai_flags & ARES_AI_CANONNAME)
|
364
348
|
{
|
365
349
|
cname = ares__append_addrinfo_cname(&ai->cnames);
|
@@ -380,8 +364,8 @@ static int fake_addrinfo(const char *name,
|
|
380
364
|
}
|
381
365
|
}
|
382
366
|
|
383
|
-
|
384
|
-
|
367
|
+
ai->nodes->ai_socktype = hints->ai_socktype;
|
368
|
+
ai->nodes->ai_protocol = hints->ai_protocol;
|
385
369
|
|
386
370
|
callback(arg, ARES_SUCCESS, 0, ai);
|
387
371
|
return 1;
|
@@ -400,19 +384,11 @@ static void end_hquery(struct host_query *hquery, int status)
|
|
400
384
|
hquery->ai->nodes = sentinel.ai_next;
|
401
385
|
}
|
402
386
|
next = hquery->ai->nodes;
|
403
|
-
|
387
|
+
|
404
388
|
while (next)
|
405
389
|
{
|
406
390
|
next->ai_socktype = hquery->hints.ai_socktype;
|
407
391
|
next->ai_protocol = hquery->hints.ai_protocol;
|
408
|
-
if (next->ai_family == AF_INET)
|
409
|
-
{
|
410
|
-
(CARES_INADDR_CAST(struct sockaddr_in *, next->ai_addr))->sin_port = htons(hquery->port);
|
411
|
-
}
|
412
|
-
else
|
413
|
-
{
|
414
|
-
(CARES_INADDR_CAST(struct sockaddr_in6 *, next->ai_addr))->sin6_port = htons(hquery->port);
|
415
|
-
}
|
416
392
|
next = next->ai_next;
|
417
393
|
}
|
418
394
|
}
|
@@ -428,16 +404,46 @@ static void end_hquery(struct host_query *hquery, int status)
|
|
428
404
|
ares_free(hquery);
|
429
405
|
}
|
430
406
|
|
407
|
+
static int is_localhost(const char *name)
|
408
|
+
{
|
409
|
+
/* RFC6761 6.3 says : The domain "localhost." and any names falling within ".localhost." */
|
410
|
+
size_t len;
|
411
|
+
|
412
|
+
if (name == NULL)
|
413
|
+
return 0;
|
414
|
+
|
415
|
+
if (strcmp(name, "localhost") == 0)
|
416
|
+
return 1;
|
417
|
+
|
418
|
+
len = strlen(name);
|
419
|
+
if (len < 10 /* strlen(".localhost") */)
|
420
|
+
return 0;
|
421
|
+
|
422
|
+
if (strcmp(name + (len - 10 /* strlen(".localhost") */), ".localhost") == 0)
|
423
|
+
return 1;
|
424
|
+
|
425
|
+
return 0;
|
426
|
+
}
|
427
|
+
|
431
428
|
static int file_lookup(struct host_query *hquery)
|
432
429
|
{
|
433
430
|
FILE *fp;
|
434
431
|
int error;
|
435
432
|
int status;
|
436
|
-
|
433
|
+
char *path_hosts = NULL;
|
437
434
|
|
438
435
|
if (hquery->hints.ai_flags & ARES_AI_ENVHOSTS)
|
439
436
|
{
|
440
|
-
path_hosts = getenv("CARES_HOSTS");
|
437
|
+
path_hosts = ares_strdup(getenv("CARES_HOSTS"));
|
438
|
+
if (!path_hosts)
|
439
|
+
return ARES_ENOMEM;
|
440
|
+
}
|
441
|
+
|
442
|
+
if (hquery->channel->hosts_path)
|
443
|
+
{
|
444
|
+
path_hosts = ares_strdup(hquery->channel->hosts_path);
|
445
|
+
if (!path_hosts)
|
446
|
+
return ARES_ENOMEM;
|
441
447
|
}
|
442
448
|
|
443
449
|
if (!path_hosts)
|
@@ -471,15 +477,15 @@ static int file_lookup(struct host_query *hquery)
|
|
471
477
|
return ARES_ENOTFOUND;
|
472
478
|
|
473
479
|
strcat(PATH_HOSTS, WIN_PATH_HOSTS);
|
474
|
-
path_hosts = PATH_HOSTS;
|
475
|
-
|
476
480
|
#elif defined(WATT32)
|
477
481
|
const char *PATH_HOSTS = _w32_GetHostsFile();
|
478
482
|
|
479
483
|
if (!PATH_HOSTS)
|
480
484
|
return ARES_ENOTFOUND;
|
481
485
|
#endif
|
482
|
-
path_hosts = PATH_HOSTS;
|
486
|
+
path_hosts = ares_strdup(PATH_HOSTS);
|
487
|
+
if (!path_hosts)
|
488
|
+
return ARES_ENOMEM;
|
483
489
|
}
|
484
490
|
|
485
491
|
fp = fopen(path_hosts, "r");
|
@@ -490,16 +496,34 @@ static int file_lookup(struct host_query *hquery)
|
|
490
496
|
{
|
491
497
|
case ENOENT:
|
492
498
|
case ESRCH:
|
493
|
-
|
499
|
+
status = ARES_ENOTFOUND;
|
500
|
+
break;
|
494
501
|
default:
|
495
502
|
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error,
|
496
503
|
strerror(error)));
|
497
504
|
DEBUGF(fprintf(stderr, "Error opening file: %s\n", path_hosts));
|
498
|
-
|
505
|
+
status = ARES_EFILE;
|
506
|
+
break;
|
499
507
|
}
|
500
508
|
}
|
501
|
-
|
502
|
-
|
509
|
+
else
|
510
|
+
{
|
511
|
+
status = ares__readaddrinfo(fp, hquery->name, hquery->port, &hquery->hints, hquery->ai);
|
512
|
+
fclose(fp);
|
513
|
+
}
|
514
|
+
ares_free(path_hosts);
|
515
|
+
|
516
|
+
/* RFC6761 section 6.3 #3 states that "Name resolution APIs and libraries
|
517
|
+
* SHOULD recognize localhost names as special and SHOULD always return the
|
518
|
+
* IP loopback address for address queries".
|
519
|
+
* We will also ignore ALL errors when trying to resolve localhost, such
|
520
|
+
* as permissions errors reading /etc/hosts or a malformed /etc/hosts */
|
521
|
+
if (status != ARES_SUCCESS && is_localhost(hquery->name))
|
522
|
+
{
|
523
|
+
return ares__addrinfo_localhost(hquery->name, hquery->port,
|
524
|
+
&hquery->hints, hquery->ai);
|
525
|
+
}
|
526
|
+
|
503
527
|
return status;
|
504
528
|
}
|
505
529
|
|
@@ -508,9 +532,16 @@ static void next_lookup(struct host_query *hquery, int status)
|
|
508
532
|
switch (*hquery->remaining_lookups)
|
509
533
|
{
|
510
534
|
case 'b':
|
511
|
-
/*
|
512
|
-
|
513
|
-
|
535
|
+
/* RFC6761 section 6.3 #3 says "Name resolution APIs SHOULD NOT send
|
536
|
+
* queries for localhost names to their configured caching DNS
|
537
|
+
* server(s)." */
|
538
|
+
if (!is_localhost(hquery->name))
|
539
|
+
{
|
540
|
+
/* DNS lookup */
|
541
|
+
if (next_dns_lookup(hquery))
|
542
|
+
break;
|
543
|
+
}
|
544
|
+
|
514
545
|
hquery->remaining_lookups++;
|
515
546
|
next_lookup(hquery, status);
|
516
547
|
break;
|
@@ -542,24 +573,36 @@ static void host_callback(void *arg, int status, int timeouts,
|
|
542
573
|
|
543
574
|
if (status == ARES_SUCCESS)
|
544
575
|
{
|
545
|
-
addinfostatus = ares__parse_into_addrinfo(abuf, alen, hquery->ai);
|
576
|
+
addinfostatus = ares__parse_into_addrinfo(abuf, alen, 1, hquery->port, hquery->ai);
|
546
577
|
}
|
547
578
|
|
548
579
|
if (!hquery->remaining)
|
549
580
|
{
|
550
|
-
if (addinfostatus != ARES_SUCCESS)
|
581
|
+
if (addinfostatus != ARES_SUCCESS && addinfostatus != ARES_ENODATA)
|
551
582
|
{
|
552
583
|
/* error in parsing result e.g. no memory */
|
553
|
-
|
584
|
+
if (addinfostatus == ARES_EBADRESP && hquery->ai->nodes)
|
585
|
+
{
|
586
|
+
/* We got a bad response from server, but at least one query
|
587
|
+
* ended with ARES_SUCCESS */
|
588
|
+
end_hquery(hquery, ARES_SUCCESS);
|
589
|
+
}
|
590
|
+
else
|
591
|
+
{
|
592
|
+
end_hquery(hquery, addinfostatus);
|
593
|
+
}
|
554
594
|
}
|
555
595
|
else if (hquery->ai->nodes)
|
556
596
|
{
|
557
597
|
/* at least one query ended with ARES_SUCCESS */
|
558
598
|
end_hquery(hquery, ARES_SUCCESS);
|
559
599
|
}
|
560
|
-
else if (status == ARES_ENOTFOUND
|
600
|
+
else if (status == ARES_ENOTFOUND || status == ARES_ENODATA ||
|
601
|
+
addinfostatus == ARES_ENODATA)
|
561
602
|
{
|
562
|
-
|
603
|
+
if (status == ARES_ENODATA || addinfostatus == ARES_ENODATA)
|
604
|
+
hquery->nodata_cnt++;
|
605
|
+
next_lookup(hquery, hquery->nodata_cnt?ARES_ENODATA:status);
|
563
606
|
}
|
564
607
|
else if (status == ARES_EDESTRUCTION)
|
565
608
|
{
|
@@ -586,6 +629,8 @@ void ares_getaddrinfo(ares_channel channel,
|
|
586
629
|
unsigned short port = 0;
|
587
630
|
int family;
|
588
631
|
struct ares_addrinfo *ai;
|
632
|
+
char *alias_name = NULL;
|
633
|
+
int status;
|
589
634
|
|
590
635
|
if (!hints)
|
591
636
|
{
|
@@ -610,28 +655,47 @@ void ares_getaddrinfo(ares_channel channel,
|
|
610
655
|
return;
|
611
656
|
}
|
612
657
|
|
658
|
+
/* perform HOSTALIAS resolution (technically this function does some other
|
659
|
+
* things we are going to ignore) */
|
660
|
+
status = ares__single_domain(channel, name, &alias_name);
|
661
|
+
if (status != ARES_SUCCESS) {
|
662
|
+
callback(arg, status, 0, NULL);
|
663
|
+
return;
|
664
|
+
}
|
665
|
+
|
666
|
+
if (alias_name)
|
667
|
+
name = alias_name;
|
668
|
+
|
613
669
|
if (service)
|
614
670
|
{
|
615
671
|
if (hints->ai_flags & ARES_AI_NUMERICSERV)
|
616
672
|
{
|
617
|
-
|
618
|
-
|
673
|
+
unsigned long val;
|
674
|
+
errno = 0;
|
675
|
+
val = strtoul(service, NULL, 0);
|
676
|
+
if ((val == 0 && errno != 0) || val > 65535)
|
619
677
|
{
|
678
|
+
ares_free(alias_name);
|
620
679
|
callback(arg, ARES_ESERVICE, 0, NULL);
|
621
680
|
return;
|
622
681
|
}
|
682
|
+
port = (unsigned short)val;
|
623
683
|
}
|
624
684
|
else
|
625
685
|
{
|
626
686
|
port = lookup_service(service, 0);
|
627
687
|
if (!port)
|
628
688
|
{
|
629
|
-
|
630
|
-
|
689
|
+
unsigned long val;
|
690
|
+
errno = 0;
|
691
|
+
val = strtoul(service, NULL, 0);
|
692
|
+
if ((val == 0 && errno != 0) || val > 65535)
|
631
693
|
{
|
694
|
+
ares_free(alias_name);
|
632
695
|
callback(arg, ARES_ESERVICE, 0, NULL);
|
633
696
|
return;
|
634
697
|
}
|
698
|
+
port = (unsigned short)val;
|
635
699
|
}
|
636
700
|
}
|
637
701
|
}
|
@@ -639,12 +703,14 @@ void ares_getaddrinfo(ares_channel channel,
|
|
639
703
|
ai = ares__malloc_addrinfo();
|
640
704
|
if (!ai)
|
641
705
|
{
|
706
|
+
ares_free(alias_name);
|
642
707
|
callback(arg, ARES_ENOMEM, 0, NULL);
|
643
708
|
return;
|
644
709
|
}
|
645
710
|
|
646
711
|
if (fake_addrinfo(name, port, hints, ai, callback, arg))
|
647
712
|
{
|
713
|
+
ares_free(alias_name);
|
648
714
|
return;
|
649
715
|
}
|
650
716
|
|
@@ -652,12 +718,14 @@ void ares_getaddrinfo(ares_channel channel,
|
|
652
718
|
hquery = ares_malloc(sizeof(struct host_query));
|
653
719
|
if (!hquery)
|
654
720
|
{
|
721
|
+
ares_free(alias_name);
|
655
722
|
ares_freeaddrinfo(ai);
|
656
723
|
callback(arg, ARES_ENOMEM, 0, NULL);
|
657
724
|
return;
|
658
725
|
}
|
659
726
|
|
660
727
|
hquery->name = ares_strdup(name);
|
728
|
+
ares_free(alias_name);
|
661
729
|
if (!hquery->name)
|
662
730
|
{
|
663
731
|
ares_free(hquery);
|
@@ -677,6 +745,7 @@ void ares_getaddrinfo(ares_channel channel,
|
|
677
745
|
hquery->ai = ai;
|
678
746
|
hquery->next_domain = -1;
|
679
747
|
hquery->remaining = 0;
|
748
|
+
hquery->nodata_cnt = 0;
|
680
749
|
|
681
750
|
/* Start performing lookups according to channel->lookups. */
|
682
751
|
next_lookup(hquery, ARES_ECONNREFUSED /* initial error code */);
|
@@ -707,7 +776,7 @@ static int next_dns_lookup(struct host_query *hquery)
|
|
707
776
|
hquery->next_domain++;
|
708
777
|
}
|
709
778
|
|
710
|
-
if (!s && hquery->next_domain < hquery->channel->ndomains)
|
779
|
+
if (!s && hquery->next_domain < hquery->channel->ndomains && !as_is_only(hquery))
|
711
780
|
{
|
712
781
|
status = ares__cat_domain(
|
713
782
|
hquery->name,
|
@@ -755,7 +824,7 @@ static int as_is_first(const struct host_query* hquery)
|
|
755
824
|
{
|
756
825
|
char* p;
|
757
826
|
int ndots = 0;
|
758
|
-
size_t nname = strlen(hquery->name);
|
827
|
+
size_t nname = hquery->name?strlen(hquery->name):0;
|
759
828
|
for (p = hquery->name; *p; p++)
|
760
829
|
{
|
761
830
|
if (*p == '.')
|
@@ -770,3 +839,12 @@ static int as_is_first(const struct host_query* hquery)
|
|
770
839
|
}
|
771
840
|
return ndots >= hquery->channel->ndots;
|
772
841
|
}
|
842
|
+
|
843
|
+
static int as_is_only(const struct host_query* hquery)
|
844
|
+
{
|
845
|
+
size_t nname = hquery->name?strlen(hquery->name):0;
|
846
|
+
if (nname && hquery->name[nname-1] == '.')
|
847
|
+
return 1;
|
848
|
+
return 0;
|
849
|
+
}
|
850
|
+
|