grpc 1.55.3 → 1.56.0.pre3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +100 -70
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/json.h +218 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +82 -98
- data/src/core/ext/filters/client_channel/client_channel.h +4 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
- data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
- data/src/core/ext/filters/client_channel/config_selector.h +9 -24
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
- data/src/core/ext/filters/client_channel/subchannel.h +3 -43
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +543 -567
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +9 -150
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +32 -46
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +5 -18
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
- data/src/core/ext/transport/chttp2/transport/parsing.cc +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -9
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
- data/src/core/ext/xds/xds_api.cc +9 -6
- data/src/core/ext/xds/xds_api.h +3 -2
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
- data/src/core/ext/xds/xds_client.cc +5 -4
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_cluster.cc +20 -19
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
- data/src/core/ext/xds/xds_common_types.cc +3 -1
- data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
- data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
- data/src/core/ext/xds/xds_http_filters.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
- data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_route_config.cc +40 -3
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
- data/src/core/lib/avl/avl.h +5 -0
- data/src/core/lib/backoff/random_early_detection.h +0 -5
- data/src/core/lib/channel/channel_args.cc +80 -22
- data/src/core/lib/channel/channel_args.h +34 -1
- data/src/core/lib/channel/channel_trace.cc +16 -12
- data/src/core/lib/channel/channelz.cc +159 -132
- data/src/core/lib/channel/channelz.h +42 -35
- data/src/core/lib/channel/channelz_registry.cc +23 -20
- data/src/core/lib/channel/connected_channel.cc +17 -6
- data/src/core/lib/channel/promise_based_filter.cc +0 -4
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -5
- data/src/core/lib/config/config_vars.cc +20 -18
- data/src/core/lib/config/config_vars.h +4 -4
- data/src/core/lib/config/load_config.cc +13 -0
- data/src/core/lib/config/load_config.h +6 -0
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/stats_data.h +1 -1
- data/src/core/lib/debug/trace.cc +24 -55
- data/src/core/lib/debug/trace.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/default_event_engine.cc +13 -1
- data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
- data/src/core/lib/event_engine/poller.h +2 -2
- data/src/core/lib/event_engine/posix.h +4 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -33
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -11
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/shim.cc +7 -1
- data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
- data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/windows/iocp.cc +4 -3
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/win_socket.h +4 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
- data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
- data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +38 -7
- data/src/core/lib/experiments/config.h +16 -0
- data/src/core/lib/experiments/experiments.cc +67 -20
- data/src/core/lib/experiments/experiments.h +27 -21
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gprpp/crash.cc +10 -0
- data/src/core/lib/gprpp/crash.h +3 -0
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +29 -6
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
- data/src/core/lib/iomgr/ev_apple.cc +12 -12
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
- data/src/core/lib/iomgr/iocp_windows.cc +24 -3
- data/src/core/lib/iomgr/iocp_windows.h +11 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
- data/src/core/lib/iomgr/socket_windows.cc +61 -7
- data/src/core/lib/iomgr/socket_windows.h +9 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +156 -140
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
- data/src/core/lib/json/json.h +2 -166
- data/src/core/lib/json/json_object_loader.cc +8 -9
- data/src/core/lib/json/json_object_loader.h +25 -18
- data/src/core/lib/json/json_reader.cc +13 -6
- data/src/core/lib/json/json_util.cc +6 -11
- data/src/core/lib/json/json_writer.cc +7 -8
- data/src/core/lib/load_balancing/lb_policy.h +13 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/promise/activity.cc +5 -0
- data/src/core/lib/promise/activity.h +10 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/party.cc +31 -13
- data/src/core/lib/promise/party.h +11 -2
- data/src/core/lib/promise/pipe.h +9 -2
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/sleep.cc +2 -1
- data/src/core/lib/resolver/server_address.cc +0 -8
- data/src/core/lib/resolver/server_address.h +0 -6
- data/src/core/lib/resource_quota/memory_quota.cc +7 -7
- data/src/core/lib/resource_quota/memory_quota.h +1 -2
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
- data/src/core/lib/security/authorization/rbac_policy.h +19 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
- data/src/core/lib/security/util/json_util.cc +1 -0
- data/src/core/lib/service_config/service_config_call_data.h +49 -20
- data/src/core/lib/service_config/service_config_impl.cc +2 -1
- data/src/core/lib/surface/call.cc +38 -23
- data/src/core/lib/surface/completion_queue.cc +6 -2
- data/src/core/lib/surface/validate_metadata.cc +22 -37
- data/src/core/lib/surface/validate_metadata.h +3 -13
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +15 -12
- data/src/core/lib/transport/batch_builder.h +39 -35
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/ruby/ext/grpc/extconf.rb +8 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- metadata +50 -16
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +0 -176
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +0 -325
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -39,7 +39,7 @@
|
|
39
39
|
#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
|
40
40
|
defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
|
41
41
|
defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
|
42
|
-
defined(__QNXNTO__) || defined(__MVS__)
|
42
|
+
defined(__QNXNTO__) || defined(__MVS__) || defined(__HAIKU__)
|
43
43
|
#include <sys/select.h>
|
44
44
|
#endif
|
45
45
|
#if (defined(NETWARE) && !defined(__NOVELL_LIBC__))
|
@@ -63,6 +63,13 @@
|
|
63
63
|
# include <windows.h>
|
64
64
|
# include <winsock2.h>
|
65
65
|
# include <ws2tcpip.h>
|
66
|
+
/* To aid with linking against a static c-ares build, lets tell the microsoft
|
67
|
+
* compiler to pull in needed dependencies */
|
68
|
+
# ifdef _MSC_VER
|
69
|
+
# pragma comment(lib, "ws2_32")
|
70
|
+
# pragma comment(lib, "advapi32")
|
71
|
+
# pragma comment(lib, "iphlpapi")
|
72
|
+
# endif
|
66
73
|
#else
|
67
74
|
# include <sys/socket.h>
|
68
75
|
# include <netinet/in.h>
|
@@ -168,6 +175,7 @@ extern "C" {
|
|
168
175
|
#define ARES_OPT_EDNSPSZ (1 << 15)
|
169
176
|
#define ARES_OPT_NOROTATE (1 << 16)
|
170
177
|
#define ARES_OPT_RESOLVCONF (1 << 17)
|
178
|
+
#define ARES_OPT_HOSTS_FILE (1 << 18)
|
171
179
|
|
172
180
|
/* Nameinfo flag values */
|
173
181
|
#define ARES_NI_NOFQDN (1 << 0)
|
@@ -277,6 +285,7 @@ struct ares_options {
|
|
277
285
|
int nsort;
|
278
286
|
int ednspsz;
|
279
287
|
char *resolvconf_path;
|
288
|
+
char *hosts_path;
|
280
289
|
};
|
281
290
|
|
282
291
|
struct hostent;
|
@@ -588,6 +597,14 @@ struct ares_soa_reply {
|
|
588
597
|
unsigned int minttl;
|
589
598
|
};
|
590
599
|
|
600
|
+
struct ares_uri_reply {
|
601
|
+
struct ares_uri_reply *next;
|
602
|
+
unsigned short priority;
|
603
|
+
unsigned short weight;
|
604
|
+
char *uri;
|
605
|
+
int ttl;
|
606
|
+
};
|
607
|
+
|
591
608
|
/*
|
592
609
|
* Similar to addrinfo, but with extra ttl and missing canonname.
|
593
610
|
*/
|
@@ -617,6 +634,7 @@ struct ares_addrinfo_cname {
|
|
617
634
|
struct ares_addrinfo {
|
618
635
|
struct ares_addrinfo_cname *cnames;
|
619
636
|
struct ares_addrinfo_node *nodes;
|
637
|
+
char *name;
|
620
638
|
};
|
621
639
|
|
622
640
|
struct ares_addrinfo_hints {
|
@@ -685,6 +703,10 @@ CARES_EXTERN int ares_parse_soa_reply(const unsigned char* abuf,
|
|
685
703
|
int alen,
|
686
704
|
struct ares_soa_reply** soa_out);
|
687
705
|
|
706
|
+
CARES_EXTERN int ares_parse_uri_reply(const unsigned char* abuf,
|
707
|
+
int alen,
|
708
|
+
struct ares_uri_reply** uri_out);
|
709
|
+
|
688
710
|
CARES_EXTERN void ares_free_string(void *str);
|
689
711
|
|
690
712
|
CARES_EXTERN void ares_free_hostent(struct hostent *host);
|
@@ -2,10 +2,12 @@
|
|
2
2
|
#ifndef ARES_NAMESER_H
|
3
3
|
#define ARES_NAMESER_H
|
4
4
|
|
5
|
-
#
|
5
|
+
#include "ares_build.h"
|
6
|
+
|
7
|
+
#ifdef CARES_HAVE_ARPA_NAMESER_H
|
6
8
|
# include <arpa/nameser.h>
|
7
9
|
#endif
|
8
|
-
#ifdef
|
10
|
+
#ifdef CARES_HAVE_ARPA_NAMESER_COMPAT_H
|
9
11
|
# include <arpa/nameser_compat.h>
|
10
12
|
#endif
|
11
13
|
|
@@ -68,7 +70,7 @@
|
|
68
70
|
* provide them
|
69
71
|
* ============================================================================
|
70
72
|
*/
|
71
|
-
#ifndef
|
73
|
+
#ifndef CARES_HAVE_ARPA_NAMESER_H
|
72
74
|
|
73
75
|
typedef enum __ns_class {
|
74
76
|
ns_c_invalid = 0, /* Cookie. */
|
@@ -138,7 +140,7 @@ typedef enum __ns_type {
|
|
138
140
|
ns_t_mailb = 253, /* Transfer mailbox records. */
|
139
141
|
ns_t_maila = 254, /* Transfer mail agent records. */
|
140
142
|
ns_t_any = 255, /* Wildcard match. */
|
141
|
-
|
143
|
+
ns_t_uri = 256, /* Uniform Resource Identifier (RFC7553) */
|
142
144
|
ns_t_caa = 257, /* Certification Authority Authorization. */
|
143
145
|
ns_t_max = 65536
|
144
146
|
} ns_type;
|
@@ -173,7 +175,7 @@ typedef enum __ns_rcode {
|
|
173
175
|
ns_r_badtime = 18
|
174
176
|
} ns_rcode;
|
175
177
|
|
176
|
-
#endif /*
|
178
|
+
#endif /* CARES_HAVE_ARPA_NAMESER_H */
|
177
179
|
|
178
180
|
|
179
181
|
/* ============================================================================
|
@@ -468,8 +470,8 @@ typedef enum __ns_rcode {
|
|
468
470
|
#ifndef T_ANY
|
469
471
|
# define T_ANY 255 /* ns_t_any */
|
470
472
|
#endif
|
471
|
-
#ifndef
|
472
|
-
# define
|
473
|
+
#ifndef T_URI
|
474
|
+
# define T_URI 256 /* ns_t_uri */
|
473
475
|
#endif
|
474
476
|
#ifndef T_CAA
|
475
477
|
# define T_CAA 257 /* ns_t_caa */
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#define __CARES_RULES_H
|
3
3
|
|
4
4
|
|
5
|
-
/* Copyright (C) 2009 by Daniel Stenberg et al
|
5
|
+
/* Copyright (C) 2009 - 2021 by Daniel Stenberg et al
|
6
6
|
*
|
7
7
|
* Permission to use, copy, modify, and distribute this software and its
|
8
8
|
* documentation for any purpose and without fee is hereby granted, provided
|
@@ -40,7 +40,7 @@
|
|
40
40
|
* library is properly built and used.
|
41
41
|
*
|
42
42
|
* You can find further help on the c-ares development mailing list:
|
43
|
-
* http://
|
43
|
+
* http://lists.haxx.se/listinfo/c-ares/
|
44
44
|
*
|
45
45
|
* NOTE 2
|
46
46
|
* ------
|
@@ -3,15 +3,15 @@
|
|
3
3
|
#define ARES__VERSION_H
|
4
4
|
|
5
5
|
/* This is the global package copyright */
|
6
|
-
#define ARES_COPYRIGHT "2004 -
|
6
|
+
#define ARES_COPYRIGHT "2004 - 2021 Daniel Stenberg, <daniel@haxx.se>."
|
7
7
|
|
8
8
|
#define ARES_VERSION_MAJOR 1
|
9
|
-
#define ARES_VERSION_MINOR
|
9
|
+
#define ARES_VERSION_MINOR 19
|
10
10
|
#define ARES_VERSION_PATCH 0
|
11
11
|
#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
|
12
12
|
(ARES_VERSION_MINOR<<8)|\
|
13
13
|
(ARES_VERSION_PATCH))
|
14
|
-
#define ARES_VERSION_STR "1.
|
14
|
+
#define ARES_VERSION_STR "1.19.0"
|
15
15
|
|
16
16
|
#if (ARES_VERSION >= 0x010700)
|
17
17
|
# define CARES_HAVE_ARES_LIBRARY_INIT 1
|
@@ -0,0 +1,266 @@
|
|
1
|
+
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
2
|
+
* Copyright 2005 Dominick Meglio
|
3
|
+
* Copyright (C) 2019 by Andrew Selivanov
|
4
|
+
* Copyright (C) 2021 by Brad House
|
5
|
+
*
|
6
|
+
* Permission to use, copy, modify, and distribute this
|
7
|
+
* software and its documentation for any purpose and without
|
8
|
+
* fee is hereby granted, provided that the above copyright
|
9
|
+
* notice appear in all copies and that both that copyright
|
10
|
+
* notice and this permission notice appear in supporting
|
11
|
+
* documentation, and that the name of M.I.T. not be used in
|
12
|
+
* advertising or publicity pertaining to distribution of the
|
13
|
+
* software without specific, written prior permission.
|
14
|
+
* M.I.T. makes no representations about the suitability of
|
15
|
+
* this software for any purpose. It is provided "as is"
|
16
|
+
* without express or implied warranty.
|
17
|
+
*/
|
18
|
+
|
19
|
+
#include "ares_setup.h"
|
20
|
+
|
21
|
+
#ifdef HAVE_NETINET_IN_H
|
22
|
+
# include <netinet/in.h>
|
23
|
+
#endif
|
24
|
+
#ifdef HAVE_NETDB_H
|
25
|
+
# include <netdb.h>
|
26
|
+
#endif
|
27
|
+
#ifdef HAVE_ARPA_INET_H
|
28
|
+
# include <arpa/inet.h>
|
29
|
+
#endif
|
30
|
+
|
31
|
+
#include "ares_nameser.h"
|
32
|
+
|
33
|
+
#ifdef HAVE_STRINGS_H
|
34
|
+
# include <strings.h>
|
35
|
+
#endif
|
36
|
+
|
37
|
+
#ifdef HAVE_LIMITS_H
|
38
|
+
# include <limits.h>
|
39
|
+
#endif
|
40
|
+
|
41
|
+
#include "ares.h"
|
42
|
+
#include "ares_dns.h"
|
43
|
+
#include "ares_inet_net_pton.h"
|
44
|
+
#include "ares_private.h"
|
45
|
+
|
46
|
+
int ares__addrinfo2hostent(const struct ares_addrinfo *ai, int family,
|
47
|
+
struct hostent **host)
|
48
|
+
{
|
49
|
+
struct ares_addrinfo_node *next;
|
50
|
+
struct ares_addrinfo_cname *next_cname;
|
51
|
+
char **aliases = NULL;
|
52
|
+
char *addrs = NULL;
|
53
|
+
int naliases = 0, naddrs = 0, alias = 0, i;
|
54
|
+
|
55
|
+
if (ai == NULL || host == NULL)
|
56
|
+
return ARES_EBADQUERY;
|
57
|
+
|
58
|
+
*host = ares_malloc(sizeof(**host));
|
59
|
+
if (!(*host))
|
60
|
+
{
|
61
|
+
goto enomem;
|
62
|
+
}
|
63
|
+
memset(*host, 0, sizeof(**host));
|
64
|
+
|
65
|
+
/* Use the first node of the response as the family, since hostent can only
|
66
|
+
* represent one family. We assume getaddrinfo() returned a sorted list if
|
67
|
+
* the user requested AF_UNSPEC. */
|
68
|
+
if (family == AF_UNSPEC && ai->nodes)
|
69
|
+
family = ai->nodes->ai_family;
|
70
|
+
|
71
|
+
next = ai->nodes;
|
72
|
+
while (next)
|
73
|
+
{
|
74
|
+
if(next->ai_family == family)
|
75
|
+
{
|
76
|
+
++naddrs;
|
77
|
+
}
|
78
|
+
next = next->ai_next;
|
79
|
+
}
|
80
|
+
|
81
|
+
next_cname = ai->cnames;
|
82
|
+
while (next_cname)
|
83
|
+
{
|
84
|
+
if(next_cname->alias)
|
85
|
+
++naliases;
|
86
|
+
next_cname = next_cname->next;
|
87
|
+
}
|
88
|
+
|
89
|
+
aliases = ares_malloc((naliases + 1) * sizeof(char *));
|
90
|
+
if (!aliases)
|
91
|
+
{
|
92
|
+
goto enomem;
|
93
|
+
}
|
94
|
+
(*host)->h_aliases = aliases;
|
95
|
+
memset(aliases, 0, (naliases + 1) * sizeof(char *));
|
96
|
+
|
97
|
+
if (naliases)
|
98
|
+
{
|
99
|
+
next_cname = ai->cnames;
|
100
|
+
while (next_cname)
|
101
|
+
{
|
102
|
+
if(next_cname->alias) {
|
103
|
+
aliases[alias] = ares_strdup(next_cname->alias);
|
104
|
+
if (!aliases[alias]) {
|
105
|
+
goto enomem;
|
106
|
+
}
|
107
|
+
alias++;
|
108
|
+
}
|
109
|
+
next_cname = next_cname->next;
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
|
114
|
+
(*host)->h_addr_list = ares_malloc((naddrs + 1) * sizeof(char *));
|
115
|
+
if (!(*host)->h_addr_list)
|
116
|
+
{
|
117
|
+
goto enomem;
|
118
|
+
}
|
119
|
+
|
120
|
+
memset((*host)->h_addr_list, 0, (naddrs + 1) * sizeof(char *));
|
121
|
+
|
122
|
+
if (ai->cnames)
|
123
|
+
{
|
124
|
+
(*host)->h_name = ares_strdup(ai->cnames->name);
|
125
|
+
if ((*host)->h_name == NULL && ai->cnames->name)
|
126
|
+
{
|
127
|
+
goto enomem;
|
128
|
+
}
|
129
|
+
}
|
130
|
+
else
|
131
|
+
{
|
132
|
+
(*host)->h_name = ares_strdup(ai->name);
|
133
|
+
if ((*host)->h_name == NULL && ai->name)
|
134
|
+
{
|
135
|
+
goto enomem;
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
(*host)->h_addrtype = family;
|
140
|
+
(*host)->h_length = (family == AF_INET)?
|
141
|
+
sizeof(struct in_addr):sizeof(struct ares_in6_addr);
|
142
|
+
|
143
|
+
if (naddrs)
|
144
|
+
{
|
145
|
+
addrs = ares_malloc(naddrs * (*host)->h_length);
|
146
|
+
if (!addrs)
|
147
|
+
{
|
148
|
+
goto enomem;
|
149
|
+
}
|
150
|
+
|
151
|
+
i = 0;
|
152
|
+
next = ai->nodes;
|
153
|
+
while (next)
|
154
|
+
{
|
155
|
+
if(next->ai_family == family)
|
156
|
+
{
|
157
|
+
(*host)->h_addr_list[i] = addrs + (i * (*host)->h_length);
|
158
|
+
if (family == AF_INET6)
|
159
|
+
{
|
160
|
+
memcpy((*host)->h_addr_list[i],
|
161
|
+
&(CARES_INADDR_CAST(struct sockaddr_in6 *, next->ai_addr)->sin6_addr),
|
162
|
+
(*host)->h_length);
|
163
|
+
}
|
164
|
+
else
|
165
|
+
{
|
166
|
+
memcpy((*host)->h_addr_list[i],
|
167
|
+
&(CARES_INADDR_CAST(struct sockaddr_in *, next->ai_addr)->sin_addr),
|
168
|
+
(*host)->h_length);
|
169
|
+
}
|
170
|
+
++i;
|
171
|
+
}
|
172
|
+
next = next->ai_next;
|
173
|
+
}
|
174
|
+
|
175
|
+
if (i == 0)
|
176
|
+
{
|
177
|
+
ares_free(addrs);
|
178
|
+
}
|
179
|
+
}
|
180
|
+
|
181
|
+
if (naddrs == 0 && naliases == 0)
|
182
|
+
{
|
183
|
+
ares_free_hostent(*host);
|
184
|
+
*host = NULL;
|
185
|
+
return ARES_ENODATA;
|
186
|
+
}
|
187
|
+
|
188
|
+
return ARES_SUCCESS;
|
189
|
+
|
190
|
+
enomem:
|
191
|
+
ares_free_hostent(*host);
|
192
|
+
*host = NULL;
|
193
|
+
return ARES_ENOMEM;
|
194
|
+
}
|
195
|
+
|
196
|
+
|
197
|
+
int ares__addrinfo2addrttl(const struct ares_addrinfo *ai, int family,
|
198
|
+
int req_naddrttls, struct ares_addrttl *addrttls,
|
199
|
+
struct ares_addr6ttl *addr6ttls, int *naddrttls)
|
200
|
+
{
|
201
|
+
struct ares_addrinfo_node *next;
|
202
|
+
struct ares_addrinfo_cname *next_cname;
|
203
|
+
int cname_ttl = INT_MAX;
|
204
|
+
|
205
|
+
if (family != AF_INET && family != AF_INET6)
|
206
|
+
return ARES_EBADQUERY;
|
207
|
+
|
208
|
+
if (ai == NULL || naddrttls == NULL)
|
209
|
+
return ARES_EBADQUERY;
|
210
|
+
|
211
|
+
if (family == AF_INET && addrttls == NULL)
|
212
|
+
return ARES_EBADQUERY;
|
213
|
+
|
214
|
+
if (family == AF_INET6 && addr6ttls == NULL)
|
215
|
+
return ARES_EBADQUERY;
|
216
|
+
|
217
|
+
if (req_naddrttls == 0)
|
218
|
+
return ARES_EBADQUERY;
|
219
|
+
|
220
|
+
*naddrttls = 0;
|
221
|
+
|
222
|
+
next_cname = ai->cnames;
|
223
|
+
while (next_cname)
|
224
|
+
{
|
225
|
+
if(next_cname->ttl < cname_ttl)
|
226
|
+
cname_ttl = next_cname->ttl;
|
227
|
+
next_cname = next_cname->next;
|
228
|
+
}
|
229
|
+
|
230
|
+
next = ai->nodes;
|
231
|
+
while (next)
|
232
|
+
{
|
233
|
+
if(next->ai_family == family)
|
234
|
+
{
|
235
|
+
if (*naddrttls < req_naddrttls)
|
236
|
+
{
|
237
|
+
if (family == AF_INET6)
|
238
|
+
{
|
239
|
+
if(next->ai_ttl > cname_ttl)
|
240
|
+
addr6ttls[*naddrttls].ttl = cname_ttl;
|
241
|
+
else
|
242
|
+
addr6ttls[*naddrttls].ttl = next->ai_ttl;
|
243
|
+
|
244
|
+
memcpy(&addr6ttls[*naddrttls].ip6addr,
|
245
|
+
&(CARES_INADDR_CAST(struct sockaddr_in6 *, next->ai_addr)->sin6_addr),
|
246
|
+
sizeof(struct ares_in6_addr));
|
247
|
+
}
|
248
|
+
else
|
249
|
+
{
|
250
|
+
if(next->ai_ttl > cname_ttl)
|
251
|
+
addrttls[*naddrttls].ttl = cname_ttl;
|
252
|
+
else
|
253
|
+
addrttls[*naddrttls].ttl = next->ai_ttl;
|
254
|
+
memcpy(&addrttls[*naddrttls].ipaddr,
|
255
|
+
&(CARES_INADDR_CAST(struct sockaddr_in *, next->ai_addr)->sin_addr),
|
256
|
+
sizeof(struct in_addr));
|
257
|
+
}
|
258
|
+
(*naddrttls)++;
|
259
|
+
}
|
260
|
+
}
|
261
|
+
next = next->ai_next;
|
262
|
+
}
|
263
|
+
|
264
|
+
return ARES_SUCCESS;
|
265
|
+
}
|
266
|
+
|
@@ -0,0 +1,240 @@
|
|
1
|
+
/* Copyright (C) 2021
|
2
|
+
*
|
3
|
+
* Permission to use, copy, modify, and distribute this
|
4
|
+
* software and its documentation for any purpose and without
|
5
|
+
* fee is hereby granted, provided that the above copyright
|
6
|
+
* notice appear in all copies and that both that copyright
|
7
|
+
* notice and this permission notice appear in supporting
|
8
|
+
* documentation, and that the name of M.I.T. not be used in
|
9
|
+
* advertising or publicity pertaining to distribution of the
|
10
|
+
* software without specific, written prior permission.
|
11
|
+
* M.I.T. makes no representations about the suitability of
|
12
|
+
* this software for any purpose. It is provided "as is"
|
13
|
+
* without express or implied warranty.
|
14
|
+
*/
|
15
|
+
|
16
|
+
#include "ares_setup.h"
|
17
|
+
|
18
|
+
#ifdef HAVE_NETINET_IN_H
|
19
|
+
# include <netinet/in.h>
|
20
|
+
#endif
|
21
|
+
#ifdef HAVE_NETDB_H
|
22
|
+
# include <netdb.h>
|
23
|
+
#endif
|
24
|
+
#ifdef HAVE_ARPA_INET_H
|
25
|
+
# include <arpa/inet.h>
|
26
|
+
#endif
|
27
|
+
|
28
|
+
#if defined(_WIN32) && defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0600
|
29
|
+
#include <ws2ipdef.h>
|
30
|
+
#include <iphlpapi.h>
|
31
|
+
#endif
|
32
|
+
|
33
|
+
#include "ares.h"
|
34
|
+
#include "ares_inet_net_pton.h"
|
35
|
+
#include "ares_nowarn.h"
|
36
|
+
#include "ares_private.h"
|
37
|
+
|
38
|
+
int ares_append_ai_node(int aftype,
|
39
|
+
unsigned short port,
|
40
|
+
int ttl,
|
41
|
+
const void *adata,
|
42
|
+
struct ares_addrinfo_node **nodes)
|
43
|
+
{
|
44
|
+
struct ares_addrinfo_node *node;
|
45
|
+
|
46
|
+
node = ares__append_addrinfo_node(nodes);
|
47
|
+
if (!node)
|
48
|
+
{
|
49
|
+
return ARES_ENOMEM;
|
50
|
+
}
|
51
|
+
|
52
|
+
memset(node, 0, sizeof(*node));
|
53
|
+
|
54
|
+
if (aftype == AF_INET)
|
55
|
+
{
|
56
|
+
struct sockaddr_in *sin = ares_malloc(sizeof(*sin));
|
57
|
+
if (!sin)
|
58
|
+
{
|
59
|
+
return ARES_ENOMEM;
|
60
|
+
}
|
61
|
+
|
62
|
+
memset(sin, 0, sizeof(*sin));
|
63
|
+
memcpy(&sin->sin_addr.s_addr, adata, sizeof(sin->sin_addr.s_addr));
|
64
|
+
sin->sin_family = AF_INET;
|
65
|
+
sin->sin_port = htons(port);
|
66
|
+
|
67
|
+
node->ai_addr = (struct sockaddr *)sin;
|
68
|
+
node->ai_family = AF_INET;
|
69
|
+
node->ai_addrlen = sizeof(*sin);
|
70
|
+
node->ai_addr = (struct sockaddr *)sin;
|
71
|
+
node->ai_ttl = ttl;
|
72
|
+
}
|
73
|
+
|
74
|
+
if (aftype == AF_INET6)
|
75
|
+
{
|
76
|
+
struct sockaddr_in6 *sin6 = ares_malloc(sizeof(*sin6));
|
77
|
+
if (!sin6)
|
78
|
+
{
|
79
|
+
return ARES_ENOMEM;
|
80
|
+
}
|
81
|
+
|
82
|
+
memset(sin6, 0, sizeof(*sin6));
|
83
|
+
memcpy(&sin6->sin6_addr.s6_addr, adata, sizeof(sin6->sin6_addr.s6_addr));
|
84
|
+
sin6->sin6_family = AF_INET6;
|
85
|
+
sin6->sin6_port = htons(port);
|
86
|
+
|
87
|
+
node->ai_addr = (struct sockaddr *)sin6;
|
88
|
+
node->ai_family = AF_INET6;
|
89
|
+
node->ai_addrlen = sizeof(*sin6);
|
90
|
+
node->ai_addr = (struct sockaddr *)sin6;
|
91
|
+
node->ai_ttl = ttl;
|
92
|
+
}
|
93
|
+
|
94
|
+
return ARES_SUCCESS;
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
static int ares__default_loopback_addrs(int aftype,
|
99
|
+
unsigned short port,
|
100
|
+
struct ares_addrinfo_node **nodes)
|
101
|
+
{
|
102
|
+
int status = ARES_SUCCESS;
|
103
|
+
|
104
|
+
if (aftype == AF_UNSPEC || aftype == AF_INET6)
|
105
|
+
{
|
106
|
+
struct ares_in6_addr addr6;
|
107
|
+
ares_inet_pton(AF_INET6, "::1", &addr6);
|
108
|
+
status = ares_append_ai_node(AF_INET6, port, 0, &addr6, nodes);
|
109
|
+
if (status != ARES_SUCCESS)
|
110
|
+
{
|
111
|
+
return status;
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
if (aftype == AF_UNSPEC || aftype == AF_INET)
|
116
|
+
{
|
117
|
+
struct in_addr addr4;
|
118
|
+
ares_inet_pton(AF_INET, "127.0.0.1", &addr4);
|
119
|
+
status = ares_append_ai_node(AF_INET, port, 0, &addr4, nodes);
|
120
|
+
if (status != ARES_SUCCESS)
|
121
|
+
{
|
122
|
+
return status;
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
return status;
|
127
|
+
}
|
128
|
+
|
129
|
+
|
130
|
+
static int ares__system_loopback_addrs(int aftype,
|
131
|
+
unsigned short port,
|
132
|
+
struct ares_addrinfo_node **nodes)
|
133
|
+
{
|
134
|
+
#if defined(_WIN32) && defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0600 && !defined(__WATCOMC__)
|
135
|
+
PMIB_UNICASTIPADDRESS_TABLE table;
|
136
|
+
unsigned int i;
|
137
|
+
int status;
|
138
|
+
|
139
|
+
*nodes = NULL;
|
140
|
+
|
141
|
+
if (GetUnicastIpAddressTable(aftype, &table) != NO_ERROR)
|
142
|
+
return ARES_ENOTFOUND;
|
143
|
+
|
144
|
+
for (i=0; i<table->NumEntries; i++)
|
145
|
+
{
|
146
|
+
if (table->Table[i].InterfaceLuid.Info.IfType !=
|
147
|
+
IF_TYPE_SOFTWARE_LOOPBACK)
|
148
|
+
{
|
149
|
+
continue;
|
150
|
+
}
|
151
|
+
|
152
|
+
if (table->Table[i].Address.si_family == AF_INET)
|
153
|
+
{
|
154
|
+
status = ares_append_ai_node(table->Table[i].Address.si_family, port, 0,
|
155
|
+
&table->Table[i].Address.Ipv4.sin_addr,
|
156
|
+
nodes);
|
157
|
+
}
|
158
|
+
else if (table->Table[i].Address.si_family == AF_INET6)
|
159
|
+
{
|
160
|
+
status = ares_append_ai_node(table->Table[i].Address.si_family, port, 0,
|
161
|
+
&table->Table[i].Address.Ipv6.sin6_addr,
|
162
|
+
nodes);
|
163
|
+
}
|
164
|
+
else
|
165
|
+
{
|
166
|
+
/* Ignore any others */
|
167
|
+
continue;
|
168
|
+
}
|
169
|
+
|
170
|
+
if (status != ARES_SUCCESS)
|
171
|
+
{
|
172
|
+
goto fail;
|
173
|
+
}
|
174
|
+
}
|
175
|
+
|
176
|
+
if (*nodes == NULL)
|
177
|
+
status = ARES_ENOTFOUND;
|
178
|
+
|
179
|
+
fail:
|
180
|
+
FreeMibTable(table);
|
181
|
+
|
182
|
+
if (status != ARES_SUCCESS)
|
183
|
+
{
|
184
|
+
ares__freeaddrinfo_nodes(*nodes);
|
185
|
+
*nodes = NULL;
|
186
|
+
}
|
187
|
+
|
188
|
+
return status;
|
189
|
+
|
190
|
+
#else
|
191
|
+
(void)aftype;
|
192
|
+
(void)port;
|
193
|
+
(void)nodes;
|
194
|
+
/* Not supported on any other OS at this time */
|
195
|
+
return ARES_ENOTFOUND;
|
196
|
+
#endif
|
197
|
+
}
|
198
|
+
|
199
|
+
|
200
|
+
int ares__addrinfo_localhost(const char *name,
|
201
|
+
unsigned short port,
|
202
|
+
const struct ares_addrinfo_hints *hints,
|
203
|
+
struct ares_addrinfo *ai)
|
204
|
+
{
|
205
|
+
struct ares_addrinfo_node *nodes = NULL;
|
206
|
+
int result;
|
207
|
+
|
208
|
+
/* Validate family */
|
209
|
+
switch (hints->ai_family) {
|
210
|
+
case AF_INET:
|
211
|
+
case AF_INET6:
|
212
|
+
case AF_UNSPEC:
|
213
|
+
break;
|
214
|
+
default:
|
215
|
+
return ARES_EBADFAMILY;
|
216
|
+
}
|
217
|
+
|
218
|
+
ai->name = ares_strdup(name);
|
219
|
+
if(!ai->name)
|
220
|
+
{
|
221
|
+
goto enomem;
|
222
|
+
}
|
223
|
+
|
224
|
+
result = ares__system_loopback_addrs(hints->ai_family, port, &nodes);
|
225
|
+
|
226
|
+
if (result == ARES_ENOTFOUND)
|
227
|
+
{
|
228
|
+
result = ares__default_loopback_addrs(hints->ai_family, port, &nodes);
|
229
|
+
}
|
230
|
+
|
231
|
+
ares__addrinfo_cat_nodes(&ai->nodes, nodes);
|
232
|
+
|
233
|
+
return result;
|
234
|
+
|
235
|
+
enomem:
|
236
|
+
ares__freeaddrinfo_nodes(nodes);
|
237
|
+
ares_free(ai->name);
|
238
|
+
ai->name = NULL;
|
239
|
+
return ARES_ENOMEM;
|
240
|
+
}
|