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,4 +1,4 @@
1
- // Copyright 2017 gRPC authors.
1
+ // Copyright 2025 gRPC authors.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -32,57 +32,56 @@ namespace grpc_core {
32
32
  class GlobalStatsCollector;
33
33
  class Http2GlobalStatsCollector;
34
34
  class Http2StatsCollector;
35
- class HistogramCollector_16777216_20_64;
36
- class Histogram_16777216_20_64 {
35
+ class HistogramCollector_80_10_64;
36
+ class Histogram_80_10_64 {
37
37
  public:
38
38
  static int BucketFor(int value);
39
39
  const uint64_t* buckets() const { return buckets_; }
40
- size_t bucket_count() const { return 20; }
40
+ size_t bucket_count() const { return 10; }
41
41
  void Increment(int value) {
42
- ++buckets_[Histogram_16777216_20_64::BucketFor(value)];
42
+ ++buckets_[Histogram_80_10_64::BucketFor(value)];
43
43
  }
44
- friend Histogram_16777216_20_64 operator-(
45
- const Histogram_16777216_20_64& left,
46
- const Histogram_16777216_20_64& right);
44
+ friend Histogram_80_10_64 operator-(const Histogram_80_10_64& left,
45
+ const Histogram_80_10_64& right);
47
46
 
48
47
  private:
49
- friend class HistogramCollector_16777216_20_64;
50
- uint64_t buckets_[20]{};
48
+ friend class HistogramCollector_80_10_64;
49
+ uint64_t buckets_[10]{};
51
50
  };
52
- class HistogramCollector_16777216_20_64 {
51
+ class HistogramCollector_80_10_64 {
53
52
  public:
54
53
  void Increment(int value) {
55
- buckets_[Histogram_16777216_20_64::BucketFor(value)].fetch_add(
54
+ buckets_[Histogram_80_10_64::BucketFor(value)].fetch_add(
56
55
  1, std::memory_order_relaxed);
57
56
  }
58
- void Collect(Histogram_16777216_20_64* result) const;
57
+ void Collect(Histogram_80_10_64* result) const;
59
58
 
60
59
  private:
61
- std::atomic<uint64_t> buckets_[20]{};
60
+ std::atomic<uint64_t> buckets_[10]{};
62
61
  };
63
- class HistogramCollector_100000_20_64;
64
- class Histogram_100000_20_64 {
62
+ class HistogramCollector_100_20_64;
63
+ class Histogram_100_20_64 {
65
64
  public:
66
65
  static int BucketFor(int value);
67
66
  const uint64_t* buckets() const { return buckets_; }
68
67
  size_t bucket_count() const { return 20; }
69
68
  void Increment(int value) {
70
- ++buckets_[Histogram_100000_20_64::BucketFor(value)];
69
+ ++buckets_[Histogram_100_20_64::BucketFor(value)];
71
70
  }
72
- friend Histogram_100000_20_64 operator-(const Histogram_100000_20_64& left,
73
- const Histogram_100000_20_64& right);
71
+ friend Histogram_100_20_64 operator-(const Histogram_100_20_64& left,
72
+ const Histogram_100_20_64& right);
74
73
 
75
74
  private:
76
- friend class HistogramCollector_100000_20_64;
75
+ friend class HistogramCollector_100_20_64;
77
76
  uint64_t buckets_[20]{};
78
77
  };
79
- class HistogramCollector_100000_20_64 {
78
+ class HistogramCollector_100_20_64 {
80
79
  public:
81
80
  void Increment(int value) {
82
- buckets_[Histogram_100000_20_64::BucketFor(value)].fetch_add(
81
+ buckets_[Histogram_100_20_64::BucketFor(value)].fetch_add(
83
82
  1, std::memory_order_relaxed);
84
83
  }
85
- void Collect(Histogram_100000_20_64* result) const;
84
+ void Collect(Histogram_100_20_64* result) const;
86
85
 
87
86
  private:
88
87
  std::atomic<uint64_t> buckets_[20]{};
@@ -141,6 +140,61 @@ class HistogramCollector_65536_26_64 {
141
140
  private:
142
141
  std::atomic<uint64_t> buckets_[26]{};
143
142
  };
143
+ class HistogramCollector_100000_20_64;
144
+ class Histogram_100000_20_64 {
145
+ public:
146
+ static int BucketFor(int value);
147
+ const uint64_t* buckets() const { return buckets_; }
148
+ size_t bucket_count() const { return 20; }
149
+ void Increment(int value) {
150
+ ++buckets_[Histogram_100000_20_64::BucketFor(value)];
151
+ }
152
+ friend Histogram_100000_20_64 operator-(const Histogram_100000_20_64& left,
153
+ const Histogram_100000_20_64& right);
154
+
155
+ private:
156
+ friend class HistogramCollector_100000_20_64;
157
+ uint64_t buckets_[20]{};
158
+ };
159
+ class HistogramCollector_100000_20_64 {
160
+ public:
161
+ void Increment(int value) {
162
+ buckets_[Histogram_100000_20_64::BucketFor(value)].fetch_add(
163
+ 1, std::memory_order_relaxed);
164
+ }
165
+ void Collect(Histogram_100000_20_64* result) const;
166
+
167
+ private:
168
+ std::atomic<uint64_t> buckets_[20]{};
169
+ };
170
+ class HistogramCollector_1800000_40_64;
171
+ class Histogram_1800000_40_64 {
172
+ public:
173
+ static int BucketFor(int value);
174
+ const uint64_t* buckets() const { return buckets_; }
175
+ size_t bucket_count() const { return 40; }
176
+ void Increment(int value) {
177
+ ++buckets_[Histogram_1800000_40_64::BucketFor(value)];
178
+ }
179
+ friend Histogram_1800000_40_64 operator-(
180
+ const Histogram_1800000_40_64& left,
181
+ const Histogram_1800000_40_64& right);
182
+
183
+ private:
184
+ friend class HistogramCollector_1800000_40_64;
185
+ uint64_t buckets_[40]{};
186
+ };
187
+ class HistogramCollector_1800000_40_64 {
188
+ public:
189
+ void Increment(int value) {
190
+ buckets_[Histogram_1800000_40_64::BucketFor(value)].fetch_add(
191
+ 1, std::memory_order_relaxed);
192
+ }
193
+ void Collect(Histogram_1800000_40_64* result) const;
194
+
195
+ private:
196
+ std::atomic<uint64_t> buckets_[40]{};
197
+ };
144
198
  class Histogram_16777216_8_8 {
145
199
  public:
146
200
  static int BucketFor(int value);
@@ -159,29 +213,30 @@ class Histogram_16777216_8_8 {
159
213
  private:
160
214
  uint8_t buckets_[8]{};
161
215
  };
162
- class HistogramCollector_100_20_64;
163
- class Histogram_100_20_64 {
216
+ class HistogramCollector_16777216_20_64;
217
+ class Histogram_16777216_20_64 {
164
218
  public:
165
219
  static int BucketFor(int value);
166
220
  const uint64_t* buckets() const { return buckets_; }
167
221
  size_t bucket_count() const { return 20; }
168
222
  void Increment(int value) {
169
- ++buckets_[Histogram_100_20_64::BucketFor(value)];
223
+ ++buckets_[Histogram_16777216_20_64::BucketFor(value)];
170
224
  }
171
- friend Histogram_100_20_64 operator-(const Histogram_100_20_64& left,
172
- const Histogram_100_20_64& right);
225
+ friend Histogram_16777216_20_64 operator-(
226
+ const Histogram_16777216_20_64& left,
227
+ const Histogram_16777216_20_64& right);
173
228
 
174
229
  private:
175
- friend class HistogramCollector_100_20_64;
230
+ friend class HistogramCollector_16777216_20_64;
176
231
  uint64_t buckets_[20]{};
177
232
  };
178
- class HistogramCollector_100_20_64 {
233
+ class HistogramCollector_16777216_20_64 {
179
234
  public:
180
235
  void Increment(int value) {
181
- buckets_[Histogram_100_20_64::BucketFor(value)].fetch_add(
236
+ buckets_[Histogram_16777216_20_64::BucketFor(value)].fetch_add(
182
237
  1, std::memory_order_relaxed);
183
238
  }
184
- void Collect(Histogram_100_20_64* result) const;
239
+ void Collect(Histogram_16777216_20_64* result) const;
185
240
 
186
241
  private:
187
242
  std::atomic<uint64_t> buckets_[20]{};
@@ -214,61 +269,6 @@ class HistogramCollector_16777216_50_64 {
214
269
  private:
215
270
  std::atomic<uint64_t> buckets_[50]{};
216
271
  };
217
- class HistogramCollector_80_10_64;
218
- class Histogram_80_10_64 {
219
- public:
220
- static int BucketFor(int value);
221
- const uint64_t* buckets() const { return buckets_; }
222
- size_t bucket_count() const { return 10; }
223
- void Increment(int value) {
224
- ++buckets_[Histogram_80_10_64::BucketFor(value)];
225
- }
226
- friend Histogram_80_10_64 operator-(const Histogram_80_10_64& left,
227
- const Histogram_80_10_64& right);
228
-
229
- private:
230
- friend class HistogramCollector_80_10_64;
231
- uint64_t buckets_[10]{};
232
- };
233
- class HistogramCollector_80_10_64 {
234
- public:
235
- void Increment(int value) {
236
- buckets_[Histogram_80_10_64::BucketFor(value)].fetch_add(
237
- 1, std::memory_order_relaxed);
238
- }
239
- void Collect(Histogram_80_10_64* result) const;
240
-
241
- private:
242
- std::atomic<uint64_t> buckets_[10]{};
243
- };
244
- class HistogramCollector_1800000_40_64;
245
- class Histogram_1800000_40_64 {
246
- public:
247
- static int BucketFor(int value);
248
- const uint64_t* buckets() const { return buckets_; }
249
- size_t bucket_count() const { return 40; }
250
- void Increment(int value) {
251
- ++buckets_[Histogram_1800000_40_64::BucketFor(value)];
252
- }
253
- friend Histogram_1800000_40_64 operator-(
254
- const Histogram_1800000_40_64& left,
255
- const Histogram_1800000_40_64& right);
256
-
257
- private:
258
- friend class HistogramCollector_1800000_40_64;
259
- uint64_t buckets_[40]{};
260
- };
261
- class HistogramCollector_1800000_40_64 {
262
- public:
263
- void Increment(int value) {
264
- buckets_[Histogram_1800000_40_64::BucketFor(value)].fetch_add(
265
- 1, std::memory_order_relaxed);
266
- }
267
- void Collect(Histogram_1800000_40_64* result) const;
268
-
269
- private:
270
- std::atomic<uint64_t> buckets_[40]{};
271
- };
272
272
  struct GlobalStats {
273
273
  enum class Counter {
274
274
  kClientCallsCreated,
@@ -27,6 +27,7 @@
27
27
 
28
28
  #include "absl/log/check.h"
29
29
  #include "absl/log/log.h"
30
+ #include "src/core/config/core_configuration.h"
30
31
  #include "src/core/lib/channel/channel_args.h"
31
32
  #include "src/core/lib/debug/trace.h"
32
33
  #include "src/core/lib/iomgr/exec_ctx.h"
@@ -151,6 +152,10 @@ void grpc_auth_context::add_property(const char* name, const char* value,
151
152
  prop->value_length = value_length;
152
153
  }
153
154
 
155
+ void grpc_auth_context::set_protocol(absl::string_view protocol) {
156
+ protocol_ = protocol;
157
+ }
158
+
154
159
  void grpc_auth_context_add_property(grpc_auth_context* ctx, const char* name,
155
160
  const char* value, size_t value_length) {
156
161
  GRPC_TRACE_LOG(api, INFO) << absl::StrFormat(
@@ -233,3 +238,18 @@ grpc_auth_context* grpc_find_auth_context_in_args(
233
238
  }
234
239
  return nullptr;
235
240
  }
241
+
242
+ std::optional<bool> grpc_auth_context::CompareAuthContext(
243
+ const grpc_auth_context* other) {
244
+ if (protocol_.empty() || other->protocol_.empty() ||
245
+ protocol_ != other->protocol_) {
246
+ return std::nullopt;
247
+ }
248
+ auto* comparator = grpc_core::CoreConfiguration::Get()
249
+ .auth_context_comparator_registry()
250
+ .GetComparator(protocol_);
251
+ if (comparator == nullptr) {
252
+ return std::nullopt;
253
+ }
254
+ return (*comparator)(this, other);
255
+ }
@@ -120,6 +120,9 @@ struct grpc_auth_context
120
120
  void ensure_capacity();
121
121
  void add_property(const char* name, const char* value, size_t value_length);
122
122
  void add_cstring_property(const char* name, const char* value);
123
+ void set_protocol(absl::string_view protocol);
124
+ // Returns std::nullopt if auth context comparison is not supported.
125
+ std::optional<bool> CompareAuthContext(const grpc_auth_context* other);
123
126
 
124
127
  private:
125
128
  grpc_core::RefCountedPtr<grpc_auth_context> chained_;
@@ -127,6 +130,7 @@ struct grpc_auth_context
127
130
  const char* peer_identity_property_name_ = nullptr;
128
131
  std::unique_ptr<Extension> extension_;
129
132
  grpc_core::OrphanablePtr<grpc_core::ConnectionContext> connection_context_;
133
+ std::string protocol_;
130
134
  };
131
135
 
132
136
  // --- Channel args for auth context ---
@@ -0,0 +1,69 @@
1
+ //
2
+ // Copyright 2025 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
16
+
17
+ #ifndef GRPC_SRC_CORE_TRANSPORT_AUTH_CONTEXT_COMPARATOR_REGISTRY_H
18
+ #define GRPC_SRC_CORE_TRANSPORT_AUTH_CONTEXT_COMPARATOR_REGISTRY_H
19
+
20
+ #include <grpc/impl/grpc_types.h>
21
+
22
+ #include "absl/functional/any_invocable.h"
23
+ #include "src/core/lib/channel/channel_args.h"
24
+
25
+ struct grpc_auth_context;
26
+
27
+ class AuthContextComparatorRegistry {
28
+ private:
29
+ using Compare = absl::AnyInvocable<bool(const grpc_auth_context*,
30
+ const grpc_auth_context*)>;
31
+ using ComparatorMap = std::map<std::string, std::unique_ptr<Compare>>;
32
+
33
+ public:
34
+ class Builder {
35
+ public:
36
+ void RegisterComparator(
37
+ std::string name,
38
+ std::unique_ptr<absl::AnyInvocable<bool(const grpc_auth_context*,
39
+ const grpc_auth_context*)>>
40
+ comparator) {
41
+ if (comparators_.find(name) != comparators_.end()) {
42
+ LOG(FATAL) << "Duplicate comparator registration: " << name;
43
+ }
44
+ comparators_[name] = std::move(comparator);
45
+ }
46
+
47
+ AuthContextComparatorRegistry Build() {
48
+ return AuthContextComparatorRegistry(std::move(comparators_));
49
+ }
50
+
51
+ private:
52
+ ComparatorMap comparators_;
53
+ };
54
+
55
+ Compare* GetComparator(absl::string_view name) const {
56
+ auto it = comparators_.find(std::string(name));
57
+ if (it == comparators_.end()) {
58
+ return nullptr;
59
+ }
60
+ return it->second.get();
61
+ }
62
+
63
+ private:
64
+ explicit AuthContextComparatorRegistry(ComparatorMap comparators)
65
+ : comparators_(std::move(comparators)) {}
66
+ ComparatorMap comparators_;
67
+ };
68
+
69
+ #endif // GRPC_SRC_CORE_TRANSPORT_AUTH_CONTEXT_COMPARATOR_REGISTRY_H
@@ -235,11 +235,10 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
235
235
  return;
236
236
  }
237
237
  if (recv_buffer == nullptr) {
238
- VLOG(2)
239
- << "recv_buffer is nullptr in alts_tsi_handshaker_handle_response()";
238
+ VLOG(2) << "failed to receive a response from the alts handshaker service";
240
239
  handle_response_done(
241
240
  client, TSI_INTERNAL_ERROR,
242
- "recv_buffer is nullptr in alts_tsi_handshaker_handle_response()",
241
+ "failed to receive a response from the alts handshaker service",
243
242
  nullptr, 0, nullptr);
244
243
  return;
245
244
  }