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.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +83 -41
  3. data/include/grpc/credentials.h +7 -1
  4. data/src/core/call/client_call.cc +4 -4
  5. data/src/core/call/filter_fusion.h +1230 -0
  6. data/src/core/call/metadata.cc +22 -0
  7. data/src/core/call/metadata.h +24 -2
  8. data/src/core/channelz/channelz.cc +10 -17
  9. data/src/core/channelz/channelz.h +58 -19
  10. data/src/core/channelz/channelz_registry.cc +0 -162
  11. data/src/core/channelz/channelz_registry.h +14 -7
  12. data/src/core/channelz/property_list.cc +19 -23
  13. data/src/core/channelz/property_list.h +3 -1
  14. data/src/core/channelz/v2tov1/convert.cc +683 -0
  15. data/src/core/channelz/v2tov1/convert.h +58 -0
  16. data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
  17. data/src/core/channelz/v2tov1/legacy_api.h +32 -0
  18. data/src/core/channelz/v2tov1/property_list.cc +118 -0
  19. data/src/core/channelz/v2tov1/property_list.h +52 -0
  20. data/src/core/client_channel/client_channel_filter.cc +5 -4
  21. data/src/core/client_channel/client_channel_filter.h +2 -2
  22. data/src/core/client_channel/client_channel_internal.h +2 -1
  23. data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
  24. data/src/core/client_channel/subchannel.cc +14 -6
  25. data/src/core/client_channel/subchannel.h +2 -0
  26. data/src/core/config/core_configuration.cc +3 -1
  27. data/src/core/config/core_configuration.h +12 -0
  28. data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
  29. data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
  30. data/src/core/credentials/transport/channel_creds_registry_init.cc +3 -1
  31. data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
  32. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
  33. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
  34. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
  35. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
  37. data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
  38. data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
  39. data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
  40. data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
  41. data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
  42. data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
  43. data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
  44. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
  45. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
  46. data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
  47. data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
  48. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
  49. data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
  50. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  51. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
  52. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +3 -2
  53. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  54. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
  55. data/src/core/ext/transport/chttp2/transport/frame.cc +89 -6
  56. data/src/core/ext/transport/chttp2/transport/frame.h +38 -0
  57. data/src/core/ext/transport/chttp2/transport/header_assembler.h +5 -14
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
  59. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +294 -78
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +128 -9
  61. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
  62. data/src/core/ext/transport/chttp2/transport/http2_settings.h +52 -35
  63. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
  64. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
  65. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +81 -3
  66. data/src/core/ext/transport/chttp2/transport/http2_transport.h +12 -1
  67. data/src/core/ext/transport/chttp2/transport/message_assembler.h +2 -2
  68. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  69. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +2 -1
  70. data/src/core/ext/transport/chttp2/transport/ping_promise.h +22 -5
  71. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
  72. data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
  73. data/src/core/ext/transport/chttp2/transport/writing.cc +6 -4
  74. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
  75. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
  76. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
  77. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +142 -54
  78. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +18 -14
  79. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +2 -2
  80. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
  81. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
  82. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +86 -88
  83. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +2 -2
  84. data/src/core/filter/auth/auth_filters.h +2 -2
  85. data/src/core/filter/fused_filters.cc +154 -0
  86. data/src/core/handshaker/security/legacy_secure_endpoint.cc +1 -1
  87. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
  88. data/src/core/handshaker/security/secure_endpoint.cc +28 -13
  89. data/src/core/handshaker/security/secure_endpoint.h +8 -0
  90. data/src/core/lib/channel/promise_based_filter.cc +15 -25
  91. data/src/core/lib/channel/promise_based_filter.h +6 -5
  92. data/src/core/lib/event_engine/ares_resolver.h +3 -1
  93. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +9 -5
  94. data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -1
  95. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
  96. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
  97. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
  98. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +12 -0
  99. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -10
  100. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +6 -4
  101. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +15 -14
  102. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -5
  103. data/src/core/lib/event_engine/posix_engine/event_poller.h +0 -8
  104. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -5
  105. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
  106. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -0
  107. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
  108. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
  109. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +2 -2
  110. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +188 -199
  111. data/src/core/lib/event_engine/posix_engine/posix_engine.h +30 -45
  112. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -1
  113. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
  114. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +2 -1
  115. data/src/core/lib/experiments/experiments.cc +120 -6
  116. data/src/core/lib/experiments/experiments.h +46 -3
  117. data/src/core/lib/iomgr/combiner.cc +1 -1
  118. data/src/core/lib/iomgr/exec_ctx.h +3 -9
  119. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  120. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
  121. data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
  122. data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
  123. data/src/core/lib/iomgr/tcp_posix.cc +3 -3
  124. data/src/core/lib/promise/activity.h +2 -2
  125. data/src/core/lib/promise/mpsc.cc +8 -8
  126. data/src/core/lib/promise/party.cc +7 -7
  127. data/src/core/lib/promise/party.h +4 -4
  128. data/src/core/lib/promise/poll.h +10 -0
  129. data/src/core/lib/resource_quota/memory_quota.cc +90 -3
  130. data/src/core/lib/resource_quota/memory_quota.h +20 -9
  131. data/src/core/lib/resource_quota/periodic_update.cc +14 -0
  132. data/src/core/lib/resource_quota/periodic_update.h +8 -0
  133. data/src/core/lib/resource_quota/resource_quota.cc +15 -4
  134. data/src/core/lib/resource_quota/resource_quota.h +3 -0
  135. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  136. data/src/core/lib/surface/call.cc +5 -5
  137. data/src/core/lib/surface/call.h +6 -5
  138. data/src/core/lib/surface/completion_queue.cc +2 -4
  139. data/src/core/lib/surface/filter_stack_call.cc +1 -1
  140. data/src/core/lib/surface/version.cc +2 -2
  141. data/src/core/lib/transport/promise_endpoint.cc +2 -2
  142. data/src/core/lib/transport/promise_endpoint.h +3 -3
  143. data/src/core/load_balancing/endpoint_list.cc +29 -2
  144. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
  145. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
  146. data/src/core/load_balancing/pick_first/pick_first.cc +12 -5
  147. data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
  148. data/src/core/net/socket_mutator.cc +19 -0
  149. data/src/core/net/socket_mutator.h +25 -0
  150. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  151. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
  152. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
  153. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
  154. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
  155. data/src/core/resolver/xds/xds_dependency_manager.cc +1 -1
  156. data/src/core/server/server.cc +1 -1
  157. data/src/core/server/server_call_tracer_filter.cc +0 -66
  158. data/src/core/server/server_call_tracer_filter.h +64 -0
  159. data/src/core/server/server_config_selector_filter.cc +1 -1
  160. data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
  161. data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
  162. data/src/core/telemetry/call_tracer.cc +20 -14
  163. data/src/core/telemetry/call_tracer.h +22 -17
  164. data/src/core/telemetry/metrics.h +8 -8
  165. data/src/core/telemetry/stats_data.cc +151 -151
  166. data/src/core/telemetry/stats_data.h +87 -87
  167. data/src/core/transport/auth_context.cc +20 -0
  168. data/src/core/transport/auth_context.h +4 -0
  169. data/src/core/transport/auth_context_comparator_registry.h +69 -0
  170. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
  171. data/src/core/tsi/ssl_transport_security.cc +202 -32
  172. data/src/core/tsi/ssl_transport_security.h +19 -10
  173. data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
  174. data/src/core/tsi/ssl_transport_security_utils.h +4 -0
  175. data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
  176. data/src/core/util/latent_see.cc +178 -146
  177. data/src/core/util/latent_see.h +245 -188
  178. data/src/core/util/single_set_ptr.h +5 -2
  179. data/src/core/util/useful.h +91 -0
  180. data/src/core/util/windows/directory_reader.cc +1 -0
  181. data/src/core/util/windows/thd.cc +1 -3
  182. data/src/core/util/work_serializer.cc +1 -1
  183. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
  184. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
  185. data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
  186. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  187. data/src/ruby/lib/grpc/version.rb +1 -1
  188. data/third_party/cares/cares/include/ares.h +925 -460
  189. data/third_party/cares/cares/include/ares_dns.h +86 -71
  190. data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
  191. data/third_party/cares/cares/include/ares_nameser.h +215 -189
  192. data/third_party/cares/cares/include/ares_version.h +37 -14
  193. data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
  194. data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
  195. data/third_party/cares/cares/src/lib/ares_android.c +216 -164
  196. data/third_party/cares/cares/src/lib/ares_android.h +25 -14
  197. data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
  198. data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
  199. data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
  200. data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
  201. data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
  202. data/third_party/cares/cares/src/lib/ares_data.c +93 -181
  203. data/third_party/cares/cares/src/lib/ares_data.h +50 -39
  204. data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
  205. data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
  206. data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
  207. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
  208. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
  209. data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
  210. data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
  211. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
  212. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
  213. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
  214. data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
  215. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
  216. data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
  217. data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
  218. data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
  219. data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
  220. data/third_party/cares/cares/src/lib/ares_options.c +418 -332
  221. data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
  222. data/third_party/cares/cares/src/lib/ares_private.h +558 -356
  223. data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
  224. data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
  225. data/third_party/cares/cares/src/lib/ares_query.c +126 -121
  226. data/third_party/cares/cares/src/lib/ares_search.c +564 -262
  227. data/third_party/cares/cares/src/lib/ares_send.c +264 -93
  228. data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
  229. data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
  230. data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
  231. data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
  232. data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
  233. data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
  234. data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
  235. data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
  236. data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
  237. data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
  238. data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
  239. data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
  240. data/third_party/cares/cares/src/lib/ares_version.c +29 -4
  241. data/third_party/cares/cares/src/lib/config-dos.h +88 -89
  242. data/third_party/cares/cares/src/lib/config-win32.h +122 -77
  243. data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
  244. data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
  245. data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
  246. data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
  247. data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
  248. data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
  249. data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
  250. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
  251. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
  252. data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
  253. data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
  254. data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
  255. data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
  256. data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
  257. data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
  258. data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
  259. data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
  260. data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
  261. data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
  262. data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
  263. data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
  264. data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
  265. data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
  266. data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
  267. data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
  268. data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
  269. data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
  270. data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
  271. data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
  272. data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
  273. data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
  274. data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
  275. data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
  276. data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
  277. data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
  278. data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
  279. data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
  280. data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
  281. data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
  282. data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
  283. data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
  284. data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
  285. data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
  286. data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
  287. data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
  288. data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
  289. data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
  290. data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
  291. data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
  292. data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
  293. data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
  294. data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
  295. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
  296. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
  297. data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
  298. data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
  299. data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
  300. data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
  301. data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
  302. data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
  303. data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
  304. data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
  305. data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
  306. data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
  307. data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
  308. data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
  309. data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
  310. data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
  311. data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
  312. data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
  313. data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
  314. data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
  315. data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
  316. data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
  317. data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
  318. data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
  319. data/third_party/cares/cares/src/lib/windows_port.c +16 -9
  320. metadata +121 -49
  321. data/src/core/util/ring_buffer.h +0 -122
  322. data/third_party/cares/cares/include/ares_rules.h +0 -125
  323. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
  324. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
  325. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  326. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  327. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
  328. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  329. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
  330. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
  331. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  332. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  333. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
  334. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  335. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  336. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  337. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  338. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  339. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  340. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  341. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  342. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  343. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
  344. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
  345. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  346. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  347. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  348. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  349. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  350. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  351. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  352. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  353. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
  354. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  355. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  356. data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
  357. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  358. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  359. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
  360. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  361. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
  362. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
  363. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  364. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  365. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  366. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  367. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  368. 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
-