grpc 1.74.1 → 1.75.0.pre1

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