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
@@ -0,0 +1,139 @@
1
+ /* MIT License
2
+ *
3
+ * Copyright (c) 2023 Brad House
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice (including the next
13
+ * paragraph) shall be included in all copies or substantial portions of the
14
+ * Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ *
24
+ * SPDX-License-Identifier: MIT
25
+ */
26
+ #ifndef __ARES__IFACE_IPS_H
27
+ #define __ARES__IFACE_IPS_H
28
+
29
+ /*! Flags for interface ip addresses. */
30
+ typedef enum {
31
+ ARES_IFACE_IP_V4 = 1 << 0, /*!< IPv4 address. During enumeration if
32
+ * this flag is set ARES_IFACE_IP_V6
33
+ * is not, will only enumerate v4
34
+ * addresses. */
35
+ ARES_IFACE_IP_V6 = 1 << 1, /*!< IPv6 address. During enumeration if
36
+ * this flag is set ARES_IFACE_IP_V4
37
+ * is not, will only enumerate v6
38
+ * addresses. */
39
+ ARES_IFACE_IP_LOOPBACK = 1 << 2, /*!< Loopback adapter */
40
+ ARES_IFACE_IP_OFFLINE = 1 << 3, /*!< Adapter offline */
41
+ ARES_IFACE_IP_LINKLOCAL = 1 << 4, /*!< Link-local ip address */
42
+ /*! Default, enumerate all ips for online interfaces, including loopback */
43
+ ARES_IFACE_IP_DEFAULT = (ARES_IFACE_IP_V4 | ARES_IFACE_IP_V6 |
44
+ ARES_IFACE_IP_LOOPBACK | ARES_IFACE_IP_LINKLOCAL)
45
+ } ares_iface_ip_flags_t;
46
+
47
+ struct ares_iface_ips;
48
+
49
+ /*! Opaque pointer for holding enumerated interface ip addresses */
50
+ typedef struct ares_iface_ips ares_iface_ips_t;
51
+
52
+ /*! Destroy ip address enumeration created by ares_iface_ips().
53
+ *
54
+ * \param[in] ips Initialized IP address enumeration structure
55
+ */
56
+ void ares_iface_ips_destroy(ares_iface_ips_t *ips);
57
+
58
+ /*! Enumerate ip addresses on interfaces
59
+ *
60
+ * \param[out] ips Returns initialized ip address structure
61
+ * \param[in] flags Flags for enumeration
62
+ * \param[in] name Interface name to enumerate, or NULL to enumerate all
63
+ * \return ARES_ENOMEM on out of memory, ARES_ENOTIMP if not supported on
64
+ * the system, ARES_SUCCESS on success
65
+ */
66
+ ares_status_t ares_iface_ips(ares_iface_ips_t **ips,
67
+ ares_iface_ip_flags_t flags, const char *name);
68
+
69
+ /*! Count of ips enumerated
70
+ *
71
+ * \param[in] ips Initialized IP address enumeration structure
72
+ * \return count
73
+ */
74
+ size_t ares_iface_ips_cnt(const ares_iface_ips_t *ips);
75
+
76
+ /*! Retrieve interface name
77
+ *
78
+ * \param[in] ips Initialized IP address enumeration structure
79
+ * \param[in] idx Index of entry to pull
80
+ * \return interface name
81
+ */
82
+ const char *ares_iface_ips_get_name(const ares_iface_ips_t *ips, size_t idx);
83
+
84
+ /*! Retrieve interface address
85
+ *
86
+ * \param[in] ips Initialized IP address enumeration structure
87
+ * \param[in] idx Index of entry to pull
88
+ * \return interface address
89
+ */
90
+ const struct ares_addr *ares_iface_ips_get_addr(const ares_iface_ips_t *ips,
91
+ size_t idx);
92
+
93
+ /*! Retrieve interface address flags
94
+ *
95
+ * \param[in] ips Initialized IP address enumeration structure
96
+ * \param[in] idx Index of entry to pull
97
+ * \return interface address flags
98
+ */
99
+ ares_iface_ip_flags_t ares_iface_ips_get_flags(const ares_iface_ips_t *ips,
100
+ size_t idx);
101
+
102
+ /*! Retrieve interface address netmask
103
+ *
104
+ * \param[in] ips Initialized IP address enumeration structure
105
+ * \param[in] idx Index of entry to pull
106
+ * \return interface address netmask
107
+ */
108
+ unsigned char ares_iface_ips_get_netmask(const ares_iface_ips_t *ips,
109
+ size_t idx);
110
+
111
+ /*! Retrieve interface ipv6 link local scope
112
+ *
113
+ * \param[in] ips Initialized IP address enumeration structure
114
+ * \param[in] idx Index of entry to pull
115
+ * \return interface ipv6 link local scope
116
+ */
117
+ unsigned int ares_iface_ips_get_ll_scope(const ares_iface_ips_t *ips,
118
+ size_t idx);
119
+
120
+
121
+ /*! Retrieve the interface index (aka link local scope) from the interface
122
+ * name.
123
+ *
124
+ * \param[in] name Interface name
125
+ * \return 0 on failure, index otherwise
126
+ */
127
+ unsigned int ares_os_if_nametoindex(const char *name);
128
+
129
+ /*! Retrieves the interface name from the index (aka link local scope)
130
+ *
131
+ * \param[in] index Interface index (> 0)
132
+ * \param[in] name Buffer to hold name
133
+ * \param[in] name_len Length of provided buffer, must be at least IF_NAMESIZE
134
+ * \return NULL on failure, or pointer to name on success
135
+ */
136
+ const char *ares_os_if_indextoname(unsigned int index, char *name,
137
+ size_t name_len);
138
+
139
+ #endif
@@ -0,0 +1,158 @@
1
+ /* MIT License
2
+ *
3
+ * Copyright (c) 2023 Brad House
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice (including the next
13
+ * paragraph) shall be included in all copies or substantial portions of the
14
+ * Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ *
24
+ * SPDX-License-Identifier: MIT
25
+ */
26
+
27
+ #include "ares_private.h"
28
+
29
+ /* Uses public domain code snippets from
30
+ * http://graphics.stanford.edu/~seander/bithacks.html */
31
+
32
+ static unsigned int ares_round_up_pow2_u32(unsigned int n)
33
+ {
34
+ /* NOTE: if already a power of 2, will return itself, not the next */
35
+ n--;
36
+ n |= n >> 1;
37
+ n |= n >> 2;
38
+ n |= n >> 4;
39
+ n |= n >> 8;
40
+ n |= n >> 16;
41
+ n++;
42
+ return n;
43
+ }
44
+
45
+ static ares_int64_t ares_round_up_pow2_u64(ares_int64_t n)
46
+ {
47
+ /* NOTE: if already a power of 2, will return itself, not the next */
48
+ n--;
49
+ n |= n >> 1;
50
+ n |= n >> 2;
51
+ n |= n >> 4;
52
+ n |= n >> 8;
53
+ n |= n >> 16;
54
+ n |= n >> 32;
55
+ n++;
56
+ return n;
57
+ }
58
+
59
+ ares_bool_t ares_is_64bit(void)
60
+ {
61
+ #ifdef _MSC_VER
62
+ # pragma warning(push)
63
+ # pragma warning(disable : 4127)
64
+ #endif
65
+
66
+ return (sizeof(size_t) == 4) ? ARES_FALSE : ARES_TRUE;
67
+
68
+ #ifdef _MSC_VER
69
+ # pragma warning(pop)
70
+ #endif
71
+ }
72
+
73
+ size_t ares_round_up_pow2(size_t n)
74
+ {
75
+ if (ares_is_64bit()) {
76
+ return (size_t)ares_round_up_pow2_u64((ares_int64_t)n);
77
+ }
78
+
79
+ return (size_t)ares_round_up_pow2_u32((unsigned int)n);
80
+ }
81
+
82
+ size_t ares_log2(size_t n)
83
+ {
84
+ static const unsigned char tab32[32] = { 0, 1, 28, 2, 29, 14, 24, 3,
85
+ 30, 22, 20, 15, 25, 17, 4, 8,
86
+ 31, 27, 13, 23, 21, 19, 16, 7,
87
+ 26, 12, 18, 6, 11, 5, 10, 9 };
88
+ static const unsigned char tab64[64] = {
89
+ 63, 0, 58, 1, 59, 47, 53, 2, 60, 39, 48, 27, 54, 33, 42, 3,
90
+ 61, 51, 37, 40, 49, 18, 28, 20, 55, 30, 34, 11, 43, 14, 22, 4,
91
+ 62, 57, 46, 52, 38, 26, 32, 41, 50, 36, 17, 19, 29, 10, 13, 21,
92
+ 56, 45, 25, 31, 35, 16, 9, 12, 44, 24, 15, 8, 23, 7, 6, 5
93
+ };
94
+
95
+ if (!ares_is_64bit()) {
96
+ return tab32[(n * 0x077CB531) >> 27];
97
+ }
98
+
99
+ return tab64[(n * 0x07EDD5E59A4E28C2) >> 58];
100
+ }
101
+
102
+ /* x^y */
103
+ size_t ares_pow(size_t x, size_t y)
104
+ {
105
+ size_t res = 1;
106
+
107
+ while (y > 0) {
108
+ /* If y is odd, multiply x with result */
109
+ if (y & 1) {
110
+ res = res * x;
111
+ }
112
+
113
+ /* y must be even now */
114
+ y = y >> 1; /* y /= 2; */
115
+ x = x * x; /* x^2 */
116
+ }
117
+
118
+ return res;
119
+ }
120
+
121
+ size_t ares_count_digits(size_t n)
122
+ {
123
+ size_t digits;
124
+
125
+ for (digits = 0; n > 0; digits++) {
126
+ n /= 10;
127
+ }
128
+ if (digits == 0) {
129
+ digits = 1;
130
+ }
131
+
132
+ return digits;
133
+ }
134
+
135
+ size_t ares_count_hexdigits(size_t n)
136
+ {
137
+ size_t digits;
138
+
139
+ for (digits = 0; n > 0; digits++) {
140
+ n /= 16;
141
+ }
142
+ if (digits == 0) {
143
+ digits = 1;
144
+ }
145
+
146
+ return digits;
147
+ }
148
+
149
+ unsigned char ares_count_bits_u8(unsigned char x)
150
+ {
151
+ /* Implementation obtained from:
152
+ * http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetTable */
153
+ #define B2(n) n, n + 1, n + 1, n + 2
154
+ #define B4(n) B2(n), B2(n + 1), B2(n + 1), B2(n + 2)
155
+ #define B6(n) B4(n), B4(n + 1), B4(n + 1), B4(n + 2)
156
+ static const unsigned char lookup[256] = { B6(0), B6(1), B6(1), B6(2) };
157
+ return lookup[x];
158
+ }
@@ -0,0 +1,45 @@
1
+ /* MIT License
2
+ *
3
+ * Copyright (c) 2024 Brad House
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice (including the next
13
+ * paragraph) shall be included in all copies or substantial portions of the
14
+ * Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ *
24
+ * SPDX-License-Identifier: MIT
25
+ */
26
+ #ifndef __ARES_MATH_H
27
+ #define __ARES_MATH_H
28
+
29
+ #ifdef _MSC_VER
30
+ typedef __int64 ares_int64_t;
31
+ typedef unsigned __int64 ares_uint64_t;
32
+ #else
33
+ typedef long long ares_int64_t;
34
+ typedef unsigned long long ares_uint64_t;
35
+ #endif
36
+
37
+ ares_bool_t ares_is_64bit(void);
38
+ size_t ares_round_up_pow2(size_t n);
39
+ size_t ares_log2(size_t n);
40
+ size_t ares_pow(size_t x, size_t y);
41
+ size_t ares_count_digits(size_t n);
42
+ size_t ares_count_hexdigits(size_t n);
43
+ unsigned char ares_count_bits_u8(unsigned char x);
44
+
45
+ #endif