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
@@ -1,43 +0,0 @@
|
|
1
|
-
#ifndef HEADER_CARES_PLATFORM_H
|
2
|
-
#define HEADER_CARES_PLATFORM_H
|
3
|
-
|
4
|
-
|
5
|
-
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
6
|
-
* Copyright (C) 2004 - 2011 by Daniel Stenberg et al
|
7
|
-
*
|
8
|
-
* Permission to use, copy, modify, and distribute this
|
9
|
-
* software and its documentation for any purpose and without
|
10
|
-
* fee is hereby granted, provided that the above copyright
|
11
|
-
* notice appear in all copies and that both that copyright
|
12
|
-
* notice and this permission notice appear in supporting
|
13
|
-
* documentation, and that the name of M.I.T. not be used in
|
14
|
-
* advertising or publicity pertaining to distribution of the
|
15
|
-
* software without specific, written prior permission.
|
16
|
-
* M.I.T. makes no representations about the suitability of
|
17
|
-
* this software for any purpose. It is provided "as is"
|
18
|
-
* without express or implied warranty.
|
19
|
-
*/
|
20
|
-
|
21
|
-
#include "ares_setup.h"
|
22
|
-
|
23
|
-
#if defined(WIN32) && !defined(MSDOS)
|
24
|
-
|
25
|
-
typedef enum {
|
26
|
-
WIN_UNKNOWN,
|
27
|
-
WIN_3X,
|
28
|
-
WIN_9X,
|
29
|
-
WIN_NT,
|
30
|
-
WIN_CE
|
31
|
-
} win_platform;
|
32
|
-
|
33
|
-
win_platform ares__getplatform(void);
|
34
|
-
|
35
|
-
#endif
|
36
|
-
|
37
|
-
#if defined(_WIN32_WCE)
|
38
|
-
|
39
|
-
struct servent *getservbyport(int port, const char *proto);
|
40
|
-
|
41
|
-
#endif
|
42
|
-
|
43
|
-
#endif /* HEADER_CARES_PLATFORM_H */
|
@@ -1,279 +0,0 @@
|
|
1
|
-
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
2
|
-
* Copyright (C) 2007-2013 by Daniel Stenberg
|
3
|
-
*
|
4
|
-
* Permission to use, copy, modify, and distribute this
|
5
|
-
* software and its documentation for any purpose and without
|
6
|
-
* fee is hereby granted, provided that the above copyright
|
7
|
-
* notice appear in all copies and that both that copyright
|
8
|
-
* notice and this permission notice appear in supporting
|
9
|
-
* documentation, and that the name of M.I.T. not be used in
|
10
|
-
* advertising or publicity pertaining to distribution of the
|
11
|
-
* software without specific, written prior permission.
|
12
|
-
* M.I.T. makes no representations about the suitability of
|
13
|
-
* this software for any purpose. It is provided "as is"
|
14
|
-
* without express or implied warranty.
|
15
|
-
*/
|
16
|
-
|
17
|
-
#include "ares_setup.h"
|
18
|
-
#include "ares.h"
|
19
|
-
#include "ares_private.h"
|
20
|
-
#include "ares_nowarn.h"
|
21
|
-
#include <stdlib.h>
|
22
|
-
|
23
|
-
typedef enum {
|
24
|
-
ARES_RAND_OS = 1, /* OS-provided such as RtlGenRandom or arc4random */
|
25
|
-
ARES_RAND_FILE = 2, /* OS file-backed random number generator */
|
26
|
-
ARES_RAND_RC4 = 3 /* Internal RC4 based PRNG */
|
27
|
-
} ares_rand_backend;
|
28
|
-
|
29
|
-
typedef struct ares_rand_rc4
|
30
|
-
{
|
31
|
-
unsigned char S[256];
|
32
|
-
size_t i;
|
33
|
-
size_t j;
|
34
|
-
} ares_rand_rc4;
|
35
|
-
|
36
|
-
struct ares_rand_state
|
37
|
-
{
|
38
|
-
ares_rand_backend type;
|
39
|
-
union {
|
40
|
-
FILE *rand_file;
|
41
|
-
ares_rand_rc4 rc4;
|
42
|
-
} state;
|
43
|
-
};
|
44
|
-
|
45
|
-
|
46
|
-
/* Define RtlGenRandom = SystemFunction036. This is in advapi32.dll. There is
|
47
|
-
* no need to dynamically load this, other software used widely does not.
|
48
|
-
* http://blogs.msdn.com/michael_howard/archive/2005/01/14/353379.aspx
|
49
|
-
* https://docs.microsoft.com/en-us/windows/win32/api/ntsecapi/nf-ntsecapi-rtlgenrandom
|
50
|
-
*/
|
51
|
-
#ifdef _WIN32
|
52
|
-
BOOLEAN WINAPI SystemFunction036(PVOID RandomBuffer, ULONG RandomBufferLength);
|
53
|
-
# ifndef RtlGenRandom
|
54
|
-
# define RtlGenRandom(a,b) SystemFunction036(a,b)
|
55
|
-
# endif
|
56
|
-
#endif
|
57
|
-
|
58
|
-
|
59
|
-
#define ARES_RC4_KEY_LEN 32 /* 256 bits */
|
60
|
-
|
61
|
-
#ifdef _MSC_VER
|
62
|
-
typedef unsigned __int64 cares_u64;
|
63
|
-
#else
|
64
|
-
typedef unsigned long long cares_u64;
|
65
|
-
#endif
|
66
|
-
|
67
|
-
static unsigned int ares_u32_from_ptr(void *addr)
|
68
|
-
{
|
69
|
-
if (sizeof(void *) == 8) {
|
70
|
-
return (unsigned int)((((cares_u64)addr >> 32) & 0xFFFFFFFF) | ((cares_u64)addr & 0xFFFFFFFF));
|
71
|
-
}
|
72
|
-
return (unsigned int)((size_t)addr & 0xFFFFFFFF);
|
73
|
-
}
|
74
|
-
|
75
|
-
|
76
|
-
/* initialize an rc4 key as the last possible fallback. */
|
77
|
-
static void ares_rc4_generate_key(ares_rand_rc4 *rc4_state, unsigned char *key, size_t key_len)
|
78
|
-
{
|
79
|
-
size_t i;
|
80
|
-
size_t len = 0;
|
81
|
-
unsigned int data;
|
82
|
-
struct timeval tv;
|
83
|
-
|
84
|
-
if (key_len != ARES_RC4_KEY_LEN)
|
85
|
-
return;
|
86
|
-
|
87
|
-
/* Randomness is hard to come by. Maybe the system randomizes heap and stack addresses.
|
88
|
-
* Maybe the current timestamp give us some randomness.
|
89
|
-
* Use rc4_state (heap), &i (stack), and ares__tvnow()
|
90
|
-
*/
|
91
|
-
data = ares_u32_from_ptr(rc4_state);
|
92
|
-
memcpy(key + len, &data, sizeof(data));
|
93
|
-
len += sizeof(data);
|
94
|
-
|
95
|
-
data = ares_u32_from_ptr(&i);
|
96
|
-
memcpy(key + len, &data, sizeof(data));
|
97
|
-
len += sizeof(data);
|
98
|
-
|
99
|
-
tv = ares__tvnow();
|
100
|
-
data = (unsigned int)((tv.tv_sec | tv.tv_usec) & 0xFFFFFFFF);
|
101
|
-
memcpy(key + len, &data, sizeof(data));
|
102
|
-
len += sizeof(data);
|
103
|
-
|
104
|
-
srand(ares_u32_from_ptr(rc4_state) | ares_u32_from_ptr(&i) | (unsigned int)((tv.tv_sec | tv.tv_usec) & 0xFFFFFFFF));
|
105
|
-
|
106
|
-
for (i=len; i<key_len; i++) {
|
107
|
-
key[i]=(unsigned char)(rand() % 256); /* LCOV_EXCL_LINE */
|
108
|
-
}
|
109
|
-
}
|
110
|
-
|
111
|
-
|
112
|
-
static void ares_rc4_init(ares_rand_rc4 *rc4_state)
|
113
|
-
{
|
114
|
-
unsigned char key[ARES_RC4_KEY_LEN];
|
115
|
-
size_t i;
|
116
|
-
size_t j;
|
117
|
-
|
118
|
-
ares_rc4_generate_key(rc4_state, key, sizeof(key));
|
119
|
-
|
120
|
-
for (i = 0; i < sizeof(rc4_state->S); i++) {
|
121
|
-
rc4_state->S[i] = i & 0xFF;
|
122
|
-
}
|
123
|
-
|
124
|
-
for(i = 0, j = 0; i < 256; i++) {
|
125
|
-
j = (j + rc4_state->S[i] + key[i % sizeof(key)]) % 256;
|
126
|
-
ARES_SWAP_BYTE(&rc4_state->S[i], &rc4_state->S[j]);
|
127
|
-
}
|
128
|
-
|
129
|
-
rc4_state->i = 0;
|
130
|
-
rc4_state->j = 0;
|
131
|
-
}
|
132
|
-
|
133
|
-
/* Just outputs the key schedule, no need to XOR with any data since we have none */
|
134
|
-
static void ares_rc4_prng(ares_rand_rc4 *rc4_state, unsigned char *buf, size_t len)
|
135
|
-
{
|
136
|
-
unsigned char *S = rc4_state->S;
|
137
|
-
size_t i = rc4_state->i;
|
138
|
-
size_t j = rc4_state->j;
|
139
|
-
size_t cnt;
|
140
|
-
|
141
|
-
for (cnt=0; cnt<len; cnt++) {
|
142
|
-
i = (i + 1) % 256;
|
143
|
-
j = (j + S[i]) % 256;
|
144
|
-
|
145
|
-
ARES_SWAP_BYTE(&S[i], &S[j]);
|
146
|
-
buf[cnt] = S[(S[i] + S[j]) % 256];
|
147
|
-
}
|
148
|
-
|
149
|
-
rc4_state->i = i;
|
150
|
-
rc4_state->j = j;
|
151
|
-
}
|
152
|
-
|
153
|
-
|
154
|
-
static int ares__init_rand_engine(ares_rand_state *state)
|
155
|
-
{
|
156
|
-
memset(state, 0, sizeof(*state));
|
157
|
-
|
158
|
-
#if defined(HAVE_ARC4RANDOM_BUF) || defined(_WIN32)
|
159
|
-
state->type = ARES_RAND_OS;
|
160
|
-
return 1;
|
161
|
-
#elif defined(CARES_RANDOM_FILE)
|
162
|
-
state->type = ARES_RAND_FILE;
|
163
|
-
state->state.rand_file = fopen(CARES_RANDOM_FILE, "rb");
|
164
|
-
if (state->state.rand_file) {
|
165
|
-
setvbuf(state->state.rand_file, NULL, _IONBF, 0);
|
166
|
-
return 1;
|
167
|
-
}
|
168
|
-
/* Fall-Thru on failure to RC4 */
|
169
|
-
#endif
|
170
|
-
|
171
|
-
state->type = ARES_RAND_RC4;
|
172
|
-
ares_rc4_init(&state->state.rc4);
|
173
|
-
|
174
|
-
/* Currently cannot fail */
|
175
|
-
return 1;
|
176
|
-
}
|
177
|
-
|
178
|
-
|
179
|
-
ares_rand_state *ares__init_rand_state()
|
180
|
-
{
|
181
|
-
ares_rand_state *state = NULL;
|
182
|
-
|
183
|
-
state = ares_malloc(sizeof(*state));
|
184
|
-
if (!state)
|
185
|
-
return NULL;
|
186
|
-
|
187
|
-
if (!ares__init_rand_engine(state)) {
|
188
|
-
ares_free(state);
|
189
|
-
return NULL;
|
190
|
-
}
|
191
|
-
|
192
|
-
return state;
|
193
|
-
}
|
194
|
-
|
195
|
-
|
196
|
-
static void ares__clear_rand_state(ares_rand_state *state)
|
197
|
-
{
|
198
|
-
if (!state)
|
199
|
-
return;
|
200
|
-
|
201
|
-
switch (state->type) {
|
202
|
-
case ARES_RAND_OS:
|
203
|
-
break;
|
204
|
-
case ARES_RAND_FILE:
|
205
|
-
fclose(state->state.rand_file);
|
206
|
-
break;
|
207
|
-
case ARES_RAND_RC4:
|
208
|
-
break;
|
209
|
-
}
|
210
|
-
}
|
211
|
-
|
212
|
-
|
213
|
-
static void ares__reinit_rand(ares_rand_state *state)
|
214
|
-
{
|
215
|
-
ares__clear_rand_state(state);
|
216
|
-
ares__init_rand_engine(state);
|
217
|
-
}
|
218
|
-
|
219
|
-
|
220
|
-
void ares__destroy_rand_state(ares_rand_state *state)
|
221
|
-
{
|
222
|
-
if (!state)
|
223
|
-
return;
|
224
|
-
|
225
|
-
ares__clear_rand_state(state);
|
226
|
-
ares_free(state);
|
227
|
-
}
|
228
|
-
|
229
|
-
|
230
|
-
static void ares__rand_bytes(ares_rand_state *state, unsigned char *buf, size_t len)
|
231
|
-
{
|
232
|
-
|
233
|
-
while (1) {
|
234
|
-
size_t bytes_read = 0;
|
235
|
-
|
236
|
-
switch (state->type) {
|
237
|
-
case ARES_RAND_OS:
|
238
|
-
#ifdef _WIN32
|
239
|
-
RtlGenRandom(buf, len);
|
240
|
-
return;
|
241
|
-
#elif defined(HAVE_ARC4RANDOM_BUF)
|
242
|
-
arc4random_buf(buf, len);
|
243
|
-
return;
|
244
|
-
#else
|
245
|
-
/* Shouldn't be possible to be here */
|
246
|
-
break;
|
247
|
-
#endif
|
248
|
-
|
249
|
-
case ARES_RAND_FILE:
|
250
|
-
while (1) {
|
251
|
-
size_t rv = fread(buf + bytes_read, 1, len - bytes_read, state->state.rand_file);
|
252
|
-
if (rv == 0)
|
253
|
-
break; /* critical error, will reinit rand state */
|
254
|
-
|
255
|
-
bytes_read += rv;
|
256
|
-
if (bytes_read == len)
|
257
|
-
return;
|
258
|
-
}
|
259
|
-
break;
|
260
|
-
|
261
|
-
case ARES_RAND_RC4:
|
262
|
-
ares_rc4_prng(&state->state.rc4, buf, len);
|
263
|
-
return;
|
264
|
-
}
|
265
|
-
|
266
|
-
/* If we didn't return before we got here, that means we had a critical rand
|
267
|
-
* failure and need to reinitialized */
|
268
|
-
ares__reinit_rand(state);
|
269
|
-
}
|
270
|
-
}
|
271
|
-
|
272
|
-
unsigned short ares__generate_new_id(ares_rand_state *state)
|
273
|
-
{
|
274
|
-
unsigned short r=0;
|
275
|
-
|
276
|
-
ares__rand_bytes(state, (unsigned char *)&r, sizeof(r));
|
277
|
-
return r;
|
278
|
-
}
|
279
|
-
|
@@ -1,66 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
4
|
-
*
|
5
|
-
* Permission to use, copy, modify, and distribute this
|
6
|
-
* software and its documentation for any purpose and without
|
7
|
-
* fee is hereby granted, provided that the above copyright
|
8
|
-
* notice appear in all copies and that both that copyright
|
9
|
-
* notice and this permission notice appear in supporting
|
10
|
-
* documentation, and that the name of M.I.T. not be used in
|
11
|
-
* advertising or publicity pertaining to distribution of the
|
12
|
-
* software without specific, written prior permission.
|
13
|
-
* M.I.T. makes no representations about the suitability of
|
14
|
-
* this software for any purpose. It is provided "as is"
|
15
|
-
* without express or implied warranty.
|
16
|
-
*/
|
17
|
-
|
18
|
-
#include "ares_setup.h"
|
19
|
-
#include "ares_strcasecmp.h"
|
20
|
-
|
21
|
-
#ifndef HAVE_STRCASECMP
|
22
|
-
int ares_strcasecmp(const char *a, const char *b)
|
23
|
-
{
|
24
|
-
#if defined(HAVE_STRCMPI)
|
25
|
-
return strcmpi(a, b);
|
26
|
-
#elif defined(HAVE_STRICMP)
|
27
|
-
return stricmp(a, b);
|
28
|
-
#else
|
29
|
-
size_t i;
|
30
|
-
|
31
|
-
for (i = 0; i < (size_t)-1; i++) {
|
32
|
-
int c1 = ISUPPER(a[i]) ? tolower(a[i]) : a[i];
|
33
|
-
int c2 = ISUPPER(b[i]) ? tolower(b[i]) : b[i];
|
34
|
-
if (c1 != c2)
|
35
|
-
return c1-c2;
|
36
|
-
if (!c1)
|
37
|
-
break;
|
38
|
-
}
|
39
|
-
return 0;
|
40
|
-
#endif
|
41
|
-
}
|
42
|
-
#endif
|
43
|
-
|
44
|
-
#ifndef HAVE_STRNCASECMP
|
45
|
-
int ares_strncasecmp(const char *a, const char *b, size_t n)
|
46
|
-
{
|
47
|
-
#if defined(HAVE_STRNCMPI)
|
48
|
-
return strncmpi(a, b, n);
|
49
|
-
#elif defined(HAVE_STRNICMP)
|
50
|
-
return strnicmp(a, b, n);
|
51
|
-
#else
|
52
|
-
size_t i;
|
53
|
-
|
54
|
-
for (i = 0; i < n; i++) {
|
55
|
-
int c1 = ISUPPER(a[i]) ? tolower(a[i]) : a[i];
|
56
|
-
int c2 = ISUPPER(b[i]) ? tolower(b[i]) : b[i];
|
57
|
-
if (c1 != c2)
|
58
|
-
return c1-c2;
|
59
|
-
if (!c1)
|
60
|
-
break;
|
61
|
-
}
|
62
|
-
return 0;
|
63
|
-
#endif
|
64
|
-
}
|
65
|
-
#endif
|
66
|
-
|
@@ -1,30 +0,0 @@
|
|
1
|
-
#ifndef HEADER_CARES_STRCASECMP_H
|
2
|
-
#define HEADER_CARES_STRCASECMP_H
|
3
|
-
|
4
|
-
|
5
|
-
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
6
|
-
*
|
7
|
-
* Permission to use, copy, modify, and distribute this
|
8
|
-
* software and its documentation for any purpose and without
|
9
|
-
* fee is hereby granted, provided that the above copyright
|
10
|
-
* notice appear in all copies and that both that copyright
|
11
|
-
* notice and this permission notice appear in supporting
|
12
|
-
* documentation, and that the name of M.I.T. not be used in
|
13
|
-
* advertising or publicity pertaining to distribution of the
|
14
|
-
* software without specific, written prior permission.
|
15
|
-
* M.I.T. makes no representations about the suitability of
|
16
|
-
* this software for any purpose. It is provided "as is"
|
17
|
-
* without express or implied warranty.
|
18
|
-
*/
|
19
|
-
|
20
|
-
#include "ares_setup.h"
|
21
|
-
|
22
|
-
#ifndef HAVE_STRCASECMP
|
23
|
-
extern int ares_strcasecmp(const char *a, const char *b);
|
24
|
-
#endif
|
25
|
-
|
26
|
-
#ifndef HAVE_STRNCASECMP
|
27
|
-
extern int ares_strncasecmp(const char *a, const char *b, size_t n);
|
28
|
-
#endif
|
29
|
-
|
30
|
-
#endif /* HEADER_CARES_STRCASECMP_H */
|
@@ -1,42 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
4
|
-
*
|
5
|
-
* Permission to use, copy, modify, and distribute this
|
6
|
-
* software and its documentation for any purpose and without
|
7
|
-
* fee is hereby granted, provided that the above copyright
|
8
|
-
* notice appear in all copies and that both that copyright
|
9
|
-
* notice and this permission notice appear in supporting
|
10
|
-
* documentation, and that the name of M.I.T. not be used in
|
11
|
-
* advertising or publicity pertaining to distribution of the
|
12
|
-
* software without specific, written prior permission.
|
13
|
-
* M.I.T. makes no representations about the suitability of
|
14
|
-
* this software for any purpose. It is provided "as is"
|
15
|
-
* without express or implied warranty.
|
16
|
-
*/
|
17
|
-
|
18
|
-
#include "ares_setup.h"
|
19
|
-
#include "ares_strdup.h"
|
20
|
-
#include "ares.h"
|
21
|
-
#include "ares_private.h"
|
22
|
-
|
23
|
-
char *ares_strdup(const char *s1)
|
24
|
-
{
|
25
|
-
size_t sz;
|
26
|
-
char * s2;
|
27
|
-
|
28
|
-
if(s1) {
|
29
|
-
sz = strlen(s1);
|
30
|
-
if(sz < (size_t)-1) {
|
31
|
-
sz++;
|
32
|
-
if(sz < ((size_t)-1)) {
|
33
|
-
s2 = ares_malloc(sz);
|
34
|
-
if(s2) {
|
35
|
-
memcpy(s2, s1, sz);
|
36
|
-
return s2;
|
37
|
-
}
|
38
|
-
}
|
39
|
-
}
|
40
|
-
}
|
41
|
-
return (char *)NULL;
|
42
|
-
}
|
@@ -1,24 +0,0 @@
|
|
1
|
-
#ifndef HEADER_CARES_STRDUP_H
|
2
|
-
#define HEADER_CARES_STRDUP_H
|
3
|
-
|
4
|
-
|
5
|
-
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
6
|
-
*
|
7
|
-
* Permission to use, copy, modify, and distribute this
|
8
|
-
* software and its documentation for any purpose and without
|
9
|
-
* fee is hereby granted, provided that the above copyright
|
10
|
-
* notice appear in all copies and that both that copyright
|
11
|
-
* notice and this permission notice appear in supporting
|
12
|
-
* documentation, and that the name of M.I.T. not be used in
|
13
|
-
* advertising or publicity pertaining to distribution of the
|
14
|
-
* software without specific, written prior permission.
|
15
|
-
* M.I.T. makes no representations about the suitability of
|
16
|
-
* this software for any purpose. It is provided "as is"
|
17
|
-
* without express or implied warranty.
|
18
|
-
*/
|
19
|
-
|
20
|
-
#include "ares_setup.h"
|
21
|
-
|
22
|
-
extern char *ares_strdup(const char *s1);
|
23
|
-
|
24
|
-
#endif /* HEADER_CARES_STRDUP_H */
|
@@ -1,94 +0,0 @@
|
|
1
|
-
/* Copyright (C) 2018 by John Schember <john@nachtimwald.com>
|
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
|
-
#if defined(__MVS__)
|
17
|
-
#include <strings.h>
|
18
|
-
#endif
|
19
|
-
|
20
|
-
#include "ares_setup.h"
|
21
|
-
#include "ares.h"
|
22
|
-
#include "ares_private.h"
|
23
|
-
|
24
|
-
void ares__strsplit_free(char **elms, size_t num_elm)
|
25
|
-
{
|
26
|
-
size_t i;
|
27
|
-
|
28
|
-
if (elms == NULL)
|
29
|
-
return;
|
30
|
-
|
31
|
-
for (i=0; i<num_elm; i++)
|
32
|
-
ares_free(elms[i]);
|
33
|
-
ares_free(elms);
|
34
|
-
}
|
35
|
-
|
36
|
-
char **ares__strsplit(const char *in, const char *delms, size_t *num_elm) {
|
37
|
-
const char *p;
|
38
|
-
char **table;
|
39
|
-
void *tmp;
|
40
|
-
size_t i, j, k, count;
|
41
|
-
|
42
|
-
if (in == NULL || delms == NULL || num_elm == NULL)
|
43
|
-
return NULL;
|
44
|
-
|
45
|
-
*num_elm = 0;
|
46
|
-
|
47
|
-
/* count non-empty delimited substrings */
|
48
|
-
count = 0;
|
49
|
-
p = in;
|
50
|
-
do {
|
51
|
-
i = strcspn(p, delms);
|
52
|
-
if (i != 0) {
|
53
|
-
/* string is non-empty */
|
54
|
-
count++;
|
55
|
-
p += i;
|
56
|
-
}
|
57
|
-
} while (*p++ != 0);
|
58
|
-
|
59
|
-
if (count == 0)
|
60
|
-
return NULL;
|
61
|
-
table = ares_malloc(count * sizeof(*table));
|
62
|
-
if (table == NULL)
|
63
|
-
return NULL;
|
64
|
-
|
65
|
-
j = 0; /* current table entry */
|
66
|
-
/* re-calculate indices and allocate new strings for table */
|
67
|
-
for (p = in; j < count; p += i + 1) {
|
68
|
-
i = strcspn(p, delms);
|
69
|
-
if (i != 0) {
|
70
|
-
for (k = 0; k < j; k++) {
|
71
|
-
if (strncasecmp(table[k], p, i) == 0 && table[k][i] == 0)
|
72
|
-
break;
|
73
|
-
}
|
74
|
-
if (k == j) {
|
75
|
-
/* copy unique strings only */
|
76
|
-
table[j] = ares_malloc(i + 1);
|
77
|
-
if (table[j] == NULL) {
|
78
|
-
ares__strsplit_free(table, j);
|
79
|
-
return NULL;
|
80
|
-
}
|
81
|
-
strncpy(table[j], p, i);
|
82
|
-
table[j++][i] = 0;
|
83
|
-
} else
|
84
|
-
count--;
|
85
|
-
}
|
86
|
-
}
|
87
|
-
|
88
|
-
tmp = ares_realloc(table, count * sizeof (*table));
|
89
|
-
if (tmp != NULL)
|
90
|
-
table = tmp;
|
91
|
-
|
92
|
-
*num_elm = count;
|
93
|
-
return table;
|
94
|
-
}
|
@@ -1,42 +0,0 @@
|
|
1
|
-
#ifndef HEADER_CARES_STRSPLIT_H
|
2
|
-
#define HEADER_CARES_STRSPLIT_H
|
3
|
-
|
4
|
-
/* Copyright (C) 2018 by John Schember <john@nachtimwald.com>
|
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
|
-
/* Split a string on delms skipping empty or duplicate elements.
|
22
|
-
*
|
23
|
-
* param in String to split.
|
24
|
-
* param delms String of characters to treat as a delimitor.
|
25
|
-
* Each character in the string is a delimitor so
|
26
|
-
* there can be multiple delimitors to split on.
|
27
|
-
* E.g. ", " will split on all comma's and spaces.
|
28
|
-
* Duplicate entries are removed.
|
29
|
-
* param num_elm Return parameter of the number of elements
|
30
|
-
* in the result array.
|
31
|
-
*
|
32
|
-
* returns an allocated array of allocated string elements.
|
33
|
-
*
|
34
|
-
*/
|
35
|
-
char **ares__strsplit(const char *in, const char *delms, size_t *num_elm);
|
36
|
-
|
37
|
-
/* Frees the result returned from ares__strsplit(). */
|
38
|
-
void ares__strsplit_free(char **elms, size_t num_elm);
|
39
|
-
|
40
|
-
|
41
|
-
#endif /* HEADER_CARES_STRSPLIT_H */
|
42
|
-
|
@@ -1,79 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
4
|
-
*
|
5
|
-
* Permission to use, copy, modify, and distribute this
|
6
|
-
* software and its documentation for any purpose and without
|
7
|
-
* fee is hereby granted, provided that the above copyright
|
8
|
-
* notice appear in all copies and that both that copyright
|
9
|
-
* notice and this permission notice appear in supporting
|
10
|
-
* documentation, and that the name of M.I.T. not be used in
|
11
|
-
* advertising or publicity pertaining to distribution of the
|
12
|
-
* software without specific, written prior permission.
|
13
|
-
* M.I.T. makes no representations about the suitability of
|
14
|
-
* this software for any purpose. It is provided "as is"
|
15
|
-
* without express or implied warranty.
|
16
|
-
*/
|
17
|
-
|
18
|
-
#include "ares_setup.h"
|
19
|
-
|
20
|
-
#ifdef HAVE_LIMITS_H
|
21
|
-
# include <limits.h>
|
22
|
-
#endif
|
23
|
-
|
24
|
-
#include "ares.h"
|
25
|
-
#include "ares_private.h"
|
26
|
-
|
27
|
-
#ifndef HAVE_WRITEV
|
28
|
-
ares_ssize_t ares_writev(ares_socket_t s, const struct iovec *iov, int iovcnt)
|
29
|
-
{
|
30
|
-
char *buffer, *bp;
|
31
|
-
int i;
|
32
|
-
size_t bytes = 0;
|
33
|
-
ares_ssize_t result;
|
34
|
-
|
35
|
-
/* Validate iovcnt */
|
36
|
-
if (iovcnt <= 0)
|
37
|
-
{
|
38
|
-
SET_ERRNO(EINVAL);
|
39
|
-
return (-1);
|
40
|
-
}
|
41
|
-
|
42
|
-
/* Validate and find the sum of the iov_len values in the iov array */
|
43
|
-
for (i = 0; i < iovcnt; i++)
|
44
|
-
{
|
45
|
-
if (iov[i].iov_len > INT_MAX - bytes)
|
46
|
-
{
|
47
|
-
SET_ERRNO(EINVAL);
|
48
|
-
return (-1);
|
49
|
-
}
|
50
|
-
bytes += iov[i].iov_len;
|
51
|
-
}
|
52
|
-
|
53
|
-
if (bytes == 0)
|
54
|
-
return (0);
|
55
|
-
|
56
|
-
/* Allocate a temporary buffer to hold the data */
|
57
|
-
buffer = ares_malloc(bytes);
|
58
|
-
if (!buffer)
|
59
|
-
{
|
60
|
-
SET_ERRNO(ENOMEM);
|
61
|
-
return (-1);
|
62
|
-
}
|
63
|
-
|
64
|
-
/* Copy the data into buffer */
|
65
|
-
for (bp = buffer, i = 0; i < iovcnt; ++i)
|
66
|
-
{
|
67
|
-
memcpy (bp, iov[i].iov_base, iov[i].iov_len);
|
68
|
-
bp += iov[i].iov_len;
|
69
|
-
}
|
70
|
-
|
71
|
-
/* Send buffer contents */
|
72
|
-
result = swrite(s, buffer, bytes);
|
73
|
-
|
74
|
-
ares_free(buffer);
|
75
|
-
|
76
|
-
return (result);
|
77
|
-
}
|
78
|
-
#endif
|
79
|
-
|