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
@@ -39,23 +39,20 @@
|
|
39
39
|
#include "ares_dns.h"
|
40
40
|
#include "ares_private.h"
|
41
41
|
|
42
|
-
int
|
43
|
-
|
44
|
-
|
45
|
-
|
42
|
+
int ares__parse_into_addrinfo(const unsigned char *abuf,
|
43
|
+
int alen, int cname_only_is_enodata,
|
44
|
+
unsigned short port,
|
45
|
+
struct ares_addrinfo *ai)
|
46
46
|
{
|
47
47
|
unsigned int qdcount, ancount;
|
48
48
|
int status, i, rr_type, rr_class, rr_len, rr_ttl;
|
49
49
|
int got_a = 0, got_aaaa = 0, got_cname = 0;
|
50
50
|
long len;
|
51
51
|
const unsigned char *aptr;
|
52
|
+
char *question_hostname = NULL;
|
52
53
|
char *hostname, *rr_name = NULL, *rr_data;
|
53
54
|
struct ares_addrinfo_cname *cname, *cnames = NULL;
|
54
|
-
struct ares_addrinfo_node *
|
55
|
-
struct sockaddr_in *sin;
|
56
|
-
struct sockaddr_in6 *sin6;
|
57
|
-
|
58
|
-
*question_hostname = NULL;
|
55
|
+
struct ares_addrinfo_node *nodes = NULL;
|
59
56
|
|
60
57
|
/* Give up if abuf doesn't have room for a header. */
|
61
58
|
if (alen < HFIXEDSZ)
|
@@ -70,15 +67,16 @@ int ares__parse_into_addrinfo2(const unsigned char *abuf,
|
|
70
67
|
|
71
68
|
/* Expand the name from the question, and skip past the question. */
|
72
69
|
aptr = abuf + HFIXEDSZ;
|
73
|
-
status = ares__expand_name_for_response(aptr, abuf, alen, question_hostname, &len, 0);
|
70
|
+
status = ares__expand_name_for_response(aptr, abuf, alen, &question_hostname, &len, 0);
|
74
71
|
if (status != ARES_SUCCESS)
|
75
72
|
return status;
|
76
73
|
if (aptr + len + QFIXEDSZ > abuf + alen)
|
77
74
|
{
|
78
|
-
|
75
|
+
status = ARES_EBADRESP;
|
76
|
+
goto failed_stat;
|
79
77
|
}
|
80
78
|
|
81
|
-
hostname =
|
79
|
+
hostname = question_hostname;
|
82
80
|
|
83
81
|
aptr += len + QFIXEDSZ;
|
84
82
|
|
@@ -121,30 +119,9 @@ int ares__parse_into_addrinfo2(const unsigned char *abuf,
|
|
121
119
|
goto failed_stat;
|
122
120
|
} /* LCOV_EXCL_STOP */
|
123
121
|
|
124
|
-
|
125
|
-
if (
|
126
|
-
|
127
|
-
status = ARES_ENOMEM;
|
128
|
-
goto failed_stat;
|
129
|
-
}
|
130
|
-
|
131
|
-
sin = ares_malloc(sizeof(struct sockaddr_in));
|
132
|
-
if (!sin)
|
133
|
-
{
|
134
|
-
status = ARES_ENOMEM;
|
135
|
-
goto failed_stat;
|
136
|
-
}
|
137
|
-
memset(sin, 0, sizeof(struct sockaddr_in));
|
138
|
-
memcpy(&sin->sin_addr.s_addr, aptr, sizeof(struct in_addr));
|
139
|
-
sin->sin_family = AF_INET;
|
140
|
-
|
141
|
-
node->ai_addr = (struct sockaddr *)sin;
|
142
|
-
node->ai_family = AF_INET;
|
143
|
-
node->ai_addrlen = sizeof(struct sockaddr_in);
|
144
|
-
|
145
|
-
node->ai_ttl = rr_ttl;
|
146
|
-
|
147
|
-
status = ARES_SUCCESS;
|
122
|
+
status = ares_append_ai_node(AF_INET, port, rr_ttl, aptr, &nodes);
|
123
|
+
if (status != ARES_SUCCESS)
|
124
|
+
goto failed_stat;
|
148
125
|
}
|
149
126
|
else if (rr_class == C_IN && rr_type == T_AAAA
|
150
127
|
&& rr_len == sizeof(struct ares_in6_addr)
|
@@ -157,31 +134,9 @@ int ares__parse_into_addrinfo2(const unsigned char *abuf,
|
|
157
134
|
goto failed_stat;
|
158
135
|
} /* LCOV_EXCL_STOP */
|
159
136
|
|
160
|
-
|
161
|
-
if (
|
162
|
-
|
163
|
-
status = ARES_ENOMEM;
|
164
|
-
goto failed_stat;
|
165
|
-
}
|
166
|
-
|
167
|
-
sin6 = ares_malloc(sizeof(struct sockaddr_in6));
|
168
|
-
if (!sin6)
|
169
|
-
{
|
170
|
-
status = ARES_ENOMEM;
|
171
|
-
goto failed_stat;
|
172
|
-
}
|
173
|
-
|
174
|
-
memset(sin6, 0, sizeof(struct sockaddr_in6));
|
175
|
-
memcpy(&sin6->sin6_addr.s6_addr, aptr, sizeof(struct ares_in6_addr));
|
176
|
-
sin6->sin6_family = AF_INET6;
|
177
|
-
|
178
|
-
node->ai_addr = (struct sockaddr *)sin6;
|
179
|
-
node->ai_family = AF_INET6;
|
180
|
-
node->ai_addrlen = sizeof(struct sockaddr_in6);
|
181
|
-
|
182
|
-
node->ai_ttl = rr_ttl;
|
183
|
-
|
184
|
-
status = ARES_SUCCESS;
|
137
|
+
status = ares_append_ai_node(AF_INET6, port, rr_ttl, aptr, &nodes);
|
138
|
+
if (status != ARES_SUCCESS)
|
139
|
+
goto failed_stat;
|
185
140
|
}
|
186
141
|
|
187
142
|
if (rr_class == C_IN && rr_type == T_CNAME)
|
@@ -208,10 +163,13 @@ int ares__parse_into_addrinfo2(const unsigned char *abuf,
|
|
208
163
|
cname->ttl = rr_ttl;
|
209
164
|
cname->alias = rr_name;
|
210
165
|
cname->name = rr_data;
|
166
|
+
rr_name = NULL;
|
211
167
|
}
|
212
168
|
else
|
213
169
|
{
|
170
|
+
/* rr_name is only saved for cname */
|
214
171
|
ares_free(rr_name);
|
172
|
+
rr_name = NULL;
|
215
173
|
}
|
216
174
|
|
217
175
|
|
@@ -225,36 +183,47 @@ int ares__parse_into_addrinfo2(const unsigned char *abuf,
|
|
225
183
|
|
226
184
|
if (status == ARES_SUCCESS)
|
227
185
|
{
|
228
|
-
|
229
|
-
if (got_cname)
|
186
|
+
if (!got_a && !got_aaaa)
|
230
187
|
{
|
231
|
-
|
232
|
-
|
188
|
+
if (!got_cname || (got_cname && cname_only_is_enodata))
|
189
|
+
{
|
190
|
+
status = ARES_ENODATA;
|
191
|
+
goto failed_stat;
|
192
|
+
}
|
193
|
+
}
|
194
|
+
|
195
|
+
/* save the question hostname as ai->name */
|
196
|
+
if (ai->name == NULL || strcasecmp(ai->name, question_hostname) != 0)
|
197
|
+
{
|
198
|
+
ares_free(ai->name);
|
199
|
+
ai->name = ares_strdup(question_hostname);
|
200
|
+
if (!ai->name)
|
201
|
+
{
|
202
|
+
status = ARES_ENOMEM;
|
203
|
+
goto failed_stat;
|
204
|
+
}
|
233
205
|
}
|
234
|
-
|
206
|
+
|
207
|
+
if (got_a || got_aaaa)
|
208
|
+
{
|
209
|
+
ares__addrinfo_cat_nodes(&ai->nodes, nodes);
|
210
|
+
nodes = NULL;
|
211
|
+
}
|
212
|
+
|
213
|
+
if (got_cname)
|
235
214
|
{
|
236
|
-
|
237
|
-
|
238
|
-
status = ARES_ENODATA;
|
215
|
+
ares__addrinfo_cat_cnames(&ai->cnames, cnames);
|
216
|
+
cnames = NULL;
|
239
217
|
}
|
240
218
|
}
|
241
219
|
|
220
|
+
ares_free(question_hostname);
|
242
221
|
return status;
|
243
222
|
|
244
223
|
failed_stat:
|
224
|
+
ares_free(question_hostname);
|
245
225
|
ares_free(rr_name);
|
246
226
|
ares__freeaddrinfo_cnames(cnames);
|
247
227
|
ares__freeaddrinfo_nodes(nodes);
|
248
228
|
return status;
|
249
229
|
}
|
250
|
-
|
251
|
-
int ares__parse_into_addrinfo(const unsigned char *abuf,
|
252
|
-
int alen,
|
253
|
-
struct ares_addrinfo *ai)
|
254
|
-
{
|
255
|
-
int status;
|
256
|
-
char *question_hostname;
|
257
|
-
status = ares__parse_into_addrinfo2(abuf, alen, &question_hostname, ai);
|
258
|
-
ares_free(question_hostname);
|
259
|
-
return status;
|
260
|
-
}
|
@@ -42,11 +42,10 @@ int ares__readaddrinfo(FILE *fp,
|
|
42
42
|
char *txtaddr, *txthost, *txtalias;
|
43
43
|
char *aliases[MAX_ALIASES];
|
44
44
|
unsigned int i, alias_count;
|
45
|
-
int status;
|
45
|
+
int status = ARES_SUCCESS;
|
46
46
|
size_t linesize;
|
47
|
-
ares_sockaddr addr;
|
48
47
|
struct ares_addrinfo_cname *cname = NULL, *cnames = NULL;
|
49
|
-
struct ares_addrinfo_node *
|
48
|
+
struct ares_addrinfo_node *nodes = NULL;
|
50
49
|
int match_with_alias, match_with_canonical;
|
51
50
|
int want_cname = hints->ai_flags & ARES_AI_CANONNAME;
|
52
51
|
|
@@ -60,6 +59,12 @@ int ares__readaddrinfo(FILE *fp,
|
|
60
59
|
return ARES_EBADFAMILY;
|
61
60
|
}
|
62
61
|
|
62
|
+
ai->name = ares_strdup(name);
|
63
|
+
if(!ai->name)
|
64
|
+
{
|
65
|
+
status = ARES_ENOMEM;
|
66
|
+
goto fail;
|
67
|
+
}
|
63
68
|
|
64
69
|
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
|
65
70
|
{
|
@@ -163,57 +168,36 @@ int ares__readaddrinfo(FILE *fp,
|
|
163
168
|
continue;
|
164
169
|
}
|
165
170
|
|
166
|
-
/* Zero-out 'addr' struct, as there are members that we may not set, especially
|
167
|
-
* for ipv6. We don't want garbage data */
|
168
|
-
memset(&addr, 0, sizeof(addr));
|
169
|
-
|
170
171
|
/*
|
171
172
|
* Convert address string to network address for the requested families.
|
172
173
|
* Actual address family possible values are AF_INET and AF_INET6 only.
|
173
174
|
*/
|
174
175
|
if ((hints->ai_family == AF_INET) || (hints->ai_family == AF_UNSPEC))
|
175
176
|
{
|
176
|
-
|
177
|
-
if (ares_inet_pton(AF_INET, txtaddr, &
|
177
|
+
struct in_addr addr4;
|
178
|
+
if (ares_inet_pton(AF_INET, txtaddr, &addr4) == 1)
|
178
179
|
{
|
179
|
-
|
180
|
-
if(
|
180
|
+
status = ares_append_ai_node(AF_INET, port, 0, &addr4, &nodes);
|
181
|
+
if (status != ARES_SUCCESS)
|
181
182
|
{
|
182
|
-
goto
|
183
|
+
goto fail;
|
183
184
|
}
|
184
|
-
|
185
|
-
node->ai_family = addr.sa.sa_family = AF_INET;
|
186
|
-
node->ai_addrlen = sizeof(addr.sa4);
|
187
|
-
node->ai_addr = ares_malloc(sizeof(addr.sa4));
|
188
|
-
if (!node->ai_addr)
|
189
|
-
{
|
190
|
-
goto enomem;
|
191
|
-
}
|
192
|
-
memcpy(node->ai_addr, &addr.sa4, sizeof(addr.sa4));
|
193
185
|
}
|
194
186
|
}
|
195
187
|
if ((hints->ai_family == AF_INET6) || (hints->ai_family == AF_UNSPEC))
|
196
188
|
{
|
197
|
-
|
198
|
-
if (ares_inet_pton(AF_INET6, txtaddr, &
|
189
|
+
struct ares_in6_addr addr6;
|
190
|
+
if (ares_inet_pton(AF_INET6, txtaddr, &addr6) == 1)
|
199
191
|
{
|
200
|
-
|
201
|
-
if (
|
202
|
-
{
|
203
|
-
goto enomem;
|
204
|
-
}
|
205
|
-
|
206
|
-
node->ai_family = addr.sa.sa_family = AF_INET6;
|
207
|
-
node->ai_addrlen = sizeof(addr.sa6);
|
208
|
-
node->ai_addr = ares_malloc(sizeof(addr.sa6));
|
209
|
-
if (!node->ai_addr)
|
192
|
+
status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &nodes);
|
193
|
+
if (status != ARES_SUCCESS)
|
210
194
|
{
|
211
|
-
goto
|
195
|
+
goto fail;
|
212
196
|
}
|
213
|
-
memcpy(node->ai_addr, &addr.sa6, sizeof(addr.sa6));
|
214
197
|
}
|
215
198
|
}
|
216
|
-
|
199
|
+
|
200
|
+
if (status != ARES_SUCCESS)
|
217
201
|
/* Ignore line if invalid address string for the requested family. */
|
218
202
|
continue;
|
219
203
|
|
@@ -224,7 +208,8 @@ int ares__readaddrinfo(FILE *fp,
|
|
224
208
|
cname = ares__append_addrinfo_cname(&cnames);
|
225
209
|
if (!cname)
|
226
210
|
{
|
227
|
-
|
211
|
+
status = ARES_ENOMEM;
|
212
|
+
goto fail;
|
228
213
|
}
|
229
214
|
cname->alias = ares_strdup(aliases[i]);
|
230
215
|
cname->name = ares_strdup(txthost);
|
@@ -235,7 +220,8 @@ int ares__readaddrinfo(FILE *fp,
|
|
235
220
|
cname = ares__append_addrinfo_cname(&cnames);
|
236
221
|
if (!cname)
|
237
222
|
{
|
238
|
-
|
223
|
+
status = ARES_ENOMEM;
|
224
|
+
goto fail;
|
239
225
|
}
|
240
226
|
cname->name = ares_strdup(txthost);
|
241
227
|
}
|
@@ -245,20 +231,28 @@ int ares__readaddrinfo(FILE *fp,
|
|
245
231
|
/* Last read failed. */
|
246
232
|
if (status == ARES_ENOMEM)
|
247
233
|
{
|
248
|
-
goto
|
234
|
+
goto fail;
|
235
|
+
}
|
236
|
+
|
237
|
+
/* If no results, its a failure */
|
238
|
+
if (!nodes)
|
239
|
+
{
|
240
|
+
status = ARES_ENOTFOUND;
|
241
|
+
goto fail;
|
249
242
|
}
|
250
243
|
|
251
244
|
/* Free line buffer. */
|
252
245
|
ares_free(line);
|
253
|
-
|
254
246
|
ares__addrinfo_cat_cnames(&ai->cnames, cnames);
|
255
247
|
ares__addrinfo_cat_nodes(&ai->nodes, nodes);
|
256
248
|
|
257
|
-
return
|
249
|
+
return ARES_SUCCESS;
|
258
250
|
|
259
|
-
|
251
|
+
fail:
|
260
252
|
ares_free(line);
|
261
253
|
ares__freeaddrinfo_cnames(cnames);
|
262
254
|
ares__freeaddrinfo_nodes(nodes);
|
263
|
-
|
255
|
+
ares_free(ai->name);
|
256
|
+
ai->name = NULL;
|
257
|
+
return status;
|
264
258
|
}
|
@@ -301,11 +301,15 @@ static int rfc6724_compare(const void *ptr1, const void *ptr2)
|
|
301
301
|
}
|
302
302
|
|
303
303
|
/* Rule 2: Prefer matching scope. */
|
304
|
-
scope_src1 =
|
304
|
+
scope_src1 = ARES_IPV6_ADDR_SCOPE_NODELOCAL;
|
305
|
+
if (a1->has_src_addr)
|
306
|
+
scope_src1 = get_scope(&a1->src_addr.sa);
|
305
307
|
scope_dst1 = get_scope(a1->ai->ai_addr);
|
306
308
|
scope_match1 = (scope_src1 == scope_dst1);
|
307
309
|
|
308
|
-
scope_src2 =
|
310
|
+
scope_src2 = ARES_IPV6_ADDR_SCOPE_NODELOCAL;
|
311
|
+
if (a2->has_src_addr)
|
312
|
+
scope_src2 = get_scope(&a2->src_addr.sa);
|
309
313
|
scope_dst2 = get_scope(a2->ai->ai_addr);
|
310
314
|
scope_match2 = (scope_src2 == scope_dst2);
|
311
315
|
|
@@ -319,11 +323,15 @@ static int rfc6724_compare(const void *ptr1, const void *ptr2)
|
|
319
323
|
/* Rule 4: Prefer home addresses. */
|
320
324
|
|
321
325
|
/* Rule 5: Prefer matching label. */
|
322
|
-
label_src1 =
|
326
|
+
label_src1 = 1;
|
327
|
+
if (a1->has_src_addr)
|
328
|
+
label_src1 = get_label(&a1->src_addr.sa);
|
323
329
|
label_dst1 = get_label(a1->ai->ai_addr);
|
324
330
|
label_match1 = (label_src1 == label_dst1);
|
325
331
|
|
326
|
-
label_src2 =
|
332
|
+
label_src2 = 1;
|
333
|
+
if (a2->has_src_addr)
|
334
|
+
label_src2 = get_label(&a2->src_addr.sa);
|
327
335
|
label_dst2 = get_label(a2->ai->ai_addr);
|
328
336
|
label_match2 = (label_src2 == label_dst2);
|
329
337
|
|
@@ -77,6 +77,14 @@ void ares_free_data(void *dataptr)
|
|
77
77
|
ares_free(ptr->data.srv_reply.host);
|
78
78
|
break;
|
79
79
|
|
80
|
+
case ARES_DATATYPE_URI_REPLY:
|
81
|
+
|
82
|
+
if (ptr->data.uri_reply.next)
|
83
|
+
next_data = ptr->data.uri_reply.next;
|
84
|
+
if (ptr->data.uri_reply.uri)
|
85
|
+
ares_free(ptr->data.uri_reply.uri);
|
86
|
+
break;
|
87
|
+
|
80
88
|
case ARES_DATATYPE_TXT_REPLY:
|
81
89
|
case ARES_DATATYPE_TXT_EXT:
|
82
90
|
|
@@ -174,6 +182,14 @@ void *ares_malloc_data(ares_datatype type)
|
|
174
182
|
ptr->data.srv_reply.port = 0;
|
175
183
|
break;
|
176
184
|
|
185
|
+
case ARES_DATATYPE_URI_REPLY:
|
186
|
+
ptr->data.uri_reply.next = NULL;
|
187
|
+
ptr->data.uri_reply.priority = 0;
|
188
|
+
ptr->data.uri_reply.weight = 0;
|
189
|
+
ptr->data.uri_reply.uri = NULL;
|
190
|
+
ptr->data.uri_reply.ttl = 0;
|
191
|
+
break;
|
192
|
+
|
177
193
|
case ARES_DATATYPE_TXT_EXT:
|
178
194
|
ptr->data.txt_ext.record_start = 0;
|
179
195
|
/* FALLTHROUGH */
|
@@ -1,3 +1,6 @@
|
|
1
|
+
#ifndef __ARES_DATA_H
|
2
|
+
#define __ARES_DATA_H
|
3
|
+
|
1
4
|
|
2
5
|
/* Copyright (C) 2009-2013 by Daniel Stenberg
|
3
6
|
*
|
@@ -23,6 +26,7 @@ typedef enum {
|
|
23
26
|
ARES_DATATYPE_MX_REPLY, /* struct ares_mx_reply - introduced in 1.7.2 */
|
24
27
|
ARES_DATATYPE_NAPTR_REPLY,/* struct ares_naptr_reply - introduced in 1.7.6 */
|
25
28
|
ARES_DATATYPE_SOA_REPLY, /* struct ares_soa_reply - introduced in 1.9.0 */
|
29
|
+
ARES_DATATYPE_URI_REPLY, /* struct ares_uri_reply */
|
26
30
|
#if 0
|
27
31
|
ARES_DATATYPE_ADDR6TTL, /* struct ares_addrttl */
|
28
32
|
ARES_DATATYPE_ADDRTTL, /* struct ares_addr6ttl */
|
@@ -67,8 +71,11 @@ struct ares_data {
|
|
67
71
|
struct ares_naptr_reply naptr_reply;
|
68
72
|
struct ares_soa_reply soa_reply;
|
69
73
|
struct ares_caa_reply caa_reply;
|
74
|
+
struct ares_uri_reply uri_reply;
|
70
75
|
} data;
|
71
76
|
};
|
72
77
|
|
73
78
|
void *ares_malloc_data(ares_datatype type);
|
74
79
|
|
80
|
+
|
81
|
+
#endif /* __ARES_DATA_H */
|
@@ -38,6 +38,8 @@ void ares_destroy_options(struct ares_options *options)
|
|
38
38
|
ares_free(options->lookups);
|
39
39
|
if(options->resolvconf_path)
|
40
40
|
ares_free(options->resolvconf_path);
|
41
|
+
if(options->hosts_path)
|
42
|
+
ares_free(options->hosts_path);
|
41
43
|
}
|
42
44
|
|
43
45
|
void ares_destroy(ares_channel channel)
|
@@ -90,6 +92,12 @@ void ares_destroy(ares_channel channel)
|
|
90
92
|
if (channel->resolvconf_path)
|
91
93
|
ares_free(channel->resolvconf_path);
|
92
94
|
|
95
|
+
if (channel->hosts_path)
|
96
|
+
ares_free(channel->hosts_path);
|
97
|
+
|
98
|
+
if (channel->rand_state)
|
99
|
+
ares__destroy_rand_state(channel->rand_state);
|
100
|
+
|
93
101
|
ares_free(channel);
|
94
102
|
}
|
95
103
|
|
@@ -59,10 +59,21 @@ static int ares__isprint(int ch)
|
|
59
59
|
return 0;
|
60
60
|
}
|
61
61
|
|
62
|
-
/* Character set allowed by hostnames
|
62
|
+
/* Character set allowed by hostnames. This is to include the normal
|
63
|
+
* domain name character set plus:
|
64
|
+
* - underscores which are used in SRV records.
|
65
|
+
* - Forward slashes such as are used for classless in-addr.arpa
|
66
|
+
* delegation (CNAMEs)
|
67
|
+
* - Asterisks may be used for wildcard domains in CNAMEs as seen in the
|
68
|
+
* real world.
|
69
|
+
* While RFC 2181 section 11 does state not to do validation,
|
70
|
+
* that applies to servers, not clients. Vulnerabilities have been
|
71
|
+
* reported when this validation is not performed. Security is more
|
72
|
+
* important than edge-case compatibility (which is probably invalid
|
73
|
+
* anyhow). */
|
63
74
|
static int is_hostnamech(int ch)
|
64
75
|
{
|
65
|
-
/* [A-Za-z0-9
|
76
|
+
/* [A-Za-z0-9-*._/]
|
66
77
|
* Don't use isalnum() as it is locale-specific
|
67
78
|
*/
|
68
79
|
if (ch >= 'A' && ch <= 'Z')
|
@@ -71,7 +82,7 @@ static int is_hostnamech(int ch)
|
|
71
82
|
return 1;
|
72
83
|
if (ch >= '0' && ch <= '9')
|
73
84
|
return 1;
|
74
|
-
if (ch == '-' || ch == '.')
|
85
|
+
if (ch == '-' || ch == '.' || ch == '_' || ch == '/' || ch == '*')
|
75
86
|
return 1;
|
76
87
|
|
77
88
|
return 0;
|
@@ -168,9 +179,9 @@ int ares__expand_name_validated(const unsigned char *encoded,
|
|
168
179
|
if (!ares__isprint(*p) && !(name_len == 1 && *p == 0))
|
169
180
|
{
|
170
181
|
*q++ = '\\';
|
171
|
-
*q++ = '0' + *p / 100;
|
172
|
-
*q++ = '0' + (*p % 100) / 10;
|
173
|
-
*q++ = '0' + (*p % 10);
|
182
|
+
*q++ = (char)('0' + *p / 100);
|
183
|
+
*q++ = (char)('0' + (*p % 100) / 10);
|
184
|
+
*q++ = (char)('0' + (*p % 10));
|
174
185
|
}
|
175
186
|
else if (is_reservedch(*p))
|
176
187
|
{
|