grpc 1.74.1 → 1.75.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +83 -41
- data/include/grpc/credentials.h +7 -1
- data/src/core/call/client_call.cc +4 -4
- data/src/core/call/filter_fusion.h +1230 -0
- data/src/core/call/metadata.cc +22 -0
- data/src/core/call/metadata.h +24 -2
- data/src/core/channelz/channelz.cc +10 -17
- data/src/core/channelz/channelz.h +58 -19
- data/src/core/channelz/channelz_registry.cc +0 -162
- data/src/core/channelz/channelz_registry.h +14 -7
- data/src/core/channelz/property_list.cc +19 -23
- data/src/core/channelz/property_list.h +3 -1
- data/src/core/channelz/v2tov1/convert.cc +683 -0
- data/src/core/channelz/v2tov1/convert.h +58 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
- data/src/core/channelz/v2tov1/legacy_api.h +32 -0
- data/src/core/channelz/v2tov1/property_list.cc +118 -0
- data/src/core/channelz/v2tov1/property_list.h +52 -0
- data/src/core/client_channel/client_channel_filter.cc +5 -4
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +2 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
- data/src/core/client_channel/subchannel.cc +14 -6
- data/src/core/client_channel/subchannel.h +2 -0
- data/src/core/config/core_configuration.cc +3 -1
- data/src/core/config/core_configuration.h +12 -0
- data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
- data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +3 -1
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
- data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
- data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
- data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
- data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
- data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame.cc +89 -6
- data/src/core/ext/transport/chttp2/transport/frame.h +38 -0
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +5 -14
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +294 -78
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +128 -9
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +52 -35
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +81 -3
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +2 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +22 -5
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +6 -4
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +142 -54
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +18 -14
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +2 -2
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +86 -88
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +2 -2
- data/src/core/filter/auth/auth_filters.h +2 -2
- data/src/core/filter/fused_filters.cc +154 -0
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +1 -1
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
- data/src/core/handshaker/security/secure_endpoint.cc +28 -13
- data/src/core/handshaker/security/secure_endpoint.h +8 -0
- data/src/core/lib/channel/promise_based_filter.cc +15 -25
- data/src/core/lib/channel/promise_based_filter.h +6 -5
- data/src/core/lib/event_engine/ares_resolver.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +9 -5
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -1
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +12 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -10
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +6 -4
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +15 -14
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -5
- data/src/core/lib/event_engine/posix_engine/event_poller.h +0 -8
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -5
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +188 -199
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +30 -45
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +2 -1
- data/src/core/lib/experiments/experiments.cc +120 -6
- data/src/core/lib/experiments/experiments.h +46 -3
- data/src/core/lib/iomgr/combiner.cc +1 -1
- data/src/core/lib/iomgr/exec_ctx.h +3 -9
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +3 -3
- data/src/core/lib/promise/activity.h +2 -2
- data/src/core/lib/promise/mpsc.cc +8 -8
- data/src/core/lib/promise/party.cc +7 -7
- data/src/core/lib/promise/party.h +4 -4
- data/src/core/lib/promise/poll.h +10 -0
- data/src/core/lib/resource_quota/memory_quota.cc +90 -3
- data/src/core/lib/resource_quota/memory_quota.h +20 -9
- data/src/core/lib/resource_quota/periodic_update.cc +14 -0
- data/src/core/lib/resource_quota/periodic_update.h +8 -0
- data/src/core/lib/resource_quota/resource_quota.cc +15 -4
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/surface/call.cc +5 -5
- data/src/core/lib/surface/call.h +6 -5
- data/src/core/lib/surface/completion_queue.cc +2 -4
- data/src/core/lib/surface/filter_stack_call.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.h +3 -3
- data/src/core/load_balancing/endpoint_list.cc +29 -2
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
- data/src/core/load_balancing/pick_first/pick_first.cc +12 -5
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
- data/src/core/net/socket_mutator.cc +19 -0
- data/src/core/net/socket_mutator.h +25 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
- data/src/core/resolver/xds/xds_dependency_manager.cc +1 -1
- data/src/core/server/server.cc +1 -1
- data/src/core/server/server_call_tracer_filter.cc +0 -66
- data/src/core/server/server_call_tracer_filter.h +64 -0
- data/src/core/server/server_config_selector_filter.cc +1 -1
- data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
- data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
- data/src/core/telemetry/call_tracer.cc +20 -14
- data/src/core/telemetry/call_tracer.h +22 -17
- data/src/core/telemetry/metrics.h +8 -8
- data/src/core/telemetry/stats_data.cc +151 -151
- data/src/core/telemetry/stats_data.h +87 -87
- data/src/core/transport/auth_context.cc +20 -0
- data/src/core/transport/auth_context.h +4 -0
- data/src/core/transport/auth_context_comparator_registry.h +69 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
- data/src/core/tsi/ssl_transport_security.cc +202 -32
- data/src/core/tsi/ssl_transport_security.h +19 -10
- data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
- data/src/core/tsi/ssl_transport_security_utils.h +4 -0
- data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
- data/src/core/util/latent_see.cc +178 -146
- data/src/core/util/latent_see.h +245 -188
- data/src/core/util/single_set_ptr.h +5 -2
- data/src/core/util/useful.h +91 -0
- data/src/core/util/windows/directory_reader.cc +1 -0
- data/src/core/util/windows/thd.cc +1 -3
- data/src/core/util/work_serializer.cc +1 -1
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/cares/cares/include/ares.h +925 -460
- data/third_party/cares/cares/include/ares_dns.h +86 -71
- data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
- data/third_party/cares/cares/include/ares_nameser.h +215 -189
- data/third_party/cares/cares/include/ares_version.h +37 -14
- data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
- data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
- data/third_party/cares/cares/src/lib/ares_android.c +216 -164
- data/third_party/cares/cares/src/lib/ares_android.h +25 -14
- data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
- data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
- data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
- data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
- data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
- data/third_party/cares/cares/src/lib/ares_data.c +93 -181
- data/third_party/cares/cares/src/lib/ares_data.h +50 -39
- data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
- data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
- data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
- data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
- data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
- data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
- data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
- data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
- data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
- data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
- data/third_party/cares/cares/src/lib/ares_options.c +418 -332
- data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
- data/third_party/cares/cares/src/lib/ares_private.h +558 -356
- data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
- data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
- data/third_party/cares/cares/src/lib/ares_query.c +126 -121
- data/third_party/cares/cares/src/lib/ares_search.c +564 -262
- data/third_party/cares/cares/src/lib/ares_send.c +264 -93
- data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
- data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
- data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
- data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
- data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
- data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
- data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
- data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
- data/third_party/cares/cares/src/lib/ares_version.c +29 -4
- data/third_party/cares/cares/src/lib/config-dos.h +88 -89
- data/third_party/cares/cares/src/lib/config-win32.h +122 -77
- data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
- data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
- data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
- data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
- data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
- data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
- data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
- data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
- data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
- data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
- data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
- data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
- data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
- data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
- data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
- data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
- data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
- data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
- data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
- data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
- data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
- data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
- data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
- data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
- data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
- data/third_party/cares/cares/src/lib/windows_port.c +16 -9
- metadata +121 -49
- data/src/core/util/ring_buffer.h +0 -122
- data/third_party/cares/cares/include/ares_rules.h +0 -125
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
- data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
- data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
- data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
- data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
- data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
- data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
- data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
- data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
- data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
- data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
- data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
- data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
- data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
- data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
- data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
- data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
- data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
- data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
- data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
- data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
- data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
- data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
- data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
- data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
- data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
- data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
- data/third_party/cares/cares/src/lib/setup_once.h +0 -554
- data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -0,0 +1,307 @@
|
|
1
|
+
/* MIT License
|
2
|
+
*
|
3
|
+
* Copyright (c) 2024 Brad House
|
4
|
+
*
|
5
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
* of this software and associated documentation files (the "Software"), to deal
|
7
|
+
* in the Software without restriction, including without limitation the rights
|
8
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
* copies of the Software, and to permit persons to whom the Software is
|
10
|
+
* furnished to do so, subject to the following conditions:
|
11
|
+
*
|
12
|
+
* The above copyright notice and this permission notice (including the next
|
13
|
+
* paragraph) shall be included in all copies or substantial portions of the
|
14
|
+
* Software.
|
15
|
+
*
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
+
* SOFTWARE.
|
23
|
+
*
|
24
|
+
* SPDX-License-Identifier: MIT
|
25
|
+
*/
|
26
|
+
#include "ares_private.h"
|
27
|
+
#include "ares_dns_private.h"
|
28
|
+
|
29
|
+
typedef struct {
|
30
|
+
unsigned char *data;
|
31
|
+
size_t len;
|
32
|
+
} multistring_data_t;
|
33
|
+
|
34
|
+
struct ares_dns_multistring {
|
35
|
+
/*! whether or not cached concatenated string is valid */
|
36
|
+
ares_bool_t cache_invalidated;
|
37
|
+
/*! combined/concatenated string cache */
|
38
|
+
unsigned char *cache_str;
|
39
|
+
/*! length of combined/concatenated string */
|
40
|
+
size_t cache_str_len;
|
41
|
+
/*! Data making up strings */
|
42
|
+
ares_array_t *strs; /*!< multistring_data_t type */
|
43
|
+
};
|
44
|
+
|
45
|
+
static void ares_dns_multistring_free_cb(void *arg)
|
46
|
+
{
|
47
|
+
multistring_data_t *data = arg;
|
48
|
+
if (data == NULL) {
|
49
|
+
return;
|
50
|
+
}
|
51
|
+
ares_free(data->data);
|
52
|
+
}
|
53
|
+
|
54
|
+
ares_dns_multistring_t *ares_dns_multistring_create(void)
|
55
|
+
{
|
56
|
+
ares_dns_multistring_t *strs = ares_malloc_zero(sizeof(*strs));
|
57
|
+
if (strs == NULL) {
|
58
|
+
return NULL;
|
59
|
+
}
|
60
|
+
|
61
|
+
strs->strs =
|
62
|
+
ares_array_create(sizeof(multistring_data_t), ares_dns_multistring_free_cb);
|
63
|
+
if (strs->strs == NULL) {
|
64
|
+
ares_free(strs);
|
65
|
+
return NULL;
|
66
|
+
}
|
67
|
+
|
68
|
+
return strs;
|
69
|
+
}
|
70
|
+
|
71
|
+
void ares_dns_multistring_clear(ares_dns_multistring_t *strs)
|
72
|
+
{
|
73
|
+
if (strs == NULL) {
|
74
|
+
return;
|
75
|
+
}
|
76
|
+
|
77
|
+
while (ares_array_len(strs->strs)) {
|
78
|
+
ares_array_remove_last(strs->strs);
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
void ares_dns_multistring_destroy(ares_dns_multistring_t *strs)
|
83
|
+
{
|
84
|
+
if (strs == NULL) {
|
85
|
+
return;
|
86
|
+
}
|
87
|
+
ares_dns_multistring_clear(strs);
|
88
|
+
ares_array_destroy(strs->strs);
|
89
|
+
ares_free(strs->cache_str);
|
90
|
+
ares_free(strs);
|
91
|
+
}
|
92
|
+
|
93
|
+
ares_status_t ares_dns_multistring_swap_own(ares_dns_multistring_t *strs,
|
94
|
+
size_t idx, unsigned char *str,
|
95
|
+
size_t len)
|
96
|
+
{
|
97
|
+
multistring_data_t *data;
|
98
|
+
|
99
|
+
if (strs == NULL || str == NULL || len == 0) {
|
100
|
+
return ARES_EFORMERR;
|
101
|
+
}
|
102
|
+
|
103
|
+
strs->cache_invalidated = ARES_TRUE;
|
104
|
+
|
105
|
+
data = ares_array_at(strs->strs, idx);
|
106
|
+
if (data == NULL) {
|
107
|
+
return ARES_EFORMERR;
|
108
|
+
}
|
109
|
+
|
110
|
+
ares_free(data->data);
|
111
|
+
data->data = str;
|
112
|
+
data->len = len;
|
113
|
+
return ARES_SUCCESS;
|
114
|
+
}
|
115
|
+
|
116
|
+
ares_status_t ares_dns_multistring_del(ares_dns_multistring_t *strs, size_t idx)
|
117
|
+
{
|
118
|
+
if (strs == NULL) {
|
119
|
+
return ARES_EFORMERR;
|
120
|
+
}
|
121
|
+
|
122
|
+
strs->cache_invalidated = ARES_TRUE;
|
123
|
+
|
124
|
+
return ares_array_remove_at(strs->strs, idx);
|
125
|
+
}
|
126
|
+
|
127
|
+
ares_status_t ares_dns_multistring_add_own(ares_dns_multistring_t *strs,
|
128
|
+
unsigned char *str, size_t len)
|
129
|
+
{
|
130
|
+
multistring_data_t *data;
|
131
|
+
ares_status_t status;
|
132
|
+
|
133
|
+
if (strs == NULL) {
|
134
|
+
return ARES_EFORMERR;
|
135
|
+
}
|
136
|
+
|
137
|
+
strs->cache_invalidated = ARES_TRUE;
|
138
|
+
|
139
|
+
/* NOTE: its ok to have an empty string added */
|
140
|
+
if (str == NULL && len != 0) {
|
141
|
+
return ARES_EFORMERR;
|
142
|
+
}
|
143
|
+
|
144
|
+
status = ares_array_insert_last((void **)&data, strs->strs);
|
145
|
+
if (status != ARES_SUCCESS) {
|
146
|
+
return status;
|
147
|
+
}
|
148
|
+
|
149
|
+
/* Issue #921, ares_dns_multistring_get() doesn't have a way to indicate
|
150
|
+
* success or fail on a zero-length string which is actually valid. So we
|
151
|
+
* are going to allocate a 1-byte buffer to use as a placeholder in this
|
152
|
+
* case */
|
153
|
+
if (str == NULL) {
|
154
|
+
str = ares_malloc_zero(1);
|
155
|
+
if (str == NULL) {
|
156
|
+
ares_array_remove_last(strs->strs);
|
157
|
+
return ARES_ENOMEM;
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
data->data = str;
|
162
|
+
data->len = len;
|
163
|
+
|
164
|
+
return ARES_SUCCESS;
|
165
|
+
}
|
166
|
+
|
167
|
+
size_t ares_dns_multistring_cnt(const ares_dns_multistring_t *strs)
|
168
|
+
{
|
169
|
+
if (strs == NULL) {
|
170
|
+
return 0;
|
171
|
+
}
|
172
|
+
return ares_array_len(strs->strs);
|
173
|
+
}
|
174
|
+
|
175
|
+
const unsigned char *
|
176
|
+
ares_dns_multistring_get(const ares_dns_multistring_t *strs, size_t idx,
|
177
|
+
size_t *len)
|
178
|
+
{
|
179
|
+
const multistring_data_t *data;
|
180
|
+
|
181
|
+
if (strs == NULL || len == NULL) {
|
182
|
+
return NULL;
|
183
|
+
}
|
184
|
+
|
185
|
+
data = ares_array_at_const(strs->strs, idx);
|
186
|
+
if (data == NULL) {
|
187
|
+
return NULL;
|
188
|
+
}
|
189
|
+
|
190
|
+
*len = data->len;
|
191
|
+
return data->data;
|
192
|
+
}
|
193
|
+
|
194
|
+
const unsigned char *ares_dns_multistring_combined(ares_dns_multistring_t *strs,
|
195
|
+
size_t *len)
|
196
|
+
{
|
197
|
+
ares_buf_t *buf = NULL;
|
198
|
+
size_t i;
|
199
|
+
|
200
|
+
if (strs == NULL || len == NULL) {
|
201
|
+
return NULL;
|
202
|
+
}
|
203
|
+
|
204
|
+
*len = 0;
|
205
|
+
|
206
|
+
/* Return cache if possible */
|
207
|
+
if (!strs->cache_invalidated) {
|
208
|
+
*len = strs->cache_str_len;
|
209
|
+
return strs->cache_str;
|
210
|
+
}
|
211
|
+
|
212
|
+
/* Clear cache */
|
213
|
+
ares_free(strs->cache_str);
|
214
|
+
strs->cache_str = NULL;
|
215
|
+
strs->cache_str_len = 0;
|
216
|
+
|
217
|
+
buf = ares_buf_create();
|
218
|
+
|
219
|
+
for (i = 0; i < ares_array_len(strs->strs); i++) {
|
220
|
+
const multistring_data_t *data = ares_array_at_const(strs->strs, i);
|
221
|
+
if (data == NULL ||
|
222
|
+
ares_buf_append(buf, data->data, data->len) != ARES_SUCCESS) {
|
223
|
+
ares_buf_destroy(buf);
|
224
|
+
return NULL;
|
225
|
+
}
|
226
|
+
}
|
227
|
+
|
228
|
+
strs->cache_str =
|
229
|
+
(unsigned char *)ares_buf_finish_str(buf, &strs->cache_str_len);
|
230
|
+
if (strs->cache_str != NULL) {
|
231
|
+
strs->cache_invalidated = ARES_FALSE;
|
232
|
+
}
|
233
|
+
*len = strs->cache_str_len;
|
234
|
+
return strs->cache_str;
|
235
|
+
}
|
236
|
+
|
237
|
+
ares_status_t ares_dns_multistring_parse_buf(ares_buf_t *buf,
|
238
|
+
size_t remaining_len,
|
239
|
+
ares_dns_multistring_t **strs,
|
240
|
+
ares_bool_t validate_printable)
|
241
|
+
{
|
242
|
+
unsigned char len;
|
243
|
+
ares_status_t status = ARES_EBADRESP;
|
244
|
+
size_t orig_len = ares_buf_len(buf);
|
245
|
+
|
246
|
+
if (buf == NULL) {
|
247
|
+
return ARES_EFORMERR;
|
248
|
+
}
|
249
|
+
|
250
|
+
if (remaining_len == 0) {
|
251
|
+
return ARES_EBADRESP;
|
252
|
+
}
|
253
|
+
|
254
|
+
if (strs != NULL) {
|
255
|
+
*strs = ares_dns_multistring_create();
|
256
|
+
if (*strs == NULL) {
|
257
|
+
return ARES_ENOMEM;
|
258
|
+
}
|
259
|
+
}
|
260
|
+
|
261
|
+
while (orig_len - ares_buf_len(buf) < remaining_len) {
|
262
|
+
status = ares_buf_fetch_bytes(buf, &len, 1);
|
263
|
+
if (status != ARES_SUCCESS) {
|
264
|
+
break; /* LCOV_EXCL_LINE: DefensiveCoding */
|
265
|
+
}
|
266
|
+
|
267
|
+
|
268
|
+
/* When used by the _str() parser, it really needs to be validated to
|
269
|
+
* be a valid printable ascii string. Do that here */
|
270
|
+
if (len && validate_printable && ares_buf_len(buf) >= len) {
|
271
|
+
size_t mylen;
|
272
|
+
const char *data = (const char *)ares_buf_peek(buf, &mylen);
|
273
|
+
if (!ares_str_isprint(data, len)) {
|
274
|
+
status = ARES_EBADSTR;
|
275
|
+
break;
|
276
|
+
}
|
277
|
+
}
|
278
|
+
|
279
|
+
if (strs != NULL) {
|
280
|
+
unsigned char *data = NULL;
|
281
|
+
if (len) {
|
282
|
+
status = ares_buf_fetch_bytes_dup(buf, len, ARES_TRUE, &data);
|
283
|
+
if (status != ARES_SUCCESS) {
|
284
|
+
break;
|
285
|
+
}
|
286
|
+
}
|
287
|
+
status = ares_dns_multistring_add_own(*strs, data, len);
|
288
|
+
if (status != ARES_SUCCESS) {
|
289
|
+
ares_free(data);
|
290
|
+
break;
|
291
|
+
}
|
292
|
+
} else {
|
293
|
+
status = ares_buf_consume(buf, len);
|
294
|
+
if (status != ARES_SUCCESS) {
|
295
|
+
break;
|
296
|
+
}
|
297
|
+
}
|
298
|
+
|
299
|
+
}
|
300
|
+
|
301
|
+
if (status != ARES_SUCCESS && strs != NULL) {
|
302
|
+
ares_dns_multistring_destroy(*strs);
|
303
|
+
*strs = NULL;
|
304
|
+
}
|
305
|
+
|
306
|
+
return status;
|
307
|
+
}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
/* MIT License
|
2
|
+
*
|
3
|
+
* Copyright (c) 2024 Brad House
|
4
|
+
*
|
5
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
* of this software and associated documentation files (the "Software"), to deal
|
7
|
+
* in the Software without restriction, including without limitation the rights
|
8
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
* copies of the Software, and to permit persons to whom the Software is
|
10
|
+
* furnished to do so, subject to the following conditions:
|
11
|
+
*
|
12
|
+
* The above copyright notice and this permission notice (including the next
|
13
|
+
* paragraph) shall be included in all copies or substantial portions of the
|
14
|
+
* Software.
|
15
|
+
*
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
+
* SOFTWARE.
|
23
|
+
*
|
24
|
+
* SPDX-License-Identifier: MIT
|
25
|
+
*/
|
26
|
+
#ifndef __ARES_DNS_MULTISTRING_H
|
27
|
+
#define __ARES_DNS_MULTISTRING_H
|
28
|
+
|
29
|
+
#include "ares_buf.h"
|
30
|
+
|
31
|
+
struct ares_dns_multistring;
|
32
|
+
typedef struct ares_dns_multistring ares_dns_multistring_t;
|
33
|
+
|
34
|
+
ares_dns_multistring_t *ares_dns_multistring_create(void);
|
35
|
+
void ares_dns_multistring_clear(ares_dns_multistring_t *strs);
|
36
|
+
void ares_dns_multistring_destroy(ares_dns_multistring_t *strs);
|
37
|
+
ares_status_t ares_dns_multistring_swap_own(ares_dns_multistring_t *strs,
|
38
|
+
size_t idx, unsigned char *str,
|
39
|
+
size_t len);
|
40
|
+
ares_status_t ares_dns_multistring_del(ares_dns_multistring_t *strs,
|
41
|
+
size_t idx);
|
42
|
+
ares_status_t ares_dns_multistring_add_own(ares_dns_multistring_t *strs,
|
43
|
+
unsigned char *str, size_t len);
|
44
|
+
size_t ares_dns_multistring_cnt(const ares_dns_multistring_t *strs);
|
45
|
+
const unsigned char *
|
46
|
+
ares_dns_multistring_get(const ares_dns_multistring_t *strs, size_t idx,
|
47
|
+
size_t *len);
|
48
|
+
const unsigned char *ares_dns_multistring_combined(ares_dns_multistring_t *strs,
|
49
|
+
size_t *len);
|
50
|
+
|
51
|
+
/*! Parse an array of character strings as defined in RFC1035, as binary,
|
52
|
+
* however, for convenience this does guarantee a NULL terminator (that is
|
53
|
+
* not included in the length for each value).
|
54
|
+
*
|
55
|
+
* \param[in] buf initialized buffer object
|
56
|
+
* \param[in] remaining_len maximum length that should be used for
|
57
|
+
* parsing the string, this is often less than
|
58
|
+
* the remaining buffer and is based on the RR
|
59
|
+
* record length.
|
60
|
+
* \param[out] strs Pointer passed by reference to be filled in
|
61
|
+
* with
|
62
|
+
* the array of values.
|
63
|
+
* \param[out] validate_printable Validate the strings contain only printable
|
64
|
+
* data.
|
65
|
+
* \return ARES_SUCCESS on success
|
66
|
+
*/
|
67
|
+
ares_status_t ares_dns_multistring_parse_buf(ares_buf_t *buf,
|
68
|
+
size_t remaining_len,
|
69
|
+
ares_dns_multistring_t **strs,
|
70
|
+
ares_bool_t validate_printable);
|
71
|
+
|
72
|
+
#endif
|