grpc 1.74.0 → 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 (369) 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_channel.c +15 -6
  187. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  188. data/src/ruby/lib/grpc/version.rb +1 -1
  189. data/third_party/cares/cares/include/ares.h +925 -460
  190. data/third_party/cares/cares/include/ares_dns.h +86 -71
  191. data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
  192. data/third_party/cares/cares/include/ares_nameser.h +215 -189
  193. data/third_party/cares/cares/include/ares_version.h +37 -14
  194. data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
  195. data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
  196. data/third_party/cares/cares/src/lib/ares_android.c +216 -164
  197. data/third_party/cares/cares/src/lib/ares_android.h +25 -14
  198. data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
  199. data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
  200. data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
  201. data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
  202. data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
  203. data/third_party/cares/cares/src/lib/ares_data.c +93 -181
  204. data/third_party/cares/cares/src/lib/ares_data.h +50 -39
  205. data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
  206. data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
  207. data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
  208. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
  209. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
  210. data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
  211. data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
  212. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
  213. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
  214. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
  215. data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
  216. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
  217. data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
  218. data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
  219. data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
  220. data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
  221. data/third_party/cares/cares/src/lib/ares_options.c +418 -332
  222. data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
  223. data/third_party/cares/cares/src/lib/ares_private.h +558 -356
  224. data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
  225. data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
  226. data/third_party/cares/cares/src/lib/ares_query.c +126 -121
  227. data/third_party/cares/cares/src/lib/ares_search.c +564 -262
  228. data/third_party/cares/cares/src/lib/ares_send.c +264 -93
  229. data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
  230. data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
  231. data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
  232. data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
  233. data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
  234. data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
  235. data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
  236. data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
  237. data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
  238. data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
  239. data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
  240. data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
  241. data/third_party/cares/cares/src/lib/ares_version.c +29 -4
  242. data/third_party/cares/cares/src/lib/config-dos.h +88 -89
  243. data/third_party/cares/cares/src/lib/config-win32.h +122 -77
  244. data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
  245. data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
  246. data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
  247. data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
  248. data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
  249. data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
  250. data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
  251. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
  252. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
  253. data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
  254. data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
  255. data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
  256. data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
  257. data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
  258. data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
  259. data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
  260. data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
  261. data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
  262. data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
  263. data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
  264. data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
  265. data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
  266. data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
  267. data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
  268. data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
  269. data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
  270. data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
  271. data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
  272. data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
  273. data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
  274. data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
  275. data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
  276. data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
  277. data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
  278. data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
  279. data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
  280. data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
  281. data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
  282. data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
  283. data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
  284. data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
  285. data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
  286. data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
  287. data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
  288. data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
  289. data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
  290. data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
  291. data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
  292. data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
  293. data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
  294. data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
  295. data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
  296. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
  297. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
  298. data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
  299. data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
  300. data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
  301. data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
  302. data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
  303. data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
  304. data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
  305. data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
  306. data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
  307. data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
  308. data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
  309. data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
  310. data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
  311. data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
  312. data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
  313. data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
  314. data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
  315. data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
  316. data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
  317. data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
  318. data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
  319. data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
  320. data/third_party/cares/cares/src/lib/windows_port.c +16 -9
  321. metadata +121 -49
  322. data/src/core/util/ring_buffer.h +0 -122
  323. data/third_party/cares/cares/include/ares_rules.h +0 -125
  324. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
  325. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
  326. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  327. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  328. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
  329. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  330. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
  331. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
  332. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  333. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  334. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
  335. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  336. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  337. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  338. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  339. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  340. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  341. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  342. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  343. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  344. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
  345. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
  346. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  347. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  348. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  349. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  350. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  351. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  352. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  353. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  354. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
  355. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  356. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  357. data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
  358. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  359. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  360. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
  361. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  362. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
  363. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
  364. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  365. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  366. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  367. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  368. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  369. 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
-