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,28 +1,36 @@
|
|
1
|
-
/*
|
1
|
+
/* MIT License
|
2
2
|
*
|
3
|
-
*
|
4
|
-
*
|
5
|
-
*
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
9
|
-
*
|
10
|
-
*
|
11
|
-
*
|
12
|
-
*
|
13
|
-
*
|
3
|
+
* Copyright (c) John Schember
|
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
|
14
25
|
*/
|
15
26
|
#if defined(ANDROID) || defined(__ANDROID__)
|
27
|
+
# include "ares_private.h"
|
28
|
+
# include <jni.h>
|
29
|
+
# include <sys/prctl.h>
|
30
|
+
# include "ares_android.h"
|
16
31
|
|
17
|
-
|
18
|
-
|
19
|
-
#include "ares_setup.h"
|
20
|
-
#include "ares.h"
|
21
|
-
#include "ares_android.h"
|
22
|
-
#include "ares_private.h"
|
23
|
-
|
24
|
-
static JavaVM *android_jvm = NULL;
|
25
|
-
static jobject android_connectivity_manager = NULL;
|
32
|
+
static JavaVM *android_jvm = NULL;
|
33
|
+
static jobject android_connectivity_manager = NULL;
|
26
34
|
|
27
35
|
/* ConnectivityManager.getActiveNetwork */
|
28
36
|
static jmethodID android_cm_active_net_mid = NULL;
|
@@ -39,12 +47,13 @@ static jmethodID android_list_get_mid = NULL;
|
|
39
47
|
/* InetAddress.getHostAddress */
|
40
48
|
static jmethodID android_ia_host_addr_mid = NULL;
|
41
49
|
|
42
|
-
static jclass
|
50
|
+
static jclass jni_get_class(JNIEnv *env, const char *path)
|
43
51
|
{
|
44
52
|
jclass cls = NULL;
|
45
53
|
|
46
|
-
if (env == NULL || path == NULL || *path == '\0')
|
54
|
+
if (env == NULL || path == NULL || *path == '\0') {
|
47
55
|
return NULL;
|
56
|
+
}
|
48
57
|
|
49
58
|
cls = (*env)->FindClass(env, path);
|
50
59
|
if ((*env)->ExceptionOccurred(env)) {
|
@@ -60,14 +69,12 @@ static jmethodID jni_get_method_id(JNIEnv *env, jclass cls,
|
|
60
69
|
jmethodID mid = NULL;
|
61
70
|
|
62
71
|
if (env == NULL || cls == NULL || func_name == NULL || *func_name == '\0' ||
|
63
|
-
|
64
|
-
{
|
72
|
+
signature == NULL || *signature == '\0') {
|
65
73
|
return NULL;
|
66
74
|
}
|
67
75
|
|
68
76
|
mid = (*env)->GetMethodID(env, cls, func_name, signature);
|
69
|
-
if ((*env)->ExceptionOccurred(env))
|
70
|
-
{
|
77
|
+
if ((*env)->ExceptionOccurred(env)) {
|
71
78
|
(*env)->ExceptionClear(env);
|
72
79
|
return NULL;
|
73
80
|
}
|
@@ -75,6 +82,23 @@ static jmethodID jni_get_method_id(JNIEnv *env, jclass cls,
|
|
75
82
|
return mid;
|
76
83
|
}
|
77
84
|
|
85
|
+
static int jvm_attach(JNIEnv **env)
|
86
|
+
{
|
87
|
+
char name[17] = { 0 };
|
88
|
+
|
89
|
+
JavaVMAttachArgs args;
|
90
|
+
|
91
|
+
args.version = JNI_VERSION_1_6;
|
92
|
+
if (prctl(PR_GET_NAME, name) == 0) {
|
93
|
+
args.name = name;
|
94
|
+
} else {
|
95
|
+
args.name = NULL;
|
96
|
+
}
|
97
|
+
args.group = NULL;
|
98
|
+
|
99
|
+
return (*android_jvm)->AttachCurrentThread(android_jvm, env, &args);
|
100
|
+
}
|
101
|
+
|
78
102
|
void ares_library_init_jvm(JavaVM *jvm)
|
79
103
|
{
|
80
104
|
android_jvm = jvm;
|
@@ -82,29 +106,31 @@ void ares_library_init_jvm(JavaVM *jvm)
|
|
82
106
|
|
83
107
|
int ares_library_init_android(jobject connectivity_manager)
|
84
108
|
{
|
85
|
-
JNIEnv
|
86
|
-
int
|
87
|
-
int
|
88
|
-
|
89
|
-
jclass
|
109
|
+
JNIEnv *env = NULL;
|
110
|
+
int need_detatch = 0;
|
111
|
+
int res;
|
112
|
+
ares_status_t ret = ARES_ENOTINITIALIZED;
|
113
|
+
jclass obj_cls = NULL;
|
90
114
|
|
91
|
-
if (android_jvm == NULL)
|
115
|
+
if (android_jvm == NULL) {
|
92
116
|
goto cleanup;
|
117
|
+
}
|
93
118
|
|
94
119
|
res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6);
|
95
|
-
if (res == JNI_EDETACHED)
|
96
|
-
|
97
|
-
|
98
|
-
res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL);
|
120
|
+
if (res == JNI_EDETACHED) {
|
121
|
+
env = NULL;
|
122
|
+
res = jvm_attach(&env);
|
99
123
|
need_detatch = 1;
|
100
124
|
}
|
101
|
-
if (res != JNI_OK || env == NULL)
|
125
|
+
if (res != JNI_OK || env == NULL) {
|
102
126
|
goto cleanup;
|
127
|
+
}
|
103
128
|
|
104
129
|
android_connectivity_manager =
|
105
|
-
|
106
|
-
if (android_connectivity_manager == NULL)
|
130
|
+
(*env)->NewGlobalRef(env, connectivity_manager);
|
131
|
+
if (android_connectivity_manager == NULL) {
|
107
132
|
goto cleanup;
|
133
|
+
}
|
108
134
|
|
109
135
|
/* Initialization has succeeded. Now attempt to cache the methods that will be
|
110
136
|
* called by ares_get_android_server_list. */
|
@@ -112,166 +138,178 @@ int ares_library_init_android(jobject connectivity_manager)
|
|
112
138
|
|
113
139
|
/* ConnectivityManager in API 1. */
|
114
140
|
obj_cls = jni_get_class(env, "android/net/ConnectivityManager");
|
115
|
-
if (obj_cls == NULL)
|
141
|
+
if (obj_cls == NULL) {
|
116
142
|
goto cleanup;
|
143
|
+
}
|
117
144
|
|
118
145
|
/* ConnectivityManager.getActiveNetwork in API 23. */
|
119
|
-
android_cm_active_net_mid =
|
120
|
-
|
121
|
-
|
122
|
-
if (android_cm_active_net_mid == NULL)
|
146
|
+
android_cm_active_net_mid = jni_get_method_id(
|
147
|
+
env, obj_cls, "getActiveNetwork", "()Landroid/net/Network;");
|
148
|
+
if (android_cm_active_net_mid == NULL) {
|
123
149
|
goto cleanup;
|
150
|
+
}
|
124
151
|
|
125
152
|
/* ConnectivityManager.getLinkProperties in API 21. */
|
126
153
|
android_cm_link_props_mid =
|
127
|
-
|
128
|
-
|
129
|
-
if (android_cm_link_props_mid == NULL)
|
154
|
+
jni_get_method_id(env, obj_cls, "getLinkProperties",
|
155
|
+
"(Landroid/net/Network;)Landroid/net/LinkProperties;");
|
156
|
+
if (android_cm_link_props_mid == NULL) {
|
130
157
|
goto cleanup;
|
158
|
+
}
|
131
159
|
|
132
160
|
/* LinkProperties in API 21. */
|
133
161
|
(*env)->DeleteLocalRef(env, obj_cls);
|
134
162
|
obj_cls = jni_get_class(env, "android/net/LinkProperties");
|
135
|
-
if (obj_cls == NULL)
|
163
|
+
if (obj_cls == NULL) {
|
136
164
|
goto cleanup;
|
165
|
+
}
|
137
166
|
|
138
167
|
/* getDnsServers in API 21. */
|
139
|
-
android_lp_dns_servers_mid =
|
140
|
-
|
141
|
-
if (android_lp_dns_servers_mid == NULL)
|
168
|
+
android_lp_dns_servers_mid =
|
169
|
+
jni_get_method_id(env, obj_cls, "getDnsServers", "()Ljava/util/List;");
|
170
|
+
if (android_lp_dns_servers_mid == NULL) {
|
142
171
|
goto cleanup;
|
172
|
+
}
|
143
173
|
|
144
174
|
/* getDomains in API 21. */
|
145
|
-
android_lp_domains_mid =
|
146
|
-
|
147
|
-
if (android_lp_domains_mid == NULL)
|
175
|
+
android_lp_domains_mid =
|
176
|
+
jni_get_method_id(env, obj_cls, "getDomains", "()Ljava/lang/String;");
|
177
|
+
if (android_lp_domains_mid == NULL) {
|
148
178
|
goto cleanup;
|
179
|
+
}
|
149
180
|
|
150
181
|
(*env)->DeleteLocalRef(env, obj_cls);
|
151
182
|
obj_cls = jni_get_class(env, "java/util/List");
|
152
|
-
if (obj_cls == NULL)
|
183
|
+
if (obj_cls == NULL) {
|
153
184
|
goto cleanup;
|
185
|
+
}
|
154
186
|
|
155
187
|
android_list_size_mid = jni_get_method_id(env, obj_cls, "size", "()I");
|
156
|
-
if (android_list_size_mid == NULL)
|
188
|
+
if (android_list_size_mid == NULL) {
|
157
189
|
goto cleanup;
|
190
|
+
}
|
158
191
|
|
159
|
-
android_list_get_mid =
|
160
|
-
|
161
|
-
if (android_list_get_mid == NULL)
|
192
|
+
android_list_get_mid =
|
193
|
+
jni_get_method_id(env, obj_cls, "get", "(I)Ljava/lang/Object;");
|
194
|
+
if (android_list_get_mid == NULL) {
|
162
195
|
goto cleanup;
|
196
|
+
}
|
163
197
|
|
164
198
|
(*env)->DeleteLocalRef(env, obj_cls);
|
165
199
|
obj_cls = jni_get_class(env, "java/net/InetAddress");
|
166
|
-
if (obj_cls == NULL)
|
200
|
+
if (obj_cls == NULL) {
|
167
201
|
goto cleanup;
|
202
|
+
}
|
168
203
|
|
169
|
-
android_ia_host_addr_mid =
|
170
|
-
|
171
|
-
if (android_ia_host_addr_mid == NULL)
|
204
|
+
android_ia_host_addr_mid =
|
205
|
+
jni_get_method_id(env, obj_cls, "getHostAddress", "()Ljava/lang/String;");
|
206
|
+
if (android_ia_host_addr_mid == NULL) {
|
172
207
|
goto cleanup;
|
208
|
+
}
|
173
209
|
|
174
210
|
(*env)->DeleteLocalRef(env, obj_cls);
|
175
211
|
goto done;
|
176
212
|
|
177
213
|
cleanup:
|
178
|
-
if (obj_cls != NULL)
|
214
|
+
if (obj_cls != NULL) {
|
179
215
|
(*env)->DeleteLocalRef(env, obj_cls);
|
216
|
+
}
|
180
217
|
|
181
|
-
android_cm_active_net_mid
|
182
|
-
android_cm_link_props_mid
|
218
|
+
android_cm_active_net_mid = NULL;
|
219
|
+
android_cm_link_props_mid = NULL;
|
183
220
|
android_lp_dns_servers_mid = NULL;
|
184
|
-
android_lp_domains_mid
|
185
|
-
android_list_size_mid
|
186
|
-
android_list_get_mid
|
187
|
-
android_ia_host_addr_mid
|
221
|
+
android_lp_domains_mid = NULL;
|
222
|
+
android_list_size_mid = NULL;
|
223
|
+
android_list_get_mid = NULL;
|
224
|
+
android_ia_host_addr_mid = NULL;
|
188
225
|
|
189
226
|
done:
|
190
|
-
if (need_detatch)
|
227
|
+
if (need_detatch) {
|
191
228
|
(*android_jvm)->DetachCurrentThread(android_jvm);
|
229
|
+
}
|
192
230
|
|
193
|
-
return ret;
|
231
|
+
return (int)ret;
|
194
232
|
}
|
195
233
|
|
196
234
|
int ares_library_android_initialized(void)
|
197
235
|
{
|
198
|
-
if (android_jvm == NULL || android_connectivity_manager == NULL)
|
236
|
+
if (android_jvm == NULL || android_connectivity_manager == NULL) {
|
199
237
|
return ARES_ENOTINITIALIZED;
|
238
|
+
}
|
200
239
|
return ARES_SUCCESS;
|
201
240
|
}
|
202
241
|
|
203
242
|
void ares_library_cleanup_android(void)
|
204
243
|
{
|
205
|
-
JNIEnv *env
|
206
|
-
int
|
207
|
-
int
|
244
|
+
JNIEnv *env = NULL;
|
245
|
+
int need_detatch = 0;
|
246
|
+
int res;
|
208
247
|
|
209
|
-
if (android_jvm == NULL || android_connectivity_manager == NULL)
|
248
|
+
if (android_jvm == NULL || android_connectivity_manager == NULL) {
|
210
249
|
return;
|
250
|
+
}
|
211
251
|
|
212
252
|
res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6);
|
213
|
-
if (res == JNI_EDETACHED)
|
214
|
-
|
215
|
-
|
216
|
-
res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL);
|
253
|
+
if (res == JNI_EDETACHED) {
|
254
|
+
env = NULL;
|
255
|
+
res = jvm_attach(&env);
|
217
256
|
need_detatch = 1;
|
218
257
|
}
|
219
|
-
if (res != JNI_OK || env == NULL)
|
258
|
+
if (res != JNI_OK || env == NULL) {
|
220
259
|
return;
|
260
|
+
}
|
221
261
|
|
222
|
-
android_cm_active_net_mid
|
223
|
-
android_cm_link_props_mid
|
262
|
+
android_cm_active_net_mid = NULL;
|
263
|
+
android_cm_link_props_mid = NULL;
|
224
264
|
android_lp_dns_servers_mid = NULL;
|
225
|
-
android_lp_domains_mid
|
226
|
-
android_list_size_mid
|
227
|
-
android_list_get_mid
|
228
|
-
android_ia_host_addr_mid
|
265
|
+
android_lp_domains_mid = NULL;
|
266
|
+
android_list_size_mid = NULL;
|
267
|
+
android_list_get_mid = NULL;
|
268
|
+
android_ia_host_addr_mid = NULL;
|
229
269
|
|
230
270
|
(*env)->DeleteGlobalRef(env, android_connectivity_manager);
|
231
271
|
android_connectivity_manager = NULL;
|
232
272
|
|
233
|
-
if (need_detatch)
|
273
|
+
if (need_detatch) {
|
234
274
|
(*android_jvm)->DetachCurrentThread(android_jvm);
|
275
|
+
}
|
235
276
|
}
|
236
277
|
|
237
|
-
char **ares_get_android_server_list(size_t max_servers,
|
238
|
-
size_t *num_servers)
|
278
|
+
char **ares_get_android_server_list(size_t max_servers, size_t *num_servers)
|
239
279
|
{
|
240
|
-
JNIEnv
|
241
|
-
jobject
|
242
|
-
jobject
|
243
|
-
jobject
|
244
|
-
jobject
|
245
|
-
jstring
|
246
|
-
jint
|
280
|
+
JNIEnv *env = NULL;
|
281
|
+
jobject active_network = NULL;
|
282
|
+
jobject link_properties = NULL;
|
283
|
+
jobject server_list = NULL;
|
284
|
+
jobject server = NULL;
|
285
|
+
jstring str = NULL;
|
286
|
+
jint nserv;
|
247
287
|
const char *ch_server_address;
|
248
|
-
int
|
249
|
-
size_t
|
250
|
-
char
|
251
|
-
int
|
288
|
+
int res;
|
289
|
+
size_t i;
|
290
|
+
char **dns_list = NULL;
|
291
|
+
int need_detatch = 0;
|
252
292
|
|
253
293
|
if (android_jvm == NULL || android_connectivity_manager == NULL ||
|
254
|
-
|
255
|
-
{
|
294
|
+
max_servers == 0 || num_servers == NULL) {
|
256
295
|
return NULL;
|
257
296
|
}
|
258
297
|
|
259
298
|
if (android_cm_active_net_mid == NULL || android_cm_link_props_mid == NULL ||
|
260
299
|
android_lp_dns_servers_mid == NULL || android_list_size_mid == NULL ||
|
261
|
-
android_list_get_mid == NULL || android_ia_host_addr_mid == NULL)
|
262
|
-
{
|
300
|
+
android_list_get_mid == NULL || android_ia_host_addr_mid == NULL) {
|
263
301
|
return NULL;
|
264
302
|
}
|
265
303
|
|
266
304
|
res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6);
|
267
|
-
if (res == JNI_EDETACHED)
|
268
|
-
|
269
|
-
|
270
|
-
res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL);
|
305
|
+
if (res == JNI_EDETACHED) {
|
306
|
+
env = NULL;
|
307
|
+
res = jvm_attach(&env);
|
271
308
|
need_detatch = 1;
|
272
309
|
}
|
273
|
-
if (res != JNI_OK || env == NULL)
|
310
|
+
if (res != JNI_OK || env == NULL) {
|
274
311
|
goto done;
|
312
|
+
}
|
275
313
|
|
276
314
|
/* JNI below is equivalent to this Java code.
|
277
315
|
import android.content.Context;
|
@@ -296,93 +334,100 @@ char **ares_get_android_server_list(size_t max_servers,
|
|
296
334
|
|
297
335
|
active_network = (*env)->CallObjectMethod(env, android_connectivity_manager,
|
298
336
|
android_cm_active_net_mid);
|
299
|
-
if (active_network == NULL)
|
337
|
+
if (active_network == NULL) {
|
300
338
|
goto done;
|
339
|
+
}
|
301
340
|
|
302
341
|
link_properties =
|
303
|
-
|
304
|
-
|
305
|
-
if (link_properties == NULL)
|
342
|
+
(*env)->CallObjectMethod(env, android_connectivity_manager,
|
343
|
+
android_cm_link_props_mid, active_network);
|
344
|
+
if (link_properties == NULL) {
|
306
345
|
goto done;
|
346
|
+
}
|
307
347
|
|
308
|
-
server_list =
|
309
|
-
|
310
|
-
if (server_list == NULL)
|
348
|
+
server_list =
|
349
|
+
(*env)->CallObjectMethod(env, link_properties, android_lp_dns_servers_mid);
|
350
|
+
if (server_list == NULL) {
|
311
351
|
goto done;
|
352
|
+
}
|
312
353
|
|
313
354
|
nserv = (*env)->CallIntMethod(env, server_list, android_list_size_mid);
|
314
|
-
if (nserv > (jint)max_servers)
|
355
|
+
if (nserv > (jint)max_servers) {
|
315
356
|
nserv = (jint)max_servers;
|
316
|
-
|
357
|
+
}
|
358
|
+
if (nserv <= 0) {
|
317
359
|
goto done;
|
360
|
+
}
|
318
361
|
*num_servers = (size_t)nserv;
|
319
362
|
|
320
|
-
dns_list = ares_malloc(sizeof(*dns_list)*(*num_servers));
|
321
|
-
for (i=0; i
|
322
|
-
|
323
|
-
server =
|
324
|
-
|
325
|
-
dns_list[i]
|
363
|
+
dns_list = ares_malloc(sizeof(*dns_list) * (*num_servers));
|
364
|
+
for (i = 0; i < *num_servers; i++) {
|
365
|
+
size_t len = 64;
|
366
|
+
server =
|
367
|
+
(*env)->CallObjectMethod(env, server_list, android_list_get_mid, (jint)i);
|
368
|
+
dns_list[i] = ares_malloc(len);
|
326
369
|
dns_list[i][0] = 0;
|
327
|
-
if (server == NULL)
|
328
|
-
{
|
370
|
+
if (server == NULL) {
|
329
371
|
continue;
|
330
372
|
}
|
331
373
|
str = (*env)->CallObjectMethod(env, server, android_ia_host_addr_mid);
|
332
374
|
ch_server_address = (*env)->GetStringUTFChars(env, str, 0);
|
333
|
-
|
375
|
+
ares_strcpy(dns_list[i], ch_server_address, len);
|
334
376
|
(*env)->ReleaseStringUTFChars(env, str, ch_server_address);
|
335
377
|
(*env)->DeleteLocalRef(env, str);
|
336
378
|
(*env)->DeleteLocalRef(env, server);
|
337
379
|
}
|
338
380
|
|
339
381
|
done:
|
340
|
-
if ((*env)->ExceptionOccurred(env))
|
382
|
+
if ((*env)->ExceptionOccurred(env)) {
|
341
383
|
(*env)->ExceptionClear(env);
|
384
|
+
}
|
342
385
|
|
343
|
-
if (server_list != NULL)
|
386
|
+
if (server_list != NULL) {
|
344
387
|
(*env)->DeleteLocalRef(env, server_list);
|
345
|
-
|
388
|
+
}
|
389
|
+
if (link_properties != NULL) {
|
346
390
|
(*env)->DeleteLocalRef(env, link_properties);
|
347
|
-
|
391
|
+
}
|
392
|
+
if (active_network != NULL) {
|
348
393
|
(*env)->DeleteLocalRef(env, active_network);
|
394
|
+
}
|
349
395
|
|
350
|
-
if (need_detatch)
|
396
|
+
if (need_detatch) {
|
351
397
|
(*android_jvm)->DetachCurrentThread(android_jvm);
|
398
|
+
}
|
352
399
|
return dns_list;
|
353
400
|
}
|
354
401
|
|
355
402
|
char *ares_get_android_search_domains_list(void)
|
356
403
|
{
|
357
|
-
JNIEnv
|
358
|
-
jobject
|
359
|
-
jobject
|
360
|
-
jstring
|
404
|
+
JNIEnv *env = NULL;
|
405
|
+
jobject active_network = NULL;
|
406
|
+
jobject link_properties = NULL;
|
407
|
+
jstring domains = NULL;
|
361
408
|
const char *domain;
|
362
|
-
int
|
363
|
-
char
|
364
|
-
int
|
409
|
+
int res;
|
410
|
+
char *domain_list = NULL;
|
411
|
+
int need_detatch = 0;
|
365
412
|
|
366
|
-
if (android_jvm == NULL || android_connectivity_manager == NULL)
|
367
|
-
{
|
413
|
+
if (android_jvm == NULL || android_connectivity_manager == NULL) {
|
368
414
|
return NULL;
|
369
415
|
}
|
370
416
|
|
371
417
|
if (android_cm_active_net_mid == NULL || android_cm_link_props_mid == NULL ||
|
372
|
-
android_lp_domains_mid == NULL)
|
373
|
-
{
|
418
|
+
android_lp_domains_mid == NULL) {
|
374
419
|
return NULL;
|
375
420
|
}
|
376
421
|
|
377
422
|
res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6);
|
378
|
-
if (res == JNI_EDETACHED)
|
379
|
-
|
380
|
-
|
381
|
-
res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL);
|
423
|
+
if (res == JNI_EDETACHED) {
|
424
|
+
env = NULL;
|
425
|
+
res = jvm_attach(&env);
|
382
426
|
need_detatch = 1;
|
383
427
|
}
|
384
|
-
if (res != JNI_OK || env == NULL)
|
428
|
+
if (res != JNI_OK || env == NULL) {
|
385
429
|
goto done;
|
430
|
+
}
|
386
431
|
|
387
432
|
/* JNI below is equivalent to this Java code.
|
388
433
|
import android.content.Context;
|
@@ -393,7 +438,7 @@ char *ares_get_android_search_domains_list(void)
|
|
393
438
|
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
394
439
|
Network an = cm.getActiveNetwork();
|
395
440
|
LinkProperties lp = cm.getLinkProperties(an);
|
396
|
-
|
441
|
+
String domains = lp.getDomains();
|
397
442
|
for (String domain: domains.split(",")) {
|
398
443
|
String d = domain;
|
399
444
|
}
|
@@ -404,38 +449,45 @@ char *ares_get_android_search_domains_list(void)
|
|
404
449
|
|
405
450
|
active_network = (*env)->CallObjectMethod(env, android_connectivity_manager,
|
406
451
|
android_cm_active_net_mid);
|
407
|
-
if (active_network == NULL)
|
452
|
+
if (active_network == NULL) {
|
408
453
|
goto done;
|
454
|
+
}
|
409
455
|
|
410
456
|
link_properties =
|
411
|
-
|
412
|
-
|
413
|
-
if (link_properties == NULL)
|
457
|
+
(*env)->CallObjectMethod(env, android_connectivity_manager,
|
458
|
+
android_cm_link_props_mid, active_network);
|
459
|
+
if (link_properties == NULL) {
|
414
460
|
goto done;
|
461
|
+
}
|
415
462
|
|
416
463
|
/* Get the domains. It is a common separated list of domains to search. */
|
417
|
-
domains =
|
418
|
-
|
419
|
-
if (domains == NULL)
|
464
|
+
domains =
|
465
|
+
(*env)->CallObjectMethod(env, link_properties, android_lp_domains_mid);
|
466
|
+
if (domains == NULL) {
|
420
467
|
goto done;
|
468
|
+
}
|
421
469
|
|
422
470
|
/* Split on , */
|
423
|
-
domain
|
471
|
+
domain = (*env)->GetStringUTFChars(env, domains, 0);
|
424
472
|
domain_list = ares_strdup(domain);
|
425
473
|
(*env)->ReleaseStringUTFChars(env, domains, domain);
|
426
474
|
(*env)->DeleteLocalRef(env, domains);
|
427
475
|
|
428
476
|
done:
|
429
|
-
if ((*env)->ExceptionOccurred(env))
|
477
|
+
if ((*env)->ExceptionOccurred(env)) {
|
430
478
|
(*env)->ExceptionClear(env);
|
479
|
+
}
|
431
480
|
|
432
|
-
if (link_properties != NULL)
|
481
|
+
if (link_properties != NULL) {
|
433
482
|
(*env)->DeleteLocalRef(env, link_properties);
|
434
|
-
|
483
|
+
}
|
484
|
+
if (active_network != NULL) {
|
435
485
|
(*env)->DeleteLocalRef(env, active_network);
|
486
|
+
}
|
436
487
|
|
437
|
-
if (need_detatch)
|
488
|
+
if (need_detatch) {
|
438
489
|
(*android_jvm)->DetachCurrentThread(android_jvm);
|
490
|
+
}
|
439
491
|
return domain_list;
|
440
492
|
}
|
441
493
|
#else
|
@@ -1,16 +1,27 @@
|
|
1
|
-
/*
|
1
|
+
/* MIT License
|
2
2
|
*
|
3
|
-
*
|
4
|
-
*
|
5
|
-
*
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
9
|
-
*
|
10
|
-
*
|
11
|
-
*
|
12
|
-
*
|
13
|
-
*
|
3
|
+
* Copyright (c) John Schember
|
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
|
14
25
|
*/
|
15
26
|
|
16
27
|
#ifndef __ARES_ANDROID_H__
|
@@ -19,8 +30,8 @@
|
|
19
30
|
#if defined(ANDROID) || defined(__ANDROID__)
|
20
31
|
|
21
32
|
char **ares_get_android_server_list(size_t max_servers, size_t *num_servers);
|
22
|
-
char
|
23
|
-
void
|
33
|
+
char *ares_get_android_search_domains_list(void);
|
34
|
+
void ares_library_cleanup_android(void);
|
24
35
|
|
25
36
|
#endif
|
26
37
|
|