grpc 1.68.1 → 1.74.1

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 (3051) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +379 -370
  3. data/include/grpc/create_channel_from_endpoint.h +54 -0
  4. data/include/grpc/credentials.h +11 -5
  5. data/include/grpc/event_engine/endpoint_config.h +5 -5
  6. data/include/grpc/event_engine/event_engine.h +232 -16
  7. data/include/grpc/event_engine/internal/write_event.h +34 -0
  8. data/include/grpc/event_engine/memory_request.h +3 -3
  9. data/include/grpc/grpc_posix.h +20 -1
  10. data/include/grpc/impl/channel_arg_names.h +83 -55
  11. data/include/grpc/impl/compression_types.h +3 -2
  12. data/include/grpc/impl/slice_type.h +1 -1
  13. data/include/grpc/module.modulemap +1 -0
  14. data/include/grpc/status.h +1 -1
  15. data/include/grpc/support/atm.h +0 -13
  16. data/include/grpc/support/json.h +43 -37
  17. data/include/grpc/support/port_platform.h +8 -5
  18. data/include/grpc/support/workaround_list.h +1 -4
  19. data/src/core/call/call_arena_allocator.cc +27 -0
  20. data/src/core/call/call_arena_allocator.h +91 -0
  21. data/src/core/call/call_destination.h +76 -0
  22. data/src/core/call/call_filters.cc +148 -0
  23. data/src/core/call/call_filters.h +1976 -0
  24. data/src/core/call/call_finalization.h +88 -0
  25. data/src/core/call/call_spine.cc +90 -0
  26. data/src/core/call/call_spine.h +646 -0
  27. data/src/core/call/call_state.cc +39 -0
  28. data/src/core/call/call_state.h +1154 -0
  29. data/src/core/call/client_call.cc +458 -0
  30. data/src/core/call/client_call.h +192 -0
  31. data/src/core/call/custom_metadata.h +30 -0
  32. data/src/core/call/interception_chain.cc +155 -0
  33. data/src/core/call/interception_chain.h +278 -0
  34. data/src/core/call/message.cc +44 -0
  35. data/src/core/call/message.h +70 -0
  36. data/src/core/call/metadata.cc +61 -0
  37. data/src/core/call/metadata.h +218 -0
  38. data/src/core/call/metadata_batch.cc +383 -0
  39. data/src/core/call/metadata_batch.h +1668 -0
  40. data/src/core/call/metadata_compression_traits.h +66 -0
  41. data/src/core/call/metadata_info.cc +73 -0
  42. data/src/core/call/metadata_info.h +85 -0
  43. data/src/core/call/parsed_metadata.cc +35 -0
  44. data/src/core/call/parsed_metadata.h +429 -0
  45. data/src/core/call/request_buffer.cc +224 -0
  46. data/src/core/call/request_buffer.h +192 -0
  47. data/src/core/call/security_context.cc +125 -0
  48. data/src/core/call/security_context.h +114 -0
  49. data/src/core/call/server_call.cc +259 -0
  50. data/src/core/call/server_call.h +169 -0
  51. data/src/core/call/simple_slice_based_metadata.h +53 -0
  52. data/src/core/call/status_util.cc +153 -0
  53. data/src/core/call/status_util.h +80 -0
  54. data/src/core/channelz/channel_trace.cc +217 -111
  55. data/src/core/channelz/channel_trace.h +389 -64
  56. data/src/core/channelz/channelz.cc +480 -178
  57. data/src/core/channelz/channelz.h +429 -93
  58. data/src/core/channelz/channelz_registry.cc +323 -124
  59. data/src/core/channelz/channelz_registry.h +203 -21
  60. data/src/core/channelz/property_list.cc +357 -0
  61. data/src/core/channelz/property_list.h +202 -0
  62. data/src/core/channelz/ztrace_collector.h +316 -0
  63. data/src/core/client_channel/backup_poller.cc +18 -3
  64. data/src/core/client_channel/client_channel.cc +86 -99
  65. data/src/core/client_channel/client_channel.h +6 -5
  66. data/src/core/client_channel/client_channel_args.h +21 -0
  67. data/src/core/client_channel/client_channel_filter.cc +102 -198
  68. data/src/core/client_channel/client_channel_filter.h +12 -12
  69. data/src/core/client_channel/client_channel_internal.h +1 -1
  70. data/src/core/client_channel/client_channel_plugin.cc +3 -2
  71. data/src/core/client_channel/client_channel_service_config.cc +1 -1
  72. data/src/core/client_channel/client_channel_service_config.h +6 -6
  73. data/src/core/client_channel/config_selector.h +10 -4
  74. data/src/core/client_channel/connector.h +0 -3
  75. data/src/core/client_channel/direct_channel.cc +5 -5
  76. data/src/core/client_channel/direct_channel.h +1 -1
  77. data/src/core/client_channel/dynamic_filters.cc +5 -7
  78. data/src/core/client_channel/dynamic_filters.h +1 -2
  79. data/src/core/client_channel/global_subchannel_pool.cc +71 -7
  80. data/src/core/client_channel/global_subchannel_pool.h +37 -4
  81. data/src/core/client_channel/lb_metadata.cc +7 -8
  82. data/src/core/client_channel/lb_metadata.h +4 -4
  83. data/src/core/client_channel/load_balanced_call_destination.cc +6 -6
  84. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  85. data/src/core/client_channel/retry_filter.cc +22 -28
  86. data/src/core/client_channel/retry_filter.h +11 -8
  87. data/src/core/client_channel/retry_filter_legacy_call_data.cc +58 -56
  88. data/src/core/client_channel/retry_filter_legacy_call_data.h +14 -12
  89. data/src/core/client_channel/retry_interceptor.cc +394 -0
  90. data/src/core/client_channel/retry_interceptor.h +158 -0
  91. data/src/core/client_channel/retry_service_config.cc +3 -3
  92. data/src/core/client_channel/retry_service_config.h +18 -5
  93. data/src/core/client_channel/retry_throttle.cc +69 -73
  94. data/src/core/client_channel/retry_throttle.h +23 -37
  95. data/src/core/client_channel/subchannel.cc +93 -105
  96. data/src/core/client_channel/subchannel.h +15 -14
  97. data/src/core/client_channel/subchannel_pool_interface.cc +5 -6
  98. data/src/core/client_channel/subchannel_pool_interface.h +11 -1
  99. data/src/core/client_channel/subchannel_stream_client.cc +14 -12
  100. data/src/core/client_channel/subchannel_stream_client.h +5 -5
  101. data/src/core/config/config_vars.cc +164 -0
  102. data/src/core/config/config_vars.h +137 -0
  103. data/src/core/config/config_vars_non_generated.cc +49 -0
  104. data/src/core/config/core_configuration.cc +151 -0
  105. data/src/core/config/core_configuration.h +335 -0
  106. data/src/core/config/load_config.cc +78 -0
  107. data/src/core/config/load_config.h +54 -0
  108. data/src/core/credentials/call/call_credentials.h +157 -0
  109. data/src/core/credentials/call/call_creds_registry.h +125 -0
  110. data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
  111. data/src/core/credentials/call/call_creds_util.cc +97 -0
  112. data/src/core/credentials/call/call_creds_util.h +43 -0
  113. data/src/core/credentials/call/composite/composite_call_credentials.cc +115 -0
  114. data/src/core/credentials/call/composite/composite_call_credentials.h +82 -0
  115. data/src/core/credentials/call/external/aws_external_account_credentials.cc +528 -0
  116. data/src/core/credentials/call/external/aws_external_account_credentials.h +117 -0
  117. data/src/core/credentials/call/external/aws_request_signer.cc +231 -0
  118. data/src/core/credentials/call/external/aws_request_signer.h +72 -0
  119. data/src/core/credentials/call/external/external_account_credentials.cc +641 -0
  120. data/src/core/credentials/call/external/external_account_credentials.h +207 -0
  121. data/src/core/credentials/call/external/file_external_account_credentials.cc +174 -0
  122. data/src/core/credentials/call/external/file_external_account_credentials.h +80 -0
  123. data/src/core/credentials/call/external/url_external_account_credentials.cc +222 -0
  124. data/src/core/credentials/call/external/url_external_account_credentials.h +73 -0
  125. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +154 -0
  126. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +90 -0
  127. data/src/core/credentials/call/iam/iam_credentials.cc +78 -0
  128. data/src/core/credentials/call/iam/iam_credentials.h +66 -0
  129. data/src/core/credentials/call/json_util.cc +69 -0
  130. data/src/core/credentials/call/json_util.h +43 -0
  131. data/src/core/credentials/call/jwt/json_token.cc +318 -0
  132. data/src/core/credentials/call/jwt/json_token.h +78 -0
  133. data/src/core/credentials/call/jwt/jwt_credentials.cc +181 -0
  134. data/src/core/credentials/call/jwt/jwt_credentials.h +106 -0
  135. data/src/core/credentials/call/jwt/jwt_verifier.cc +988 -0
  136. data/src/core/credentials/call/jwt/jwt_verifier.h +122 -0
  137. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
  138. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
  139. data/src/core/credentials/call/jwt_util.cc +70 -0
  140. data/src/core/credentials/call/jwt_util.h +32 -0
  141. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +656 -0
  142. data/src/core/credentials/call/oauth2/oauth2_credentials.h +197 -0
  143. data/src/core/credentials/call/plugin/plugin_credentials.cc +201 -0
  144. data/src/core/credentials/call/plugin/plugin_credentials.h +123 -0
  145. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +304 -0
  146. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +181 -0
  147. data/src/core/credentials/transport/alts/alts_credentials.cc +116 -0
  148. data/src/core/credentials/transport/alts/alts_credentials.h +127 -0
  149. data/src/core/credentials/transport/alts/alts_security_connector.cc +304 -0
  150. data/src/core/credentials/transport/alts/alts_security_connector.h +78 -0
  151. data/src/core/credentials/transport/alts/check_gcp_environment.cc +71 -0
  152. data/src/core/credentials/transport/alts/check_gcp_environment.h +57 -0
  153. data/src/core/credentials/transport/alts/check_gcp_environment_linux.cc +67 -0
  154. data/src/core/credentials/transport/alts/check_gcp_environment_no_op.cc +32 -0
  155. data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +101 -0
  156. data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +123 -0
  157. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +45 -0
  158. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +74 -0
  159. data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +55 -0
  160. data/src/core/credentials/transport/channel_creds_registry.h +126 -0
  161. data/src/core/credentials/transport/channel_creds_registry_init.cc +245 -0
  162. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +68 -0
  163. data/src/core/credentials/transport/composite/composite_channel_credentials.h +89 -0
  164. data/src/core/credentials/transport/fake/fake_credentials.cc +81 -0
  165. data/src/core/credentials/transport/fake/fake_credentials.h +92 -0
  166. data/src/core/credentials/transport/fake/fake_security_connector.cc +314 -0
  167. data/src/core/credentials/transport/fake/fake_security_connector.h +42 -0
  168. data/src/core/credentials/transport/google_default/credentials_generic.cc +38 -0
  169. data/src/core/credentials/transport/google_default/google_default_credentials.cc +510 -0
  170. data/src/core/credentials/transport/google_default/google_default_credentials.h +101 -0
  171. data/src/core/credentials/transport/insecure/insecure_credentials.cc +71 -0
  172. data/src/core/credentials/transport/insecure/insecure_credentials.h +61 -0
  173. data/src/core/credentials/transport/insecure/insecure_security_connector.cc +118 -0
  174. data/src/core/credentials/transport/insecure/insecure_security_connector.h +102 -0
  175. data/src/core/credentials/transport/local/local_credentials.cc +68 -0
  176. data/src/core/credentials/transport/local/local_credentials.h +77 -0
  177. data/src/core/credentials/transport/local/local_security_connector.cc +306 -0
  178. data/src/core/credentials/transport/local/local_security_connector.h +62 -0
  179. data/src/core/credentials/transport/security_connector.cc +123 -0
  180. data/src/core/credentials/transport/security_connector.h +197 -0
  181. data/src/core/credentials/transport/ssl/ssl_credentials.cc +473 -0
  182. data/src/core/credentials/transport/ssl/ssl_credentials.h +144 -0
  183. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +433 -0
  184. data/src/core/credentials/transport/ssl/ssl_security_connector.h +82 -0
  185. data/src/core/credentials/transport/tls/certificate_provider_factory.h +69 -0
  186. data/src/core/credentials/transport/tls/certificate_provider_registry.cc +50 -0
  187. data/src/core/credentials/transport/tls/certificate_provider_registry.h +75 -0
  188. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +337 -0
  189. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +215 -0
  190. data/src/core/credentials/transport/tls/grpc_tls_certificate_match.cc +84 -0
  191. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +490 -0
  192. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +206 -0
  193. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +237 -0
  194. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +169 -0
  195. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +161 -0
  196. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.h +145 -0
  197. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +257 -0
  198. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.h +129 -0
  199. data/src/core/credentials/transport/tls/load_system_roots.h +35 -0
  200. data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +36 -0
  201. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +166 -0
  202. data/src/core/credentials/transport/tls/load_system_roots_supported.h +44 -0
  203. data/src/core/credentials/transport/tls/load_system_roots_windows.cc +85 -0
  204. data/src/core/credentials/transport/tls/ssl_utils.cc +646 -0
  205. data/src/core/credentials/transport/tls/ssl_utils.h +193 -0
  206. data/src/core/credentials/transport/tls/tls_credentials.cc +170 -0
  207. data/src/core/credentials/transport/tls/tls_credentials.h +75 -0
  208. data/src/core/credentials/transport/tls/tls_security_connector.cc +817 -0
  209. data/src/core/credentials/transport/tls/tls_security_connector.h +285 -0
  210. data/src/core/credentials/transport/tls/tls_utils.cc +127 -0
  211. data/src/core/credentials/transport/tls/tls_utils.h +50 -0
  212. data/src/core/credentials/transport/transport_credentials.cc +158 -0
  213. data/src/core/credentials/transport/transport_credentials.h +182 -0
  214. data/src/core/credentials/transport/xds/xds_credentials.cc +228 -0
  215. data/src/core/credentials/transport/xds/xds_credentials.h +110 -0
  216. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +6 -13
  217. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +7 -7
  218. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +17 -11
  219. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +11 -18
  220. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -6
  221. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +2 -2
  222. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +1 -1
  223. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +11 -18
  224. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +21 -21
  225. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +1 -1
  226. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +2 -2
  227. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -6
  228. data/src/core/ext/filters/http/client/http_client_filter.h +5 -5
  229. data/src/core/ext/filters/http/client_authority_filter.cc +5 -12
  230. data/src/core/ext/filters/http/client_authority_filter.h +6 -6
  231. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -1
  232. data/src/core/ext/filters/http/message_compress/compression_filter.cc +21 -25
  233. data/src/core/ext/filters/http/message_compress/compression_filter.h +56 -18
  234. data/src/core/ext/filters/http/server/http_server_filter.cc +5 -10
  235. data/src/core/ext/filters/http/server/http_server_filter.h +22 -10
  236. data/src/core/ext/filters/message_size/message_size_filter.cc +15 -27
  237. data/src/core/ext/filters/message_size/message_size_filter.h +21 -22
  238. data/src/core/ext/filters/rbac/rbac_filter.cc +3 -10
  239. data/src/core/ext/filters/rbac/rbac_filter.h +6 -6
  240. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
  241. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  242. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -8
  243. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +4 -4
  244. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +1 -1
  245. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
  246. data/src/core/ext/transport/chttp2/chttp2_plugin.cc +40 -0
  247. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +134 -153
  248. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -3
  249. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +356 -769
  250. data/src/core/ext/transport/chttp2/server/chttp2_server.h +197 -13
  251. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -3
  252. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +3 -3
  253. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
  254. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +5 -7
  255. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +402 -167
  256. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +7 -13
  257. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
  258. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
  259. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  260. data/src/core/ext/transport/chttp2/transport/flow_control.h +26 -3
  261. data/src/core/ext/transport/chttp2/transport/frame.cc +326 -167
  262. data/src/core/ext/transport/chttp2/transport/frame.h +126 -8
  263. data/src/core/ext/transport/chttp2/transport/frame_data.cc +25 -8
  264. data/src/core/ext/transport/chttp2/transport/frame_data.h +2 -0
  265. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +23 -11
  266. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +5 -3
  267. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -0
  268. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -7
  269. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -1
  270. data/src/core/ext/transport/chttp2/transport/frame_security.cc +80 -0
  271. data/src/core/ext/transport/chttp2/transport/frame_security.h +44 -0
  272. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +43 -8
  273. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +21 -0
  274. data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
  275. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +12 -5
  276. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +7 -5
  277. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -3
  278. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
  279. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +36 -35
  280. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +7 -8
  281. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
  282. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +14 -3
  283. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
  284. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
  285. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -10
  286. data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -5
  287. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.cc +30 -0
  288. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
  289. data/src/core/ext/transport/chttp2/transport/http2_status.h +414 -0
  290. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
  291. data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
  292. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +223 -0
  293. data/src/core/ext/transport/chttp2/transport/internal.h +90 -23
  294. data/src/core/ext/transport/chttp2/transport/internal_channel_arg_names.h +24 -0
  295. data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
  296. data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
  297. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +1 -0
  298. data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
  299. data/src/core/ext/transport/chttp2/transport/parsing.cc +91 -43
  300. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +1 -1
  301. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
  302. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +21 -2
  303. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
  304. data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
  305. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +17 -20
  306. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +19 -2
  307. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +40 -1
  308. data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
  309. data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
  310. data/src/core/ext/transport/chttp2/transport/varint.cc +4 -4
  311. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +1 -1
  312. data/src/core/ext/transport/chttp2/transport/writing.cc +109 -77
  313. data/src/core/ext/transport/inproc/inproc_transport.cc +10 -7
  314. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +23 -14
  315. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +7 -3
  316. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +8 -8
  317. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +3 -3
  318. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +68 -68
  319. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +34 -34
  320. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +3 -3
  321. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +3 -3
  322. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +10 -10
  323. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +3 -3
  324. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +20 -18
  325. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +44 -44
  326. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +3 -3
  327. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +3 -3
  328. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +2 -2
  329. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +3 -3
  330. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +3 -3
  331. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +4 -4
  332. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +3 -3
  333. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +3 -3
  334. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +3 -3
  335. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +9 -9
  336. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -4
  337. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +3 -3
  338. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +3 -3
  339. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +3 -3
  340. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +149 -133
  341. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +76 -75
  342. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +3 -3
  343. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +3 -3
  344. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +2 -2
  345. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +3 -3
  346. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +3 -3
  347. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +3 -3
  348. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +5 -5
  349. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +1 -1
  350. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +3 -3
  351. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +41 -29
  352. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +29 -29
  353. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +3 -3
  354. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +231 -243
  355. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +104 -104
  356. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +3 -3
  357. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +30 -30
  358. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +15 -15
  359. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +3 -3
  360. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +367 -349
  361. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +152 -150
  362. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +3 -3
  363. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +3 -3
  364. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +2 -2
  365. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +3 -3
  366. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +61 -61
  367. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +16 -16
  368. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +3 -3
  369. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +53 -49
  370. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +31 -31
  371. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +3 -3
  372. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +44 -32
  373. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +26 -26
  374. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +3 -3
  375. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +3 -3
  376. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +2 -2
  377. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +3 -3
  378. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +329 -262
  379. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +126 -100
  380. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +5 -3
  381. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +61 -57
  382. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +31 -31
  383. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +3 -3
  384. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +7 -3
  385. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +2 -2
  386. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +3 -3
  387. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +3 -3
  388. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +2 -2
  389. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +3 -3
  390. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +3 -3
  391. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +2 -2
  392. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +3 -3
  393. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +91 -95
  394. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +35 -35
  395. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +3 -3
  396. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +115 -103
  397. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +44 -44
  398. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +3 -3
  399. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +3 -3
  400. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +2 -2
  401. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +3 -3
  402. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +19 -15
  403. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +7 -7
  404. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +3 -3
  405. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +216 -117
  406. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +71 -65
  407. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +3 -3
  408. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +3 -3
  409. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +2 -2
  410. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +3 -3
  411. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +3 -3
  412. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +2 -2
  413. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +3 -3
  414. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +151 -0
  415. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +60 -0
  416. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +32 -0
  417. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +232 -21
  418. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +65 -17
  419. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +9 -3
  420. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +34 -30
  421. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +12 -12
  422. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +3 -3
  423. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +3 -3
  424. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +2 -2
  425. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +3 -3
  426. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +15 -40
  427. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +10 -10
  428. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +3 -3
  429. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +52 -44
  430. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +30 -30
  431. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +3 -3
  432. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +27 -27
  433. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +15 -15
  434. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +3 -3
  435. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +3 -3
  436. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +2 -2
  437. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +3 -3
  438. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +150 -142
  439. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +56 -56
  440. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +3 -3
  441. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +80 -167
  442. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +37 -58
  443. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +3 -5
  444. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +88 -3
  445. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +26 -4
  446. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +3 -3
  447. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +3 -3
  448. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +2 -2
  449. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +3 -3
  450. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +9 -9
  451. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +6 -6
  452. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +3 -3
  453. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +56 -36
  454. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +26 -26
  455. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +3 -3
  456. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +17 -4
  457. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +14 -14
  458. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +3 -3
  459. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +175 -39
  460. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +60 -30
  461. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +5 -3
  462. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +55 -80
  463. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +16 -16
  464. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +3 -3
  465. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +927 -686
  466. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +366 -309
  467. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +7 -3
  468. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +20 -16
  469. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +8 -8
  470. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +3 -3
  471. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +18 -6
  472. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +20 -20
  473. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +3 -3
  474. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +3 -3
  475. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +4 -4
  476. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +3 -3
  477. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +3 -3
  478. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +2 -2
  479. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +3 -3
  480. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +7 -3
  481. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +4 -4
  482. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +3 -3
  483. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +3 -3
  484. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +2 -2
  485. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +3 -3
  486. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +10 -10
  487. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +5 -5
  488. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +3 -3
  489. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +3 -3
  490. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +2 -2
  491. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +3 -3
  492. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +22 -18
  493. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +11 -11
  494. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +3 -3
  495. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +3 -5
  496. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +0 -1
  497. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +3 -4
  498. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +10 -10
  499. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +7 -7
  500. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +3 -3
  501. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +19 -19
  502. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +12 -12
  503. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +3 -3
  504. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +313 -410
  505. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +114 -114
  506. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +3 -3
  507. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +3 -3
  508. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +3 -3
  509. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +11 -3
  510. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +4 -4
  511. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +3 -3
  512. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +68 -64
  513. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +31 -31
  514. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +3 -3
  515. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +22 -22
  516. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +10 -10
  517. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +3 -3
  518. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +28 -28
  519. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +13 -13
  520. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +3 -3
  521. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +37 -37
  522. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +13 -13
  523. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +3 -3
  524. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +10 -6
  525. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +6 -6
  526. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +3 -3
  527. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +338 -294
  528. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +144 -143
  529. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +3 -3
  530. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +3 -3
  531. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +2 -2
  532. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +3 -3
  533. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +63 -3
  534. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +15 -4
  535. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h +3 -3
  536. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +10 -6
  537. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +9 -9
  538. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +3 -3
  539. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +3 -3
  540. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +3 -3
  541. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +26 -26
  542. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +10 -10
  543. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +3 -3
  544. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +3 -3
  545. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +2 -2
  546. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +3 -3
  547. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +3 -4
  548. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +2 -3
  549. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +3 -3
  550. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +3 -3
  551. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +3 -3
  552. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +91 -87
  553. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +38 -38
  554. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +3 -3
  555. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +7 -3
  556. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +6 -6
  557. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +3 -3
  558. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +167 -77
  559. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +58 -49
  560. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +3 -3
  561. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +40 -10
  562. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +10 -8
  563. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +3 -3
  564. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +35 -27
  565. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +13 -13
  566. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +3 -3
  567. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +3 -3
  568. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +3 -3
  569. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +367 -164
  570. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +94 -69
  571. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +5 -3
  572. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +9 -9
  573. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +6 -6
  574. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +3 -3
  575. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +69 -64
  576. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +36 -36
  577. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +3 -3
  578. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +10 -10
  579. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +5 -5
  580. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +3 -3
  581. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +7 -3
  582. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +4 -4
  583. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +3 -3
  584. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +142 -0
  585. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +55 -0
  586. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +32 -0
  587. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +40 -3
  588. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +8 -5
  589. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +3 -3
  590. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +3 -3
  591. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +3 -3
  592. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +13 -9
  593. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +4 -4
  594. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +3 -3
  595. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +3 -3
  596. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +2 -2
  597. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +3 -3
  598. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +7 -3
  599. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +2 -2
  600. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +3 -3
  601. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +7 -3
  602. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +2 -2
  603. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +3 -3
  604. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +14 -10
  605. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +9 -9
  606. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +3 -3
  607. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +3 -3
  608. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +3 -3
  609. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +7 -3
  610. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +4 -4
  611. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +3 -3
  612. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +7 -3
  613. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +2 -2
  614. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +3 -3
  615. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +11 -3
  616. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +6 -6
  617. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +3 -3
  618. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +11 -3
  619. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +4 -4
  620. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +3 -3
  621. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +18 -14
  622. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +8 -8
  623. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +3 -3
  624. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +7 -3
  625. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +2 -2
  626. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +3 -3
  627. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +3 -3
  628. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +3 -3
  629. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +3 -3
  630. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +3 -3
  631. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +3 -3
  632. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +3 -3
  633. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +3 -3
  634. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +3 -3
  635. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +7 -3
  636. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +2 -2
  637. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +3 -3
  638. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +3 -3
  639. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +3 -3
  640. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +3 -3
  641. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +3 -3
  642. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +3 -3
  643. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +2 -2
  644. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +3 -3
  645. data/src/core/ext/upb-gen/google/api/annotations.upb.h +5 -5
  646. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +1 -1
  647. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +3 -3
  648. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +96 -136
  649. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +46 -46
  650. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +3 -3
  651. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +95 -126
  652. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +51 -51
  653. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +3 -3
  654. data/src/core/ext/upb-gen/google/api/http.upb.h +59 -54
  655. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +26 -26
  656. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +3 -3
  657. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +3 -3
  658. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +2 -2
  659. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +3 -3
  660. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +4 -3
  661. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +3 -3
  662. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +520 -320
  663. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +267 -217
  664. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +25 -20
  665. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +4 -3
  666. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +3 -3
  667. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +4 -3
  668. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +3 -3
  669. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +17 -36
  670. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +8 -8
  671. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +3 -3
  672. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +4 -3
  673. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +3 -3
  674. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +4 -3
  675. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +3 -3
  676. data/src/core/ext/upb-gen/google/rpc/status.upb.h +3 -3
  677. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +2 -2
  678. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +3 -3
  679. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
  680. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
  681. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
  682. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
  683. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
  684. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
  685. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
  686. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
  687. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
  688. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +12 -31
  689. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +2 -2
  690. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +3 -3
  691. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +202 -145
  692. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +50 -44
  693. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +3 -3
  694. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +158 -3
  695. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +42 -4
  696. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +7 -3
  697. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +4 -3
  698. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +3 -3
  699. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +17 -9
  700. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +14 -14
  701. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +3 -3
  702. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +25 -43
  703. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +5 -5
  704. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +3 -3
  705. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +73 -111
  706. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +25 -25
  707. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +3 -3
  708. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +13 -13
  709. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +5 -5
  710. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +3 -3
  711. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +5 -5
  712. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +1 -1
  713. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +3 -3
  714. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +3 -3
  715. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +3 -3
  716. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +5 -5
  717. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +1 -1
  718. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +3 -3
  719. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +5 -5
  720. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +1 -1
  721. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +3 -3
  722. data/src/core/ext/upb-gen/validate/validate.upb.h +385 -373
  723. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +133 -133
  724. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +4 -4
  725. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +13 -13
  726. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +5 -5
  727. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +3 -3
  728. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +5 -5
  729. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +1 -1
  730. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +3 -3
  731. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +3 -3
  732. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +3 -3
  733. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +9 -9
  734. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +3 -3
  735. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +3 -3
  736. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +5 -5
  737. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +1 -1
  738. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +3 -3
  739. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +3 -3
  740. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +3 -3
  741. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +3 -3
  742. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +2 -2
  743. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +3 -3
  744. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +7 -3
  745. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +4 -4
  746. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +3 -3
  747. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +12 -31
  748. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +2 -2
  749. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +3 -3
  750. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +3 -3
  751. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +2 -2
  752. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +3 -3
  753. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +10 -10
  754. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +5 -5
  755. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +3 -3
  756. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +23 -15
  757. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +6 -6
  758. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +3 -3
  759. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +3 -3
  760. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +2 -2
  761. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +3 -3
  762. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +30 -87
  763. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +2 -2
  764. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +3 -3
  765. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +3 -3
  766. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +2 -2
  767. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +3 -3
  768. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +10 -10
  769. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +5 -5
  770. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +3 -3
  771. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +3 -3
  772. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +4 -4
  773. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +3 -3
  774. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +3 -3
  775. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +3 -3
  776. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +6 -6
  777. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +5 -5
  778. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +3 -3
  779. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +45 -49
  780. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +23 -23
  781. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +3 -3
  782. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +3 -3
  783. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +12 -12
  784. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +3 -3
  785. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +7 -3
  786. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +2 -2
  787. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +3 -3
  788. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +7 -3
  789. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +4 -4
  790. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +3 -3
  791. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +7 -3
  792. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +4 -4
  793. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +3 -3
  794. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +4 -3
  795. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +3 -3
  796. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +3 -3
  797. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +2 -2
  798. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +3 -3
  799. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +123 -62
  800. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +8 -4
  801. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +200 -101
  802. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +8 -4
  803. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +152 -77
  804. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +8 -4
  805. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +524 -254
  806. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +8 -4
  807. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +44 -23
  808. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +8 -4
  809. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +66 -34
  810. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +8 -4
  811. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +54 -28
  812. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +8 -4
  813. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +46 -25
  814. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +8 -4
  815. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +47 -25
  816. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +8 -4
  817. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +256 -124
  818. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +8 -4
  819. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +50 -28
  820. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +8 -4
  821. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +55 -28
  822. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +8 -4
  823. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +34 -18
  824. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +8 -4
  825. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +414 -206
  826. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +8 -4
  827. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +831 -413
  828. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +8 -4
  829. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +143 -73
  830. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +8 -4
  831. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1132 -552
  832. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +8 -4
  833. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +63 -34
  834. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +8 -4
  835. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +255 -127
  836. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +8 -4
  837. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +363 -178
  838. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +8 -4
  839. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +227 -114
  840. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +8 -4
  841. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +57 -31
  842. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +8 -4
  843. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +596 -287
  844. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +13 -4
  845. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +271 -137
  846. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +8 -4
  847. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +56 -30
  848. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +8 -4
  849. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +45 -25
  850. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +8 -4
  851. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +59 -31
  852. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +8 -4
  853. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +438 -217
  854. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +8 -4
  855. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +441 -221
  856. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +8 -4
  857. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +55 -30
  858. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +8 -4
  859. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +57 -31
  860. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +8 -4
  861. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +619 -294
  862. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +8 -4
  863. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +70 -36
  864. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +8 -4
  865. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +62 -33
  866. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +8 -4
  867. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +68 -0
  868. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +37 -0
  869. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +97 -39
  870. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +23 -4
  871. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +97 -51
  872. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +8 -4
  873. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +51 -27
  874. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +8 -4
  875. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +147 -76
  876. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +8 -4
  877. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +230 -116
  878. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +8 -4
  879. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +277 -138
  880. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +8 -4
  881. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +48 -26
  882. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +8 -4
  883. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +388 -197
  884. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +8 -4
  885. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +304 -160
  886. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +8 -9
  887. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +175 -82
  888. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +8 -4
  889. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +90 -47
  890. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +8 -4
  891. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +98 -51
  892. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +8 -4
  893. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +196 -99
  894. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +8 -4
  895. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +237 -117
  896. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +8 -4
  897. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +418 -193
  898. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +13 -4
  899. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +194 -99
  900. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +8 -4
  901. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +2004 -955
  902. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +18 -4
  903. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +101 -53
  904. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +8 -4
  905. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +352 -176
  906. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +8 -4
  907. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +79 -42
  908. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +8 -4
  909. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +67 -37
  910. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +8 -4
  911. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +63 -34
  912. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +8 -4
  913. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +88 -47
  914. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +8 -4
  915. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +80 -43
  916. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +8 -4
  917. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +53 -29
  918. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +8 -4
  919. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +86 -46
  920. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +8 -4
  921. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +56 -36
  922. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +8 -4
  923. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +91 -49
  924. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +8 -4
  925. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +105 -55
  926. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +8 -4
  927. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +775 -379
  928. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +8 -4
  929. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +52 -28
  930. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +8 -4
  931. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +134 -68
  932. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +8 -4
  933. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +189 -96
  934. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +8 -4
  935. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +116 -61
  936. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +8 -4
  937. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +112 -58
  938. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +8 -4
  939. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +160 -82
  940. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +8 -4
  941. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +75 -39
  942. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +8 -4
  943. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1161 -567
  944. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +8 -4
  945. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +52 -28
  946. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +8 -4
  947. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +56 -33
  948. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +8 -4
  949. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -26
  950. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +8 -4
  951. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +390 -194
  952. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +8 -4
  953. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +126 -65
  954. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +8 -4
  955. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +498 -235
  956. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +8 -4
  957. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +74 -36
  958. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +8 -4
  959. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +221 -110
  960. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +8 -4
  961. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +68 -36
  962. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +8 -4
  963. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +378 -174
  964. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +13 -4
  965. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +100 -52
  966. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +8 -4
  967. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +257 -128
  968. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +8 -4
  969. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +44 -24
  970. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +8 -4
  971. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +68 -35
  972. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +8 -4
  973. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +59 -0
  974. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +37 -0
  975. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +61 -27
  976. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +8 -4
  977. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +65 -34
  978. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +8 -4
  979. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +72 -38
  980. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +8 -4
  981. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +57 -31
  982. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +8 -4
  983. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +52 -29
  984. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +8 -4
  985. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +51 -28
  986. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +8 -4
  987. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +89 -47
  988. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +8 -4
  989. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +37 -20
  990. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +8 -4
  991. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +89 -47
  992. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +8 -4
  993. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +67 -35
  994. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +8 -4
  995. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +112 -58
  996. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +8 -4
  997. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +110 -56
  998. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +8 -4
  999. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +123 -62
  1000. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +8 -4
  1001. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +59 -31
  1002. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +8 -4
  1003. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +30 -16
  1004. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +8 -4
  1005. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +143 -72
  1006. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +8 -4
  1007. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +61 -32
  1008. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +8 -4
  1009. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +51 -27
  1010. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +8 -4
  1011. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +85 -45
  1012. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +8 -4
  1013. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +35 -19
  1014. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +8 -4
  1015. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +44 -23
  1016. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +8 -4
  1017. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +61 -33
  1018. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +8 -4
  1019. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +35 -19
  1020. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +8 -4
  1021. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +272 -133
  1022. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +8 -4
  1023. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +315 -154
  1024. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +8 -4
  1025. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +64 -33
  1026. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +8 -4
  1027. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +35 -19
  1028. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +8 -4
  1029. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +26 -15
  1030. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +8 -4
  1031. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +1106 -496
  1032. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +13 -4
  1033. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +28 -16
  1034. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +8 -4
  1035. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +23 -13
  1036. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +8 -4
  1037. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +69 -35
  1038. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +8 -4
  1039. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +29 -16
  1040. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +8 -4
  1041. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +51 -26
  1042. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +8 -4
  1043. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +32 -17
  1044. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +8 -4
  1045. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
  1046. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
  1047. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
  1048. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
  1049. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +161 -79
  1050. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +8 -4
  1051. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +84 -42
  1052. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +8 -4
  1053. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +48 -26
  1054. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +8 -4
  1055. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +26 -14
  1056. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +8 -4
  1057. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +50 -26
  1058. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +8 -4
  1059. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +36 -19
  1060. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +8 -4
  1061. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +538 -261
  1062. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +8 -4
  1063. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +86 -43
  1064. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +8 -4
  1065. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +49 -26
  1066. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +8 -4
  1067. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +27 -15
  1068. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +8 -4
  1069. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +87 -44
  1070. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +8 -4
  1071. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +37 -20
  1072. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +8 -4
  1073. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +30 -17
  1074. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +8 -4
  1075. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +41 -23
  1076. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +8 -4
  1077. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +62 -33
  1078. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +8 -4
  1079. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +36 -19
  1080. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +8 -4
  1081. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +36 -20
  1082. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +8 -4
  1083. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +42 -23
  1084. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +8 -4
  1085. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +76 -39
  1086. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +8 -4
  1087. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +45 -24
  1088. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +8 -4
  1089. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +41 -23
  1090. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +8 -4
  1091. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +53 -29
  1092. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +8 -4
  1093. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +29 -16
  1094. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +8 -4
  1095. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +58 -32
  1096. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +8 -4
  1097. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +207 -103
  1098. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +8 -4
  1099. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +95 -49
  1100. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +8 -4
  1101. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +38 -20
  1102. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +8 -4
  1103. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +60 -31
  1104. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +8 -4
  1105. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +67 -36
  1106. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +8 -4
  1107. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +31 -17
  1108. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +8 -4
  1109. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +31 -17
  1110. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +8 -4
  1111. data/src/core/filter/auth/auth_filters.h +208 -0
  1112. data/src/core/filter/auth/client_auth_filter.cc +192 -0
  1113. data/src/core/filter/auth/server_auth_filter.cc +208 -0
  1114. data/src/core/filter/blackboard.cc +2 -2
  1115. data/src/core/filter/filter_args.h +98 -0
  1116. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.h +1 -1
  1117. data/src/core/handshaker/handshaker.cc +23 -25
  1118. data/src/core/handshaker/handshaker.h +3 -0
  1119. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +13 -7
  1120. data/src/core/handshaker/http_connect/http_connect_handshaker.h +1 -1
  1121. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +36 -52
  1122. data/src/core/handshaker/http_connect/http_proxy_mapper.h +5 -5
  1123. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +5 -5
  1124. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +6 -6
  1125. data/src/core/handshaker/proxy_mapper.h +4 -4
  1126. data/src/core/handshaker/proxy_mapper_registry.cc +5 -6
  1127. data/src/core/handshaker/proxy_mapper_registry.h +4 -4
  1128. data/src/core/handshaker/security/legacy_secure_endpoint.cc +597 -0
  1129. data/src/core/handshaker/security/secure_endpoint.cc +813 -311
  1130. data/src/core/handshaker/security/secure_endpoint.h +17 -0
  1131. data/src/core/handshaker/security/security_handshaker.cc +12 -11
  1132. data/src/core/handshaker/security/security_handshaker.h +2 -2
  1133. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +14 -6
  1134. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.h +1 -1
  1135. data/src/core/lib/address_utils/sockaddr_utils.cc +5 -5
  1136. data/src/core/lib/channel/channel_args.cc +28 -13
  1137. data/src/core/lib/channel/channel_args.h +65 -39
  1138. data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
  1139. data/src/core/lib/channel/channel_stack.cc +32 -4
  1140. data/src/core/lib/channel/channel_stack.h +16 -6
  1141. data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -2
  1142. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
  1143. data/src/core/lib/channel/connected_channel.cc +4 -4
  1144. data/src/core/lib/channel/promise_based_filter.cc +10 -10
  1145. data/src/core/lib/channel/promise_based_filter.h +749 -416
  1146. data/src/core/lib/compression/compression.cc +3 -2
  1147. data/src/core/lib/compression/compression_internal.cc +9 -9
  1148. data/src/core/lib/compression/compression_internal.h +3 -3
  1149. data/src/core/lib/debug/trace.cc +1 -1
  1150. data/src/core/lib/debug/trace_flags.cc +7 -6
  1151. data/src/core/lib/debug/trace_flags.h +3 -3
  1152. data/src/core/lib/debug/trace_impl.h +0 -1
  1153. data/src/core/lib/event_engine/ares_resolver.cc +175 -60
  1154. data/src/core/lib/event_engine/ares_resolver.h +54 -12
  1155. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +10 -6
  1156. data/src/core/lib/event_engine/cf_engine/cf_engine.h +3 -8
  1157. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +10 -11
  1158. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +12 -10
  1159. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +2 -4
  1160. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +9 -10
  1161. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -4
  1162. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +5 -7
  1163. data/src/core/lib/event_engine/channel_args_endpoint_config.h +6 -7
  1164. data/src/core/lib/event_engine/common_closures.h +2 -4
  1165. data/src/core/lib/event_engine/default_event_engine.cc +63 -34
  1166. data/src/core/lib/event_engine/default_event_engine.h +25 -34
  1167. data/src/core/lib/event_engine/default_event_engine_factory.cc +12 -18
  1168. data/src/core/lib/event_engine/default_event_engine_factory.h +3 -5
  1169. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
  1170. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
  1171. data/src/core/lib/event_engine/event_engine.cc +9 -4
  1172. data/src/core/lib/event_engine/extensions/blocking_dns.h +46 -0
  1173. data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -4
  1174. data/src/core/lib/event_engine/extensions/channelz.h +66 -0
  1175. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +2 -4
  1176. data/src/core/lib/event_engine/extensions/iomgr_compatible.h +39 -0
  1177. data/src/core/lib/event_engine/extensions/supports_fd.h +2 -4
  1178. data/src/core/lib/event_engine/extensions/supports_win_sockets.h +48 -0
  1179. data/src/core/lib/event_engine/extensions/tcp_trace.h +4 -6
  1180. data/src/core/lib/event_engine/grpc_polled_fd.h +7 -4
  1181. data/src/core/lib/event_engine/handle_containers.h +2 -4
  1182. data/src/core/lib/event_engine/memory_allocator_factory.h +2 -4
  1183. data/src/core/lib/event_engine/nameser.h +1 -1
  1184. data/src/core/lib/event_engine/poller.h +2 -4
  1185. data/src/core/lib/event_engine/posix.h +2 -4
  1186. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +134 -212
  1187. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +13 -19
  1188. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +83 -172
  1189. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +9 -13
  1190. data/src/core/lib/event_engine/posix_engine/event_poller.h +20 -19
  1191. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -23
  1192. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -4
  1193. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
  1194. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
  1195. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +31 -23
  1196. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +8 -6
  1197. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +8 -5
  1198. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +2 -4
  1199. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -4
  1200. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +6 -11
  1201. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +5 -4
  1202. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +170 -110
  1203. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +31 -37
  1204. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +344 -104
  1205. data/src/core/lib/event_engine/posix_engine/posix_engine.h +74 -35
  1206. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +2 -4
  1207. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +49 -43
  1208. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +8 -8
  1209. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +60 -146
  1210. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +12 -9
  1211. data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
  1212. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
  1213. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
  1214. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
  1215. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
  1216. data/src/core/lib/event_engine/posix_engine/set_socket_dualstack.cc +64 -0
  1217. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +8 -736
  1218. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +12 -174
  1219. data/src/core/lib/event_engine/posix_engine/timer.cc +4 -6
  1220. data/src/core/lib/event_engine/posix_engine/timer.h +4 -6
  1221. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +3 -5
  1222. data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -4
  1223. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +38 -29
  1224. data/src/core/lib/event_engine/posix_engine/timer_manager.h +17 -17
  1225. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +119 -157
  1226. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +30 -99
  1227. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +28 -29
  1228. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +8 -6
  1229. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +38 -58
  1230. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +8 -6
  1231. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +9 -10
  1232. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +14 -10
  1233. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +5 -5
  1234. data/src/core/lib/event_engine/query_extensions.h +12 -25
  1235. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +2 -4
  1236. data/src/core/lib/event_engine/resolved_address.cc +2 -4
  1237. data/src/core/lib/event_engine/resolved_address_internal.h +2 -4
  1238. data/src/core/lib/event_engine/shim.cc +18 -18
  1239. data/src/core/lib/event_engine/shim.h +16 -4
  1240. data/src/core/lib/event_engine/slice.cc +2 -4
  1241. data/src/core/lib/event_engine/slice_buffer.cc +2 -4
  1242. data/src/core/lib/event_engine/tcp_socket_utils.cc +16 -23
  1243. data/src/core/lib/event_engine/tcp_socket_utils.h +5 -7
  1244. data/src/core/lib/event_engine/thread_local.cc +2 -4
  1245. data/src/core/lib/event_engine/thread_local.h +2 -4
  1246. data/src/core/lib/event_engine/thread_pool/thread_count.cc +2 -4
  1247. data/src/core/lib/event_engine/thread_pool/thread_count.h +4 -18
  1248. data/src/core/lib/event_engine/thread_pool/thread_pool.h +9 -7
  1249. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -21
  1250. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +23 -15
  1251. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +7 -7
  1252. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +2 -4
  1253. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +2 -4
  1254. data/src/core/lib/event_engine/time_util.cc +2 -4
  1255. data/src/core/lib/event_engine/time_util.h +2 -4
  1256. data/src/core/lib/event_engine/utils.cc +36 -4
  1257. data/src/core/lib/event_engine/utils.h +5 -4
  1258. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +7 -5
  1259. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +6 -4
  1260. data/src/core/lib/event_engine/windows/iocp.cc +2 -4
  1261. data/src/core/lib/event_engine/windows/iocp.h +2 -4
  1262. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +2 -4
  1263. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +2 -4
  1264. data/src/core/lib/event_engine/windows/win_socket.cc +13 -4
  1265. data/src/core/lib/event_engine/windows/win_socket.h +5 -4
  1266. data/src/core/lib/event_engine/windows/windows_endpoint.cc +32 -25
  1267. data/src/core/lib/event_engine/windows/windows_endpoint.h +9 -8
  1268. data/src/core/lib/event_engine/windows/windows_engine.cc +44 -4
  1269. data/src/core/lib/event_engine/windows/windows_engine.h +10 -8
  1270. data/src/core/lib/event_engine/windows/windows_listener.cc +21 -12
  1271. data/src/core/lib/event_engine/windows/windows_listener.h +11 -8
  1272. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +2 -4
  1273. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -4
  1274. data/src/core/lib/event_engine/work_queue/work_queue.h +2 -4
  1275. data/src/core/lib/experiments/config.cc +1 -1
  1276. data/src/core/lib/experiments/experiments.cc +515 -187
  1277. data/src/core/lib/experiments/experiments.h +190 -91
  1278. data/src/core/lib/iomgr/buffer_list.cc +1 -1
  1279. data/src/core/lib/iomgr/buffer_list.h +22 -21
  1280. data/src/core/lib/iomgr/call_combiner.h +1 -1
  1281. data/src/core/lib/iomgr/cfstream_handle.cc +0 -2
  1282. data/src/core/lib/iomgr/closure.h +1 -2
  1283. data/src/core/lib/iomgr/combiner.cc +3 -3
  1284. data/src/core/lib/iomgr/combiner.h +1 -1
  1285. data/src/core/lib/iomgr/endpoint.cc +4 -3
  1286. data/src/core/lib/iomgr/endpoint.h +7 -4
  1287. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
  1288. data/src/core/lib/iomgr/endpoint_pair_posix.cc +43 -16
  1289. data/src/core/lib/iomgr/endpoint_pair_windows.cc +43 -8
  1290. data/src/core/lib/iomgr/error.cc +28 -44
  1291. data/src/core/lib/iomgr/ev_apple.cc +1 -1
  1292. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -3
  1293. data/src/core/lib/iomgr/ev_poll_posix.cc +22 -0
  1294. data/src/core/lib/iomgr/ev_posix.cc +1 -1
  1295. data/src/core/lib/iomgr/event_engine_shims/closure.cc +0 -1
  1296. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +12 -13
  1297. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +0 -1
  1298. data/src/core/lib/iomgr/exec_ctx.cc +1 -7
  1299. data/src/core/lib/iomgr/exec_ctx.h +1 -132
  1300. data/src/core/lib/iomgr/fork_posix.cc +0 -7
  1301. data/src/core/lib/iomgr/iomgr.cc +1 -4
  1302. data/src/core/lib/iomgr/iomgr_posix.cc +2 -1
  1303. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +3 -0
  1304. data/src/core/lib/iomgr/iomgr_windows.cc +3 -1
  1305. data/src/core/lib/iomgr/nameser.h +1 -1
  1306. data/src/core/lib/iomgr/polling_entity.cc +2 -7
  1307. data/src/core/lib/iomgr/resolve_address_posix.cc +37 -49
  1308. data/src/core/lib/iomgr/resolve_address_posix.h +15 -0
  1309. data/src/core/lib/iomgr/resolve_address_windows.cc +22 -47
  1310. data/src/core/lib/iomgr/resolve_address_windows.h +15 -2
  1311. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
  1312. data/src/core/lib/iomgr/socket_utils_posix.cc +23 -11
  1313. data/src/core/lib/iomgr/socket_utils_posix.h +12 -2
  1314. data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -9
  1315. data/src/core/lib/iomgr/tcp_client_posix.cc +27 -23
  1316. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  1317. data/src/core/lib/iomgr/tcp_client_windows.cc +3 -3
  1318. data/src/core/lib/iomgr/tcp_posix.cc +84 -48
  1319. data/src/core/lib/iomgr/tcp_posix.h +10 -2
  1320. data/src/core/lib/iomgr/tcp_server_posix.cc +10 -4
  1321. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -4
  1322. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  1323. data/src/core/lib/iomgr/tcp_server_windows.cc +44 -22
  1324. data/src/core/lib/iomgr/tcp_windows.cc +3 -2
  1325. data/src/core/lib/iomgr/timer_generic.cc +1 -1
  1326. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  1327. data/src/core/lib/iomgr/timer_manager.cc +1 -9
  1328. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +11 -3
  1329. data/src/core/lib/promise/activity.cc +2 -0
  1330. data/src/core/lib/promise/activity.h +35 -13
  1331. data/src/core/lib/promise/all_ok.h +68 -0
  1332. data/src/core/lib/promise/arena_promise.h +23 -7
  1333. data/src/core/lib/promise/detail/basic_seq.h +32 -18
  1334. data/src/core/lib/promise/detail/join_state.h +16 -68
  1335. data/src/core/lib/promise/detail/promise_factory.h +96 -26
  1336. data/src/core/lib/promise/detail/promise_like.h +163 -12
  1337. data/src/core/lib/promise/detail/promise_variant.h +50 -0
  1338. data/src/core/lib/promise/detail/seq_state.h +1162 -495
  1339. data/src/core/lib/promise/for_each.h +14 -5
  1340. data/src/core/lib/promise/if.h +68 -20
  1341. data/src/core/lib/promise/inter_activity_latch.h +147 -0
  1342. data/src/core/lib/promise/inter_activity_mutex.h +547 -0
  1343. data/src/core/lib/promise/interceptor_list.h +9 -9
  1344. data/src/core/lib/promise/latch.h +14 -6
  1345. data/src/core/lib/promise/loop.h +131 -17
  1346. data/src/core/lib/promise/map.h +269 -18
  1347. data/src/core/lib/promise/match_promise.h +103 -0
  1348. data/src/core/lib/promise/mpsc.cc +425 -0
  1349. data/src/core/lib/promise/mpsc.h +490 -0
  1350. data/src/core/lib/promise/party.cc +144 -68
  1351. data/src/core/lib/promise/party.h +340 -54
  1352. data/src/core/lib/promise/pipe.h +12 -12
  1353. data/src/core/lib/promise/poll.h +34 -16
  1354. data/src/core/lib/promise/prioritized_race.h +16 -22
  1355. data/src/core/lib/promise/promise.h +6 -5
  1356. data/src/core/lib/promise/race.h +35 -12
  1357. data/src/core/lib/promise/seq.h +52 -35
  1358. data/src/core/lib/promise/sleep.cc +9 -6
  1359. data/src/core/lib/promise/sleep.h +15 -1
  1360. data/src/core/lib/promise/status_flag.h +54 -12
  1361. data/src/core/lib/promise/try_join.h +119 -5
  1362. data/src/core/lib/promise/try_seq.h +79 -49
  1363. data/src/core/lib/promise/wait_set.cc +28 -0
  1364. data/src/core/lib/promise/wait_set.h +86 -0
  1365. data/src/core/lib/resource_quota/api.h +1 -1
  1366. data/src/core/lib/resource_quota/arena.h +106 -0
  1367. data/src/core/lib/resource_quota/connection_quota.h +4 -0
  1368. data/src/core/lib/resource_quota/memory_quota.cc +78 -54
  1369. data/src/core/lib/resource_quota/memory_quota.h +10 -8
  1370. data/src/core/lib/resource_quota/periodic_update.cc +1 -1
  1371. data/src/core/lib/security/authorization/evaluate_args.cc +4 -4
  1372. data/src/core/lib/security/authorization/evaluate_args.h +4 -4
  1373. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -8
  1374. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +7 -7
  1375. data/src/core/lib/security/authorization/matchers.h +3 -3
  1376. data/src/core/lib/security/authorization/rbac_policy.cc +1 -1
  1377. data/src/core/lib/security/authorization/rbac_policy.h +3 -3
  1378. data/src/core/lib/slice/slice.h +11 -0
  1379. data/src/core/lib/slice/slice_buffer.cc +3 -2
  1380. data/src/core/lib/slice/slice_buffer.h +8 -2
  1381. data/src/core/lib/surface/call.cc +24 -22
  1382. data/src/core/lib/surface/call.h +4 -3
  1383. data/src/core/lib/surface/call_utils.cc +5 -5
  1384. data/src/core/lib/surface/call_utils.h +17 -7
  1385. data/src/core/lib/surface/channel.cc +6 -14
  1386. data/src/core/lib/surface/channel.h +5 -5
  1387. data/src/core/lib/surface/channel_create.cc +140 -5
  1388. data/src/core/lib/surface/channel_create.h +4 -0
  1389. data/src/core/lib/surface/channel_init.cc +165 -48
  1390. data/src/core/lib/surface/channel_init.h +67 -4
  1391. data/src/core/lib/surface/completion_queue.cc +88 -67
  1392. data/src/core/lib/surface/completion_queue.h +1 -1
  1393. data/src/core/lib/surface/connection_context.cc +77 -0
  1394. data/src/core/lib/surface/connection_context.h +156 -0
  1395. data/src/core/lib/surface/event_string.cc +7 -1
  1396. data/src/core/lib/surface/filter_stack_call.cc +60 -40
  1397. data/src/core/lib/surface/filter_stack_call.h +3 -3
  1398. data/src/core/lib/surface/init.cc +12 -14
  1399. data/src/core/lib/surface/init_internally.h +13 -2
  1400. data/src/core/lib/surface/lame_client.cc +2 -2
  1401. data/src/core/lib/surface/legacy_channel.cc +41 -37
  1402. data/src/core/lib/surface/legacy_channel.h +6 -4
  1403. data/src/core/lib/surface/version.cc +2 -2
  1404. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  1405. data/src/core/lib/transport/call_final_info.h +1 -1
  1406. data/src/core/lib/transport/connectivity_state.cc +8 -9
  1407. data/src/core/lib/transport/connectivity_state.h +2 -4
  1408. data/src/core/lib/transport/error_utils.cc +65 -11
  1409. data/src/core/lib/transport/error_utils.h +2 -2
  1410. data/src/core/lib/transport/promise_endpoint.cc +110 -0
  1411. data/src/core/lib/transport/promise_endpoint.h +307 -0
  1412. data/src/core/lib/transport/status_conversion.cc +11 -36
  1413. data/src/core/lib/transport/status_conversion.h +5 -4
  1414. data/src/core/lib/transport/timeout_encoding.cc +19 -19
  1415. data/src/core/lib/transport/timeout_encoding.h +3 -2
  1416. data/src/core/lib/transport/transport.cc +2 -3
  1417. data/src/core/lib/transport/transport.h +20 -12
  1418. data/src/core/lib/transport/transport_framing_endpoint_extension.h +47 -0
  1419. data/src/core/lib/transport/transport_op_string.cc +1 -1
  1420. data/src/core/load_balancing/backend_metric_parser.cc +12 -25
  1421. data/src/core/load_balancing/child_policy_handler.cc +3 -5
  1422. data/src/core/load_balancing/delegating_helper.h +3 -4
  1423. data/src/core/load_balancing/endpoint_list.cc +12 -2
  1424. data/src/core/load_balancing/endpoint_list.h +20 -13
  1425. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +2 -7
  1426. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +4 -4
  1427. data/src/core/load_balancing/grpclb/grpclb.cc +25 -43
  1428. data/src/core/load_balancing/health_check_client.cc +19 -57
  1429. data/src/core/load_balancing/health_check_client_internal.h +7 -7
  1430. data/src/core/load_balancing/lb_policy.cc +4 -6
  1431. data/src/core/load_balancing/lb_policy.h +6 -16
  1432. data/src/core/load_balancing/lb_policy_registry.cc +10 -8
  1433. data/src/core/load_balancing/oob_backend_metric.cc +3 -9
  1434. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +63 -73
  1435. data/src/core/load_balancing/outlier_detection/outlier_detection.h +4 -3
  1436. data/src/core/load_balancing/pick_first/pick_first.cc +74 -990
  1437. data/src/core/load_balancing/priority/priority.cc +9 -14
  1438. data/src/core/load_balancing/ring_hash/ring_hash.cc +211 -159
  1439. data/src/core/load_balancing/ring_hash/ring_hash.h +4 -11
  1440. data/src/core/load_balancing/rls/rls.cc +139 -233
  1441. data/src/core/load_balancing/rls/rls.h +97 -1
  1442. data/src/core/load_balancing/round_robin/round_robin.cc +17 -23
  1443. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +6 -6
  1444. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +3 -3
  1445. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +25 -34
  1446. data/src/core/load_balancing/weighted_target/weighted_target.cc +12 -26
  1447. data/src/core/load_balancing/xds/cds.cc +25 -27
  1448. data/src/core/load_balancing/xds/xds_cluster_impl.cc +17 -20
  1449. data/src/core/load_balancing/xds/xds_cluster_manager.cc +11 -19
  1450. data/src/core/load_balancing/xds/xds_override_host.cc +99 -125
  1451. data/src/core/load_balancing/xds/xds_wrr_locality.cc +11 -13
  1452. data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
  1453. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +3 -3
  1454. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +14 -16
  1455. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -1
  1456. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  1457. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -0
  1458. data/src/core/resolver/dns/dns_resolver_plugin.cc +1 -1
  1459. data/src/core/resolver/dns/dns_resolver_plugin.h +1 -1
  1460. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +10 -15
  1461. data/src/core/resolver/dns/native/dns_resolver.cc +2 -2
  1462. data/src/core/resolver/dns/native/dns_resolver.h +1 -1
  1463. data/src/core/resolver/fake/fake_resolver.cc +11 -12
  1464. data/src/core/resolver/fake/fake_resolver.h +2 -2
  1465. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +11 -14
  1466. data/src/core/resolver/polling_resolver.cc +2 -5
  1467. data/src/core/resolver/polling_resolver.h +3 -3
  1468. data/src/core/resolver/resolver_registry.cc +4 -3
  1469. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -2
  1470. data/src/core/resolver/xds/xds_config.cc +12 -9
  1471. data/src/core/resolver/xds/xds_config.h +11 -6
  1472. data/src/core/resolver/xds/xds_dependency_manager.cc +220 -193
  1473. data/src/core/resolver/xds/xds_dependency_manager.h +30 -19
  1474. data/src/core/resolver/xds/xds_resolver.cc +116 -136
  1475. data/src/core/server/add_port.cc +87 -0
  1476. data/src/core/server/server.cc +459 -131
  1477. data/src/core/server/server.h +237 -72
  1478. data/src/core/server/server_call_tracer_filter.cc +5 -9
  1479. data/src/core/server/server_call_tracer_filter.h +1 -1
  1480. data/src/core/server/server_config_selector.h +1 -1
  1481. data/src/core/server/server_config_selector_filter.cc +9 -16
  1482. data/src/core/server/xds_channel_stack_modifier.cc +1 -1
  1483. data/src/core/server/xds_server_config_fetcher.cc +159 -187
  1484. data/src/core/service_config/service_config.h +1 -1
  1485. data/src/core/service_config/service_config_channel_arg_filter.cc +9 -21
  1486. data/src/core/service_config/service_config_impl.cc +4 -4
  1487. data/src/core/service_config/service_config_impl.h +1 -1
  1488. data/src/core/telemetry/call_tracer.cc +12 -14
  1489. data/src/core/telemetry/call_tracer.h +10 -9
  1490. data/src/core/telemetry/context_list_entry.cc +38 -0
  1491. data/src/core/telemetry/context_list_entry.h +112 -0
  1492. data/src/core/telemetry/default_tcp_tracer.cc +26 -0
  1493. data/src/core/telemetry/default_tcp_tracer.h +44 -0
  1494. data/src/core/telemetry/histogram_view.cc +3 -3
  1495. data/src/core/telemetry/metrics.cc +44 -23
  1496. data/src/core/telemetry/metrics.h +24 -14
  1497. data/src/core/telemetry/stats.h +0 -5
  1498. data/src/core/telemetry/stats_data.cc +564 -329
  1499. data/src/core/telemetry/stats_data.h +474 -180
  1500. data/src/core/telemetry/tcp_tracer.cc +38 -0
  1501. data/src/core/telemetry/tcp_tracer.h +104 -100
  1502. data/src/core/transport/auth_context.cc +235 -0
  1503. data/src/core/transport/auth_context.h +139 -0
  1504. data/src/core/transport/endpoint_transport.h +90 -0
  1505. data/src/core/transport/endpoint_transport_client_channel_factory.cc +61 -0
  1506. data/src/core/transport/endpoint_transport_client_channel_factory.h +57 -0
  1507. data/src/core/tsi/alts/frame_protector/alts_counter.h +1 -1
  1508. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -1
  1509. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  1510. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +36 -4
  1511. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +3 -1
  1512. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +74 -20
  1513. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -3
  1514. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1515. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -4
  1516. data/src/core/tsi/fake_transport_security.cc +22 -0
  1517. data/src/core/tsi/ssl_transport_security.cc +203 -76
  1518. data/src/core/tsi/ssl_transport_security.h +8 -3
  1519. data/src/core/tsi/ssl_transport_security_utils.h +1 -1
  1520. data/src/core/tsi/transport_security.h +3 -0
  1521. data/src/core/tsi/transport_security_grpc.cc +8 -0
  1522. data/src/core/tsi/transport_security_grpc.h +22 -3
  1523. data/src/core/tsi/transport_security_interface.h +32 -27
  1524. data/src/core/util/backoff.cc +3 -3
  1525. data/src/core/util/backoff.h +1 -1
  1526. data/src/core/util/check_class_size.h +48 -0
  1527. data/src/core/util/down_cast.h +1 -1
  1528. data/src/core/util/dual_ref_counted.h +48 -0
  1529. data/src/core/util/dump_args.h +1 -9
  1530. data/src/core/util/env.h +3 -4
  1531. data/src/core/util/examine_stack.cc +2 -2
  1532. data/src/core/util/examine_stack.h +3 -4
  1533. data/src/core/util/fork.cc +1 -1
  1534. data/src/core/util/fork.h +2 -2
  1535. data/src/core/util/function_signature.h +80 -0
  1536. data/src/core/util/gcp_metadata_query.cc +4 -3
  1537. data/src/core/util/gpr_time.cc +4 -6
  1538. data/src/core/util/http_client/httpcli.cc +97 -36
  1539. data/src/core/util/http_client/httpcli.h +22 -9
  1540. data/src/core/util/http_client/httpcli_security_connector.cc +7 -6
  1541. data/src/core/util/json/json_channel_args.h +2 -1
  1542. data/src/core/util/json/json_object_loader.cc +4 -4
  1543. data/src/core/util/json/json_object_loader.h +19 -19
  1544. data/src/core/util/json/json_reader.cc +4 -4
  1545. data/src/core/util/json/json_writer.cc +4 -4
  1546. data/src/core/util/latent_see.cc +123 -76
  1547. data/src/core/util/latent_see.h +34 -36
  1548. data/src/core/util/linux/env.cc +6 -5
  1549. data/src/core/util/load_file.cc +26 -14
  1550. data/src/core/util/log.cc +5 -1
  1551. data/src/core/util/lru_cache.h +4 -4
  1552. data/src/core/util/match.h +7 -7
  1553. data/src/core/util/matchers.cc +1 -2
  1554. data/src/core/util/matchers.h +7 -12
  1555. data/src/core/util/memory_usage.h +268 -0
  1556. data/src/core/util/per_cpu.cc +2 -0
  1557. data/src/core/util/per_cpu.h +7 -0
  1558. data/src/core/util/posix/env.cc +2 -2
  1559. data/src/core/util/posix/sync.cc +0 -1
  1560. data/src/core/util/posix/time.cc +0 -1
  1561. data/src/core/util/ref_counted.h +1 -0
  1562. data/src/core/util/ref_counted_ptr.h +27 -1
  1563. data/src/core/util/ring_buffer.h +4 -5
  1564. data/src/core/util/shared_bit_gen.cc +21 -0
  1565. data/src/core/util/shared_bit_gen.h +64 -0
  1566. data/src/core/util/single_set_ptr.h +35 -4
  1567. data/src/core/util/status_helper.cc +98 -79
  1568. data/src/core/util/status_helper.h +13 -30
  1569. data/src/core/util/string.cc +2 -2
  1570. data/src/core/util/sync_abseil.cc +0 -1
  1571. data/src/core/util/table.h +6 -21
  1572. data/src/core/util/time.cc +5 -5
  1573. data/src/core/util/time.h +5 -5
  1574. data/src/core/util/time_precise.cc +0 -1
  1575. data/src/core/util/type_list.h +56 -0
  1576. data/src/core/util/upb_utils.h +42 -0
  1577. data/src/core/util/uri.cc +91 -24
  1578. data/src/core/util/uri.h +23 -7
  1579. data/src/core/util/useful.h +66 -17
  1580. data/src/core/util/validation_errors.cc +5 -5
  1581. data/src/core/util/wait_for_single_owner.cc +31 -0
  1582. data/src/core/util/wait_for_single_owner.h +86 -0
  1583. data/src/core/util/windows/env.cc +3 -3
  1584. data/src/core/util/windows/sync.cc +0 -1
  1585. data/src/core/util/windows/time.cc +0 -1
  1586. data/src/core/util/work_serializer.cc +27 -267
  1587. data/src/core/util/work_serializer.h +3 -27
  1588. data/src/core/xds/grpc/certificate_provider_store.cc +14 -19
  1589. data/src/core/xds/grpc/certificate_provider_store.h +4 -4
  1590. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +6 -6
  1591. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  1592. data/src/core/xds/grpc/xds_audit_logger_registry.cc +1 -1
  1593. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +22 -20
  1594. data/src/core/xds/grpc/xds_bootstrap_grpc.h +7 -2
  1595. data/src/core/xds/grpc/xds_certificate_provider.cc +16 -16
  1596. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  1597. data/src/core/xds/grpc/xds_client_grpc.cc +20 -16
  1598. data/src/core/xds/grpc/xds_client_grpc.h +4 -2
  1599. data/src/core/xds/grpc/xds_cluster.h +7 -7
  1600. data/src/core/xds/grpc/xds_cluster_parser.cc +29 -28
  1601. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +4 -4
  1602. data/src/core/xds/grpc/xds_common_types.cc +2 -2
  1603. data/src/core/xds/grpc/xds_common_types.h +4 -4
  1604. data/src/core/xds/grpc/xds_common_types_parser.cc +167 -89
  1605. data/src/core/xds/grpc/xds_common_types_parser.h +20 -7
  1606. data/src/core/xds/grpc/xds_endpoint.cc +3 -4
  1607. data/src/core/xds/grpc/xds_endpoint_parser.cc +68 -37
  1608. data/src/core/xds/grpc/xds_health_status.cc +4 -4
  1609. data/src/core/xds/grpc/xds_health_status.h +4 -3
  1610. data/src/core/xds/grpc/xds_http_fault_filter.cc +19 -21
  1611. data/src/core/xds/grpc/xds_http_fault_filter.h +4 -3
  1612. data/src/core/xds/grpc/xds_http_filter.h +11 -4
  1613. data/src/core/xds/grpc/xds_http_filter_registry.cc +8 -10
  1614. data/src/core/xds/grpc/xds_http_filter_registry.h +4 -4
  1615. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +31 -9
  1616. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +7 -3
  1617. data/src/core/xds/grpc/xds_http_rbac_filter.cc +21 -21
  1618. data/src/core/xds/grpc/xds_http_rbac_filter.h +4 -3
  1619. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +10 -10
  1620. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +4 -3
  1621. data/src/core/xds/grpc/xds_lb_policy_registry.cc +5 -5
  1622. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  1623. data/src/core/xds/grpc/xds_listener.cc +4 -6
  1624. data/src/core/xds/grpc/xds_listener.h +10 -10
  1625. data/src/core/xds/grpc/xds_listener_parser.cc +58 -51
  1626. data/src/core/xds/grpc/xds_listener_parser.h +2 -1
  1627. data/src/core/xds/grpc/xds_metadata.cc +5 -5
  1628. data/src/core/xds/grpc/xds_metadata.h +8 -0
  1629. data/src/core/xds/grpc/xds_metadata_parser.cc +26 -37
  1630. data/src/core/xds/grpc/xds_metadata_parser.h +0 -2
  1631. data/src/core/xds/grpc/xds_route_config.cc +10 -15
  1632. data/src/core/xds/grpc/xds_route_config.h +10 -10
  1633. data/src/core/xds/grpc/xds_route_config_parser.cc +85 -132
  1634. data/src/core/xds/grpc/xds_route_config_parser.h +5 -5
  1635. data/src/core/xds/grpc/xds_routing.cc +6 -6
  1636. data/src/core/xds/grpc/xds_routing.h +6 -6
  1637. data/src/core/xds/grpc/xds_server_grpc.cc +133 -50
  1638. data/src/core/xds/grpc/xds_server_grpc.h +34 -13
  1639. data/src/core/xds/grpc/xds_server_grpc_interface.h +37 -0
  1640. data/src/core/xds/grpc/xds_transport_grpc.cc +29 -12
  1641. data/src/core/xds/grpc/xds_transport_grpc.h +5 -3
  1642. data/src/core/xds/xds_client/lrs_client.cc +77 -88
  1643. data/src/core/xds/xds_client/lrs_client.h +15 -15
  1644. data/src/core/xds/xds_client/xds_api.cc +5 -228
  1645. data/src/core/xds/xds_client/xds_api.h +1 -133
  1646. data/src/core/xds/xds_client/xds_bootstrap.cc +11 -1
  1647. data/src/core/xds/xds_client/xds_bootstrap.h +25 -1
  1648. data/src/core/xds/xds_client/xds_client.cc +1076 -727
  1649. data/src/core/xds/xds_client/xds_client.h +138 -30
  1650. data/src/core/xds/xds_client/xds_resource_type.h +3 -5
  1651. data/src/core/xds/xds_client/xds_resource_type_impl.h +13 -8
  1652. data/src/core/xds/xds_client/xds_transport.h +1 -1
  1653. data/src/ruby/ext/grpc/extconf.rb +5 -2
  1654. data/src/ruby/ext/grpc/rb_call.c +1 -8
  1655. data/src/ruby/ext/grpc/rb_channel.c +70 -557
  1656. data/src/ruby/ext/grpc/rb_channel.h +0 -3
  1657. data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
  1658. data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
  1659. data/src/ruby/ext/grpc/rb_grpc.c +9 -5
  1660. data/src/ruby/ext/grpc/rb_grpc.h +1 -1
  1661. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  1662. data/src/ruby/ext/grpc/rb_loader.c +0 -4
  1663. data/src/ruby/ext/grpc/rb_server.c +31 -50
  1664. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
  1665. data/src/ruby/lib/grpc/version.rb +1 -1
  1666. data/src/ruby/spec/core_spec.rb +22 -0
  1667. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  1668. data/src/ruby/spec/generic/client_stub_spec.rb +2 -6
  1669. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1670. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +2 -2
  1671. data/third_party/abseil-cpp/absl/algorithm/container.h +81 -67
  1672. data/third_party/abseil-cpp/absl/base/attributes.h +142 -23
  1673. data/third_party/abseil-cpp/absl/base/call_once.h +18 -16
  1674. data/third_party/abseil-cpp/absl/base/config.h +23 -132
  1675. data/third_party/abseil-cpp/absl/base/fast_type_id.h +45 -0
  1676. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  1677. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  1678. data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
  1679. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  1680. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
  1681. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +106 -0
  1682. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +1 -1
  1683. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
  1684. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
  1685. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -0
  1686. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +5 -1
  1687. data/third_party/abseil-cpp/absl/base/internal/tracing.cc +39 -0
  1688. data/third_party/abseil-cpp/absl/base/internal/tracing.h +81 -0
  1689. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  1690. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -10
  1691. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +17 -0
  1692. data/third_party/abseil-cpp/absl/base/macros.h +35 -4
  1693. data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
  1694. data/third_party/abseil-cpp/absl/base/nullability.h +124 -56
  1695. data/third_party/abseil-cpp/absl/base/optimization.h +8 -12
  1696. data/third_party/abseil-cpp/absl/base/options.h +7 -81
  1697. data/third_party/abseil-cpp/absl/base/policy_checks.h +9 -7
  1698. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  1699. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  1700. data/third_party/abseil-cpp/absl/container/btree_map.h +891 -0
  1701. data/third_party/abseil-cpp/absl/container/btree_set.h +826 -0
  1702. data/third_party/abseil-cpp/absl/container/fixed_array.h +9 -15
  1703. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +22 -3
  1704. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +23 -4
  1705. data/third_party/abseil-cpp/absl/container/inlined_vector.h +10 -6
  1706. data/third_party/abseil-cpp/absl/container/internal/btree.h +3149 -0
  1707. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +867 -0
  1708. data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
  1709. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +10 -2
  1710. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -10
  1711. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
  1712. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
  1713. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  1714. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
  1715. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
  1716. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +6 -9
  1717. data/third_party/abseil-cpp/absl/container/internal/layout.h +27 -43
  1718. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  1719. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1462 -263
  1720. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1170 -1547
  1721. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
  1722. data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
  1723. data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
  1724. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +56 -0
  1725. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  1726. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
  1727. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +21 -7
  1728. data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  1729. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  1730. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  1731. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +12 -37
  1732. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  1733. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +1 -1
  1734. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -21
  1735. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  1736. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +7 -0
  1737. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  1738. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  1739. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  1740. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -8
  1741. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  1742. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  1743. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
  1744. data/third_party/abseil-cpp/absl/debugging/leak_check.cc +73 -0
  1745. data/third_party/abseil-cpp/absl/debugging/leak_check.h +150 -0
  1746. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
  1747. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  1748. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +3 -2
  1749. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +67 -18
  1750. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  1751. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  1752. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +1 -0
  1753. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +9 -2
  1754. data/third_party/abseil-cpp/absl/flags/flag.h +18 -15
  1755. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  1756. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +14 -5
  1757. data/third_party/abseil-cpp/absl/flags/internal/flag.h +23 -11
  1758. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +4 -0
  1759. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +3 -0
  1760. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +13 -12
  1761. data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
  1762. data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
  1763. data/third_party/abseil-cpp/absl/flags/usage_config.cc +9 -4
  1764. data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
  1765. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
  1766. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
  1767. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  1768. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  1769. data/third_party/abseil-cpp/absl/hash/hash.h +44 -2
  1770. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +14 -18
  1771. data/third_party/abseil-cpp/absl/hash/internal/hash.h +257 -127
  1772. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +27 -72
  1773. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
  1774. data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  1775. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +2 -0
  1776. data/third_party/abseil-cpp/absl/log/check.h +2 -1
  1777. data/third_party/abseil-cpp/absl/log/globals.h +4 -5
  1778. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  1779. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +43 -38
  1780. data/third_party/abseil-cpp/absl/log/internal/check_op.h +124 -99
  1781. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  1782. data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
  1783. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +158 -64
  1784. data/third_party/abseil-cpp/absl/log/internal/log_message.h +140 -83
  1785. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  1786. data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -5
  1787. data/third_party/abseil-cpp/absl/log/internal/proto.h +28 -18
  1788. data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
  1789. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +115 -0
  1790. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +107 -0
  1791. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +8 -1
  1792. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  1793. data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
  1794. data/third_party/abseil-cpp/absl/log/log.h +48 -35
  1795. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +5 -2
  1796. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +2 -0
  1797. data/third_party/abseil-cpp/absl/meta/type_traits.h +62 -181
  1798. data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
  1799. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
  1800. data/third_party/abseil-cpp/absl/numeric/int128.h +15 -3
  1801. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +6 -4
  1802. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +6 -3
  1803. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
  1804. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  1805. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +3 -1
  1806. data/third_party/abseil-cpp/absl/random/beta_distribution.h +3 -1
  1807. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +12 -12
  1808. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +10 -0
  1809. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +4 -2
  1810. data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
  1811. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -0
  1812. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +3 -2
  1813. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -7
  1814. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +185 -0
  1815. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  1816. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +5 -2
  1817. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  1818. data/third_party/abseil-cpp/absl/random/internal/platform.h +12 -12
  1819. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +57 -6
  1820. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -1
  1821. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  1822. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  1823. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +2 -2
  1824. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +0 -1
  1825. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +1 -4
  1826. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +4 -3
  1827. data/third_party/abseil-cpp/absl/random/random.h +88 -53
  1828. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +2 -3
  1829. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  1830. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -2
  1831. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -1
  1832. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +2 -0
  1833. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +5 -4
  1834. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +10 -7
  1835. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  1836. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
  1837. data/third_party/abseil-cpp/absl/status/status.cc +4 -8
  1838. data/third_party/abseil-cpp/absl/status/status.h +8 -8
  1839. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  1840. data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
  1841. data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
  1842. data/third_party/abseil-cpp/absl/strings/ascii.cc +44 -29
  1843. data/third_party/abseil-cpp/absl/strings/ascii.h +62 -22
  1844. data/third_party/abseil-cpp/absl/strings/charconv.cc +25 -29
  1845. data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
  1846. data/third_party/abseil-cpp/absl/strings/charset.h +3 -4
  1847. data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
  1848. data/third_party/abseil-cpp/absl/strings/cord.h +99 -102
  1849. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  1850. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  1851. data/third_party/abseil-cpp/absl/strings/escaping.cc +186 -197
  1852. data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
  1853. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1854. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +1 -1
  1855. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +53 -22
  1856. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  1857. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
  1858. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  1859. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  1860. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  1861. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +3 -2
  1862. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  1863. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  1864. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  1865. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -0
  1866. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  1867. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  1868. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  1869. data/third_party/abseil-cpp/absl/strings/match.h +21 -11
  1870. data/third_party/abseil-cpp/absl/strings/numbers.cc +55 -33
  1871. data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
  1872. data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
  1873. data/third_party/abseil-cpp/absl/strings/str_cat.h +41 -30
  1874. data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
  1875. data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
  1876. data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
  1877. data/third_party/abseil-cpp/absl/strings/str_split.h +18 -1
  1878. data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
  1879. data/third_party/abseil-cpp/absl/strings/string_view.h +46 -50
  1880. data/third_party/abseil-cpp/absl/strings/strip.h +11 -8
  1881. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
  1882. data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
  1883. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +16 -10
  1884. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +6 -0
  1885. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -1
  1886. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  1887. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  1888. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  1889. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  1890. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  1891. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  1892. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  1893. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +39 -13
  1894. data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
  1895. data/third_party/abseil-cpp/absl/synchronization/notification.cc +10 -2
  1896. data/third_party/abseil-cpp/absl/synchronization/notification.h +12 -2
  1897. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
  1898. data/third_party/abseil-cpp/absl/time/duration.cc +18 -58
  1899. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  1900. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1901. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  1902. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +3 -3
  1903. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +2 -2
  1904. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +2 -2
  1905. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +3 -3
  1906. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +2 -2
  1907. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  1908. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +1 -1
  1909. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +92 -112
  1910. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +1 -1
  1911. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -4
  1912. data/third_party/abseil-cpp/absl/time/time.h +89 -23
  1913. data/third_party/abseil-cpp/absl/types/internal/span.h +3 -2
  1914. data/third_party/abseil-cpp/absl/types/optional.h +7 -745
  1915. data/third_party/abseil-cpp/absl/types/span.h +98 -54
  1916. data/third_party/abseil-cpp/absl/types/variant.h +5 -784
  1917. data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
  1918. data/third_party/boringssl-with-bazel/src/crypto/aes/aes.cc +41 -0
  1919. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +259 -0
  1920. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.cc +53 -0
  1921. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.cc +47 -0
  1922. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.cc +42 -0
  1923. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.cc +109 -0
  1924. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.cc +43 -0
  1925. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +439 -0
  1926. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.cc +239 -0
  1927. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.cc +193 -0
  1928. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.cc +32 -0
  1929. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.cc +415 -0
  1930. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.cc +206 -0
  1931. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.cc +224 -0
  1932. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.cc +172 -0
  1933. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.cc +109 -0
  1934. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.cc +355 -0
  1935. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.cc +61 -0
  1936. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.cc +56 -0
  1937. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.cc +63 -0
  1938. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.cc +52 -0
  1939. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +33 -61
  1940. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.cc +241 -0
  1941. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +963 -0
  1942. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +661 -0
  1943. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.cc +164 -0
  1944. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.cc +276 -0
  1945. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +80 -0
  1946. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.cc +229 -0
  1947. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.cc +434 -0
  1948. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +19 -48
  1949. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.cc +658 -0
  1950. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.cc +268 -0
  1951. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +509 -0
  1952. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.cc +50 -0
  1953. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.cc +193 -0
  1954. data/third_party/boringssl-with-bazel/src/crypto/bio/file.cc +292 -0
  1955. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.cc +152 -0
  1956. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +17 -61
  1957. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.cc +446 -0
  1958. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.cc +59 -0
  1959. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +144 -0
  1960. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +131 -0
  1961. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.cc +169 -0
  1962. data/third_party/boringssl-with-bazel/src/crypto/bn/bn_asn1.cc +57 -0
  1963. data/third_party/boringssl-with-bazel/src/crypto/bn/convert.cc +407 -0
  1964. data/third_party/boringssl-with-bazel/src/crypto/bn/div.cc +100 -0
  1965. data/third_party/boringssl-with-bazel/src/crypto/bn/exponentiation.cc +166 -0
  1966. data/third_party/boringssl-with-bazel/src/crypto/bn/sqrt.cc +93 -0
  1967. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.cc +118 -0
  1968. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.cc +53 -0
  1969. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.cc +266 -0
  1970. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +708 -0
  1971. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +912 -0
  1972. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +16 -16
  1973. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.cc +156 -0
  1974. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.cc +224 -0
  1975. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +23 -23
  1976. data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +108 -0
  1977. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesctrhmac.cc +279 -0
  1978. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aeseax.cc +289 -0
  1979. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesgcmsiv.cc +922 -0
  1980. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_chacha20poly1305.cc +341 -0
  1981. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_des.cc +198 -0
  1982. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_null.cc +51 -0
  1983. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc2.cc +417 -0
  1984. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc4.cc +54 -0
  1985. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_tls.cc +599 -0
  1986. data/third_party/boringssl-with-bazel/src/crypto/cipher/get_cipher.cc +85 -0
  1987. data/third_party/boringssl-with-bazel/src/crypto/cipher/internal.h +240 -0
  1988. data/third_party/boringssl-with-bazel/src/crypto/cipher/tls_cbc.cc +476 -0
  1989. data/third_party/boringssl-with-bazel/src/crypto/cms/cms.cc +172 -0
  1990. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.cc +631 -0
  1991. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +13 -13
  1992. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +73 -0
  1993. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +53 -0
  1994. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +60 -0
  1995. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +59 -0
  1996. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +92 -0
  1997. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +39 -0
  1998. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +53 -0
  1999. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +173 -0
  2000. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +24 -22
  2001. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +281 -0
  2002. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +181 -0
  2003. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.cc +2154 -0
  2004. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.cc +18 -0
  2005. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +13 -13
  2006. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +17 -17
  2007. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.cc +529 -0
  2008. data/third_party/boringssl-with-bazel/src/crypto/des/des.cc +829 -0
  2009. data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +31 -73
  2010. data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +123 -0
  2011. data/third_party/boringssl-with-bazel/src/crypto/dh/params.cc +408 -0
  2012. data/third_party/boringssl-with-bazel/src/crypto/digest/digest_extra.cc +314 -0
  2013. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +941 -0
  2014. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +367 -0
  2015. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +17 -19
  2016. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_asn1.cc +554 -0
  2017. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_derive.cc +96 -0
  2018. data/third_party/boringssl-with-bazel/src/crypto/ec/hash_to_curve.cc +502 -0
  2019. data/third_party/boringssl-with-bazel/src/crypto/ec/internal.h +78 -0
  2020. data/third_party/boringssl-with-bazel/src/crypto/ecdh/ecdh.cc +73 -0
  2021. data/third_party/boringssl-with-bazel/src/crypto/ecdsa/ecdsa_asn1.cc +351 -0
  2022. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.cc +95 -0
  2023. data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +808 -0
  2024. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +13 -13
  2025. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.cc +379 -0
  2026. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.cc +470 -0
  2027. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +439 -0
  2028. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +17 -59
  2029. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.cc +153 -0
  2030. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.cc +142 -0
  2031. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +279 -0
  2032. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.cc +230 -0
  2033. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +286 -0
  2034. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.cc +103 -0
  2035. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +225 -0
  2036. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.cc +236 -0
  2037. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.cc +609 -0
  2038. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +198 -0
  2039. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.cc +109 -0
  2040. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +237 -0
  2041. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.cc +98 -0
  2042. data/third_party/boringssl-with-bazel/src/crypto/evp/print.cc +342 -0
  2043. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.cc +216 -0
  2044. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +95 -0
  2045. data/third_party/boringssl-with-bazel/src/crypto/ex_data.cc +141 -0
  2046. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +202 -0
  2047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.cc.inc +1281 -0
  2048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/cbc.cc.inc +130 -0
  2049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/cfb.cc.inc +166 -0
  2050. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ctr.cc.inc +100 -0
  2051. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm.cc.inc +604 -0
  2052. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm_nohw.cc.inc +302 -0
  2053. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +396 -76
  2054. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +209 -0
  2055. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +93 -0
  2056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ofb.cc.inc +53 -0
  2057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +282 -0
  2058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +765 -29
  2059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.cc.inc +269 -0
  2060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +554 -0
  2061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.cc.inc +374 -0
  2062. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.cc.inc +225 -0
  2063. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.cc.inc +159 -0
  2064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.cc.inc +191 -0
  2065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +734 -0
  2066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.cc.inc +87 -0
  2067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +739 -0
  2068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +278 -0
  2069. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +323 -0
  2070. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.cc.inc +582 -0
  2071. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +53 -160
  2072. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +99 -0
  2073. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +409 -0
  2074. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.cc.inc +222 -0
  2075. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +698 -0
  2076. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +928 -0
  2077. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.cc.inc +260 -0
  2078. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.cc.inc +142 -0
  2079. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +24 -21
  2080. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +315 -0
  2081. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +382 -0
  2082. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.cc.inc +295 -0
  2083. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.cc.inc +672 -0
  2084. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +1235 -0
  2085. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.cc.inc +409 -0
  2086. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +18 -69
  2087. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.cc.inc +288 -0
  2088. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +36 -25
  2089. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.cc.inc +190 -0
  2090. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +424 -0
  2091. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +13 -15
  2092. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +244 -0
  2093. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.cc.inc +178 -0
  2094. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +17 -59
  2095. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +17 -51
  2096. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.cc.inc +226 -0
  2097. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +91 -91
  2098. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +971 -0
  2099. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +494 -0
  2100. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.cc.inc +439 -0
  2101. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.cc.inc +104 -0
  2102. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +23 -70
  2103. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +295 -0
  2104. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.cc.inc +1163 -0
  2105. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +15 -10
  2106. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.cc.inc +741 -0
  2107. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +26 -21
  2108. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.cc.inc +749 -0
  2109. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +13 -13
  2110. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.cc.inc +179 -0
  2111. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.cc.inc +279 -0
  2112. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.cc.inc +269 -0
  2113. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.cc.inc +255 -0
  2114. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.cc.inc +221 -0
  2115. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.cc.inc +88 -0
  2116. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +278 -0
  2117. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +13 -13
  2118. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.cc +28 -0
  2119. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.cc.inc +112 -0
  2120. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.cc.inc +215 -0
  2121. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/internal.h +70 -0
  2122. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/keccak.cc.inc +279 -0
  2123. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  2124. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +2300 -0
  2125. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  2126. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +1397 -0
  2127. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.cc.inc +214 -0
  2128. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +22 -28
  2129. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +483 -0
  2130. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.cc.inc +147 -0
  2131. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +17 -60
  2132. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +372 -0
  2133. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +983 -0
  2134. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1279 -0
  2135. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  2136. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +1055 -0
  2137. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +38 -38
  2138. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +327 -0
  2139. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +52 -78
  2140. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.cc.inc +390 -0
  2141. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.cc.inc +299 -0
  2142. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  2143. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/address.h +119 -0
  2144. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  2145. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.cc.inc +169 -0
  2146. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.h +58 -0
  2147. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.cc.inc +161 -0
  2148. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.h +70 -0
  2149. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/params.h +78 -0
  2150. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +504 -0
  2151. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.cc.inc +173 -0
  2152. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.h +85 -0
  2153. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.cc.inc +171 -0
  2154. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.h +50 -0
  2155. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +13 -13
  2156. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  2157. data/third_party/boringssl-with-bazel/src/crypto/fuzzer_mode.cc +30 -0
  2158. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.cc +1095 -0
  2159. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.cc +2185 -0
  2160. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +16 -16
  2161. data/third_party/boringssl-with-bazel/src/crypto/internal.h +283 -457
  2162. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +13 -13
  2163. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.cc +869 -0
  2164. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +34 -78
  2165. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.cc +309 -0
  2166. data/third_party/boringssl-with-bazel/src/crypto/md4/md4.cc +194 -0
  2167. data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +37 -0
  2168. data/third_party/boringssl-with-bazel/src/crypto/md5/md5.cc +243 -0
  2169. data/third_party/boringssl-with-bazel/src/crypto/mem.cc +581 -0
  2170. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.cc +90 -0
  2171. data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +97 -1042
  2172. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +513 -0
  2173. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +14 -56
  2174. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.cc +80 -0
  2175. data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +44 -0
  2176. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.cc +149 -0
  2177. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.cc +254 -0
  2178. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +736 -0
  2179. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.cc +45 -0
  2180. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.cc +208 -0
  2181. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.cc +141 -0
  2182. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.cc +22 -0
  2183. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.cc +22 -0
  2184. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +36 -22
  2185. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +195 -0
  2186. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +524 -0
  2187. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +28 -63
  2188. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +279 -0
  2189. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +471 -0
  2190. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +1322 -0
  2191. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +17 -17
  2192. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.cc +314 -0
  2193. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.cc +310 -0
  2194. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.cc +850 -0
  2195. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +17 -17
  2196. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.cc +262 -0
  2197. data/third_party/boringssl-with-bazel/src/crypto/rand/deterministic.cc +65 -0
  2198. data/third_party/boringssl-with-bazel/src/crypto/rand/fork_detect.cc +194 -0
  2199. data/third_party/boringssl-with-bazel/src/crypto/rand/forkunsafe.cc +44 -0
  2200. data/third_party/boringssl-with-bazel/src/crypto/rand/getentropy.cc +60 -0
  2201. data/third_party/boringssl-with-bazel/src/crypto/rand/getrandom_fillin.h +64 -0
  2202. data/third_party/boringssl-with-bazel/src/crypto/rand/internal.h +55 -0
  2203. data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +42 -0
  2204. data/third_party/boringssl-with-bazel/src/crypto/rand/passive.cc +178 -0
  2205. data/third_party/boringssl-with-bazel/src/crypto/rand/rand.cc +77 -0
  2206. data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +46 -0
  2207. data/third_party/boringssl-with-bazel/src/crypto/rand/urandom.cc +328 -0
  2208. data/third_party/boringssl-with-bazel/src/crypto/rand/windows.cc +98 -0
  2209. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.cc +56 -0
  2210. data/third_party/boringssl-with-bazel/src/crypto/refcount.cc +59 -0
  2211. data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +36 -0
  2212. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_asn1.cc +283 -0
  2213. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_crypt.cc +523 -0
  2214. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_extra.cc +19 -0
  2215. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_print.cc +27 -0
  2216. data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +52 -0
  2217. data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +87 -0
  2218. data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +104 -0
  2219. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.cc +79 -0
  2220. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +113 -0
  2221. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +204 -0
  2222. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/spake2plus.cc +501 -0
  2223. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.cc +496 -0
  2224. data/third_party/boringssl-with-bazel/src/crypto/thread.cc +68 -0
  2225. data/third_party/boringssl-with-bazel/src/crypto/thread_none.cc +51 -0
  2226. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.cc +151 -0
  2227. data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +238 -0
  2228. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +17 -17
  2229. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.cc +1656 -0
  2230. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.cc +685 -0
  2231. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.cc +1263 -0
  2232. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.cc +52 -0
  2233. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +95 -0
  2234. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.cc +74 -0
  2235. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.cc +136 -0
  2236. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +538 -0
  2237. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.cc +355 -0
  2238. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.cc +227 -0
  2239. data/third_party/boringssl-with-bazel/src/crypto/x509/ext_dat.h +13 -55
  2240. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.cc +37 -0
  2241. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +29 -61
  2242. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.cc +185 -0
  2243. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.cc +796 -0
  2244. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.cc +364 -0
  2245. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.cc +103 -0
  2246. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.cc +203 -0
  2247. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.cc +287 -0
  2248. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.cc +79 -0
  2249. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.cc +181 -0
  2250. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.cc +31 -0
  2251. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.cc +593 -0
  2252. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.cc +95 -0
  2253. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.cc +102 -0
  2254. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +366 -0
  2255. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.cc +444 -0
  2256. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.cc +557 -0
  2257. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.cc +73 -0
  2258. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.cc +114 -0
  2259. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.cc +228 -0
  2260. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.cc +79 -0
  2261. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +161 -0
  2262. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.cc +81 -0
  2263. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.cc +304 -0
  2264. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.cc +514 -0
  2265. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.cc +89 -0
  2266. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.cc +101 -0
  2267. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.cc +109 -0
  2268. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.cc +183 -0
  2269. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.cc +590 -0
  2270. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.cc +131 -0
  2271. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.cc +1342 -0
  2272. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.cc +47 -0
  2273. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.cc +186 -0
  2274. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.cc +238 -0
  2275. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.cc +66 -0
  2276. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.cc +44 -0
  2277. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.cc +139 -0
  2278. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.cc +554 -0
  2279. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.cc +164 -0
  2280. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.cc +257 -0
  2281. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.cc +198 -0
  2282. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.cc +118 -0
  2283. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.cc +147 -0
  2284. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.cc +249 -0
  2285. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +1607 -0
  2286. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.cc +440 -0
  2287. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.cc +235 -0
  2288. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.cc +365 -0
  2289. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.cc +67 -0
  2290. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.cc +91 -0
  2291. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +116 -0
  2292. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.cc +318 -0
  2293. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.cc +55 -0
  2294. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.cc +342 -0
  2295. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.cc +36 -0
  2296. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +501 -0
  2297. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.cc +170 -0
  2298. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.cc +74 -0
  2299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.cc +51 -0
  2300. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.cc +34 -0
  2301. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.cc +28 -0
  2302. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +485 -0
  2303. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +153 -0
  2304. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +1538 -0
  2305. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +29 -21
  2306. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +14 -48
  2307. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +16 -76
  2308. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +14 -14
  2309. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +29 -116
  2310. data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +13 -13
  2311. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +248 -328
  2312. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +31 -58
  2313. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +14 -56
  2314. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
  2315. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +14 -56
  2316. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +14 -14
  2317. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +14 -56
  2318. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +15 -122
  2319. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +14 -56
  2320. data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +13 -13
  2321. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +38 -17
  2322. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +14 -56
  2323. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +14 -14
  2324. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +32 -60
  2325. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +14 -14
  2326. data/third_party/boringssl-with-bazel/src/include/openssl/cms.h +146 -0
  2327. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +14 -56
  2328. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +13 -13
  2329. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +48 -17
  2330. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +14 -14
  2331. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +14 -14
  2332. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +14 -56
  2333. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +18 -56
  2334. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +38 -63
  2335. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +18 -59
  2336. data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +13 -13
  2337. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +14 -14
  2338. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -67
  2339. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +32 -73
  2340. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +15 -66
  2341. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +14 -52
  2342. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +14 -14
  2343. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +15 -108
  2344. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +15 -57
  2345. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +13 -55
  2346. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +14 -108
  2347. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +14 -14
  2348. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +14 -14
  2349. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +14 -56
  2350. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +18 -18
  2351. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -14
  2352. data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +13 -13
  2353. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +14 -14
  2354. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +14 -56
  2355. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +14 -56
  2356. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +14 -56
  2357. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +14 -56
  2358. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +21 -27
  2359. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +14 -38
  2360. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +28 -70
  2361. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +14 -56
  2362. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +14 -14
  2363. data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +13 -13
  2364. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +23 -17
  2365. data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +13 -13
  2366. data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +13 -13
  2367. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +22 -60
  2368. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +13 -13
  2369. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +14 -14
  2370. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +32 -61
  2371. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +14 -14
  2372. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +14 -14
  2373. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +14 -14
  2374. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +15 -15
  2375. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +14 -56
  2376. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +14 -56
  2377. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -64
  2378. data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +13 -13
  2379. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +14 -14
  2380. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +16 -96
  2381. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +14 -14
  2382. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +174 -0
  2383. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +25 -33
  2384. data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +13 -13
  2385. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +628 -309
  2386. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +15 -114
  2387. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +14 -56
  2388. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +23 -18
  2389. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +16 -58
  2390. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +13 -13
  2391. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +36 -157
  2392. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +16 -16
  2393. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +14 -56
  2394. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +21 -65
  2395. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +13 -13
  2396. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +13 -13
  2397. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +13 -53
  2398. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +15 -14
  2399. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +680 -434
  2400. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +129 -174
  2401. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +176 -131
  2402. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +21 -127
  2403. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +109 -104
  2404. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +321 -316
  2405. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +101 -94
  2406. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +920 -519
  2407. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +78 -85
  2408. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +67 -157
  2409. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +201 -333
  2410. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +113 -245
  2411. data/third_party/boringssl-with-bazel/src/ssl/internal.h +1054 -540
  2412. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +47 -157
  2413. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +29 -159
  2414. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +18 -112
  2415. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +108 -207
  2416. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +70 -149
  2417. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +15 -20
  2418. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +117 -157
  2419. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +229 -365
  2420. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +294 -32
  2421. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +13 -109
  2422. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +35 -34
  2423. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +352 -354
  2424. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +43 -101
  2425. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +127 -249
  2426. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +17 -91
  2427. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +109 -157
  2428. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +44 -30
  2429. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +66 -195
  2430. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +46 -177
  2431. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +88 -48
  2432. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +160 -96
  2433. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +251 -184
  2434. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +250 -119
  2435. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +64 -117
  2436. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +54 -139
  2437. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +6 -0
  2438. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +6 -0
  2439. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +4 -1
  2440. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1 -1
  2441. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +3 -0
  2442. data/third_party/upb/upb/base/internal/log2.h +3 -1
  2443. data/third_party/upb/upb/base/string_view.h +10 -0
  2444. data/third_party/upb/upb/hash/common.c +312 -187
  2445. data/third_party/upb/upb/hash/common.h +44 -43
  2446. data/third_party/upb/upb/hash/int_table.h +29 -5
  2447. data/third_party/upb/upb/hash/str_table.h +6 -0
  2448. data/third_party/upb/upb/json/decode.c +39 -10
  2449. data/third_party/upb/upb/json/decode.h +25 -3
  2450. data/third_party/upb/upb/mem/alloc.h +5 -0
  2451. data/third_party/upb/upb/mem/arena.c +438 -161
  2452. data/third_party/upb/upb/mem/arena.h +57 -11
  2453. data/third_party/upb/upb/mem/arena.hpp +4 -20
  2454. data/third_party/upb/upb/mem/internal/arena.h +65 -29
  2455. data/third_party/upb/upb/message/accessors.c +1 -5
  2456. data/third_party/upb/upb/message/accessors.h +49 -0
  2457. data/third_party/upb/upb/message/array.c +7 -6
  2458. data/third_party/upb/upb/message/array.h +4 -4
  2459. data/third_party/upb/upb/message/compat.c +11 -14
  2460. data/third_party/upb/upb/message/compat.h +4 -3
  2461. data/third_party/upb/upb/message/copy.c +35 -30
  2462. data/third_party/upb/upb/message/internal/accessors.h +151 -15
  2463. data/third_party/upb/upb/message/internal/extension.c +16 -25
  2464. data/third_party/upb/upb/message/internal/extension.h +17 -5
  2465. data/third_party/upb/upb/message/internal/iterator.c +58 -0
  2466. data/third_party/upb/upb/message/internal/iterator.h +29 -0
  2467. data/third_party/upb/upb/message/internal/map.h +76 -22
  2468. data/third_party/upb/upb/message/internal/map_sorter.h +13 -4
  2469. data/third_party/upb/upb/message/internal/message.c +48 -29
  2470. data/third_party/upb/upb/message/internal/message.h +203 -25
  2471. data/third_party/upb/upb/message/map.c +68 -20
  2472. data/third_party/upb/upb/message/map.h +8 -1
  2473. data/third_party/upb/upb/message/map_gencode_util.h +3 -45
  2474. data/third_party/upb/upb/message/map_sorter.c +52 -16
  2475. data/third_party/upb/upb/message/merge.h +3 -3
  2476. data/third_party/upb/upb/message/message.c +200 -42
  2477. data/third_party/upb/upb/message/message.h +69 -4
  2478. data/third_party/upb/upb/message/value.h +9 -0
  2479. data/third_party/upb/upb/mini_descriptor/build_enum.c +16 -6
  2480. data/third_party/upb/upb/mini_descriptor/decode.c +115 -138
  2481. data/third_party/upb/upb/mini_descriptor/decode.h +4 -3
  2482. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +1 -1
  2483. data/third_party/upb/upb/mini_descriptor/link.c +4 -0
  2484. data/third_party/upb/upb/mini_table/extension.h +8 -1
  2485. data/third_party/upb/upb/mini_table/extension_registry.c +25 -13
  2486. data/third_party/upb/upb/mini_table/extension_registry.h +13 -6
  2487. data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
  2488. data/third_party/upb/upb/mini_table/internal/extension.h +24 -1
  2489. data/third_party/upb/upb/mini_table/internal/field.h +4 -4
  2490. data/third_party/upb/upb/mini_table/internal/message.h +1 -1
  2491. data/third_party/upb/upb/mini_table/message.c +21 -13
  2492. data/third_party/upb/upb/port/atomic.h +134 -7
  2493. data/third_party/upb/upb/port/def.inc +184 -47
  2494. data/third_party/upb/upb/port/undef.inc +14 -0
  2495. data/third_party/upb/upb/reflection/common.h +1 -11
  2496. data/third_party/upb/upb/reflection/def.hpp +5 -1
  2497. data/third_party/upb/upb/reflection/def_pool.c +10 -3
  2498. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  2499. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +19 -0
  2500. data/third_party/upb/upb/reflection/enum_def.c +4 -4
  2501. data/third_party/upb/upb/reflection/enum_reserved_range.c +1 -1
  2502. data/third_party/upb/upb/reflection/enum_value_def.c +9 -8
  2503. data/third_party/upb/upb/reflection/extension_range.c +1 -2
  2504. data/third_party/upb/upb/reflection/field_def.c +6 -22
  2505. data/third_party/upb/upb/reflection/field_def.h +1 -1
  2506. data/third_party/upb/upb/reflection/file_def.c +16 -10
  2507. data/third_party/upb/upb/reflection/internal/def_builder.c +1 -1
  2508. data/third_party/upb/upb/reflection/internal/def_builder.h +35 -10
  2509. data/third_party/upb/upb/reflection/internal/enum_value_def.h +1 -1
  2510. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  2511. data/third_party/upb/upb/reflection/message.c +19 -16
  2512. data/third_party/upb/upb/reflection/message.h +3 -1
  2513. data/third_party/upb/upb/reflection/message_def.c +4 -7
  2514. data/third_party/upb/upb/reflection/message_reserved_range.c +1 -1
  2515. data/third_party/upb/upb/reflection/method_def.c +1 -1
  2516. data/third_party/upb/upb/reflection/oneof_def.c +3 -3
  2517. data/third_party/upb/upb/reflection/service_def.c +2 -5
  2518. data/third_party/upb/upb/text/encode.c +17 -20
  2519. data/third_party/upb/upb/text/internal/encode.c +25 -6
  2520. data/third_party/upb/upb/text/internal/encode.h +6 -1
  2521. data/third_party/upb/upb/wire/decode.c +154 -107
  2522. data/third_party/upb/upb/wire/decode.h +5 -3
  2523. data/third_party/upb/upb/wire/encode.c +114 -55
  2524. data/third_party/upb/upb/wire/encode.h +2 -0
  2525. data/third_party/upb/upb/wire/eps_copy_input_stream.h +18 -20
  2526. data/third_party/upb/upb/wire/internal/decode_fast.c +2 -2
  2527. data/third_party/upb/upb/wire/internal/decode_fast.h +4 -0
  2528. data/third_party/upb/upb/wire/internal/decoder.h +4 -11
  2529. data/third_party/utf8_range/utf8_range.c +15 -275
  2530. data/third_party/utf8_range/utf8_range_neon.inc +117 -0
  2531. data/third_party/utf8_range/utf8_range_sse.inc +272 -0
  2532. data/third_party/zlib/deflate.c +40 -15
  2533. data/third_party/zlib/deflate.h +33 -2
  2534. data/third_party/zlib/gzguts.h +2 -6
  2535. data/third_party/zlib/inflate.c +1 -1
  2536. data/third_party/zlib/inftrees.c +3 -3
  2537. data/third_party/zlib/inftrees.h +2 -2
  2538. data/third_party/zlib/trees.c +18 -4
  2539. data/third_party/zlib/zconf.h +1 -9
  2540. data/third_party/zlib/zlib.h +12 -12
  2541. data/third_party/zlib/zutil.h +4 -25
  2542. metadata +631 -521
  2543. data/include/grpc/grpc_cronet.h +0 -37
  2544. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +0 -82
  2545. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +0 -426
  2546. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +0 -87
  2547. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +0 -32
  2548. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +0 -407
  2549. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +0 -124
  2550. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +0 -38
  2551. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +0 -108
  2552. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +0 -33
  2553. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -67
  2554. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -48
  2555. data/src/core/lib/channel/call_finalization.h +0 -88
  2556. data/src/core/lib/channel/status_util.cc +0 -153
  2557. data/src/core/lib/channel/status_util.h +0 -80
  2558. data/src/core/lib/config/config_vars.cc +0 -151
  2559. data/src/core/lib/config/config_vars.h +0 -128
  2560. data/src/core/lib/config/config_vars_non_generated.cc +0 -49
  2561. data/src/core/lib/config/core_configuration.cc +0 -111
  2562. data/src/core/lib/config/core_configuration.h +0 -242
  2563. data/src/core/lib/config/load_config.cc +0 -77
  2564. data/src/core/lib/config/load_config.h +0 -54
  2565. data/src/core/lib/event_engine/forkable.cc +0 -107
  2566. data/src/core/lib/event_engine/forkable.h +0 -69
  2567. data/src/core/lib/iomgr/executor.cc +0 -452
  2568. data/src/core/lib/iomgr/executor.h +0 -119
  2569. data/src/core/lib/iomgr/python_util.h +0 -46
  2570. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +0 -69
  2571. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +0 -50
  2572. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +0 -75
  2573. data/src/core/lib/security/context/security_context.cc +0 -331
  2574. data/src/core/lib/security/context/security_context.h +0 -202
  2575. data/src/core/lib/security/credentials/alts/alts_credentials.cc +0 -116
  2576. data/src/core/lib/security/credentials/alts/alts_credentials.h +0 -127
  2577. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +0 -71
  2578. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +0 -57
  2579. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +0 -67
  2580. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +0 -32
  2581. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +0 -101
  2582. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +0 -123
  2583. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +0 -45
  2584. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +0 -74
  2585. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +0 -55
  2586. data/src/core/lib/security/credentials/call_creds_util.cc +0 -97
  2587. data/src/core/lib/security/credentials/call_creds_util.h +0 -43
  2588. data/src/core/lib/security/credentials/channel_creds_registry.h +0 -126
  2589. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +0 -241
  2590. data/src/core/lib/security/credentials/composite/composite_credentials.cc +0 -168
  2591. data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -134
  2592. data/src/core/lib/security/credentials/credentials.cc +0 -160
  2593. data/src/core/lib/security/credentials/credentials.h +0 -298
  2594. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +0 -529
  2595. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +0 -117
  2596. data/src/core/lib/security/credentials/external/aws_request_signer.cc +0 -230
  2597. data/src/core/lib/security/credentials/external/aws_request_signer.h +0 -72
  2598. data/src/core/lib/security/credentials/external/external_account_credentials.cc +0 -642
  2599. data/src/core/lib/security/credentials/external/external_account_credentials.h +0 -207
  2600. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -175
  2601. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +0 -80
  2602. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +0 -221
  2603. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +0 -73
  2604. data/src/core/lib/security/credentials/fake/fake_credentials.cc +0 -103
  2605. data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -124
  2606. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +0 -195
  2607. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h +0 -90
  2608. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +0 -38
  2609. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -430
  2610. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -101
  2611. data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -78
  2612. data/src/core/lib/security/credentials/iam/iam_credentials.h +0 -66
  2613. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +0 -71
  2614. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +0 -61
  2615. data/src/core/lib/security/credentials/jwt/json_token.cc +0 -318
  2616. data/src/core/lib/security/credentials/jwt/json_token.h +0 -78
  2617. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +0 -182
  2618. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +0 -106
  2619. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -988
  2620. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +0 -122
  2621. data/src/core/lib/security/credentials/local/local_credentials.cc +0 -68
  2622. data/src/core/lib/security/credentials/local/local_credentials.h +0 -77
  2623. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +0 -653
  2624. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +0 -197
  2625. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -202
  2626. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +0 -123
  2627. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +0 -474
  2628. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -144
  2629. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +0 -338
  2630. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +0 -215
  2631. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +0 -84
  2632. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +0 -482
  2633. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +0 -206
  2634. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +0 -237
  2635. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +0 -169
  2636. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +0 -161
  2637. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -145
  2638. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +0 -258
  2639. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +0 -130
  2640. data/src/core/lib/security/credentials/tls/tls_credentials.cc +0 -170
  2641. data/src/core/lib/security/credentials/tls/tls_credentials.h +0 -75
  2642. data/src/core/lib/security/credentials/tls/tls_utils.cc +0 -127
  2643. data/src/core/lib/security/credentials/tls/tls_utils.h +0 -50
  2644. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +0 -298
  2645. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +0 -175
  2646. data/src/core/lib/security/credentials/xds/xds_credentials.cc +0 -230
  2647. data/src/core/lib/security/credentials/xds/xds_credentials.h +0 -110
  2648. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +0 -303
  2649. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +0 -78
  2650. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +0 -314
  2651. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -42
  2652. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +0 -118
  2653. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +0 -102
  2654. data/src/core/lib/security/security_connector/load_system_roots.h +0 -35
  2655. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +0 -36
  2656. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +0 -165
  2657. data/src/core/lib/security/security_connector/load_system_roots_supported.h +0 -44
  2658. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +0 -85
  2659. data/src/core/lib/security/security_connector/local/local_security_connector.cc +0 -306
  2660. data/src/core/lib/security/security_connector/local/local_security_connector.h +0 -62
  2661. data/src/core/lib/security/security_connector/security_connector.cc +0 -123
  2662. data/src/core/lib/security/security_connector/security_connector.h +0 -197
  2663. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +0 -403
  2664. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +0 -81
  2665. data/src/core/lib/security/security_connector/ssl_utils.cc +0 -628
  2666. data/src/core/lib/security/security_connector/ssl_utils.h +0 -188
  2667. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +0 -816
  2668. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -285
  2669. data/src/core/lib/security/transport/auth_filters.h +0 -144
  2670. data/src/core/lib/security/transport/client_auth_filter.cc +0 -219
  2671. data/src/core/lib/security/transport/server_auth_filter.cc +0 -215
  2672. data/src/core/lib/security/util/json_util.cc +0 -69
  2673. data/src/core/lib/security/util/json_util.h +0 -43
  2674. data/src/core/lib/surface/client_call.cc +0 -427
  2675. data/src/core/lib/surface/client_call.h +0 -179
  2676. data/src/core/lib/surface/server_call.cc +0 -221
  2677. data/src/core/lib/surface/server_call.h +0 -168
  2678. data/src/core/lib/transport/call_arena_allocator.cc +0 -27
  2679. data/src/core/lib/transport/call_arena_allocator.h +0 -91
  2680. data/src/core/lib/transport/call_destination.h +0 -76
  2681. data/src/core/lib/transport/call_filters.cc +0 -142
  2682. data/src/core/lib/transport/call_filters.h +0 -1899
  2683. data/src/core/lib/transport/call_spine.cc +0 -131
  2684. data/src/core/lib/transport/call_spine.h +0 -435
  2685. data/src/core/lib/transport/call_state.cc +0 -39
  2686. data/src/core/lib/transport/call_state.h +0 -1061
  2687. data/src/core/lib/transport/custom_metadata.h +0 -30
  2688. data/src/core/lib/transport/http2_errors.h +0 -41
  2689. data/src/core/lib/transport/interception_chain.cc +0 -147
  2690. data/src/core/lib/transport/interception_chain.h +0 -253
  2691. data/src/core/lib/transport/message.cc +0 -44
  2692. data/src/core/lib/transport/message.h +0 -66
  2693. data/src/core/lib/transport/metadata.cc +0 -61
  2694. data/src/core/lib/transport/metadata.h +0 -113
  2695. data/src/core/lib/transport/metadata_batch.cc +0 -374
  2696. data/src/core/lib/transport/metadata_batch.h +0 -1599
  2697. data/src/core/lib/transport/metadata_compression_traits.h +0 -66
  2698. data/src/core/lib/transport/metadata_info.cc +0 -55
  2699. data/src/core/lib/transport/metadata_info.h +0 -85
  2700. data/src/core/lib/transport/parsed_metadata.cc +0 -35
  2701. data/src/core/lib/transport/parsed_metadata.h +0 -429
  2702. data/src/core/lib/transport/simple_slice_based_metadata.h +0 -53
  2703. data/src/core/util/atm.cc +0 -34
  2704. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +0 -50
  2705. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  2706. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  2707. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +0 -108
  2708. data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
  2709. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +0 -253
  2710. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  2711. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +0 -30
  2712. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  2713. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  2714. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  2715. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  2716. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
  2717. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
  2718. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +0 -284
  2719. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +0 -95
  2720. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -89
  2721. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +0 -84
  2722. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +0 -151
  2723. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +0 -85
  2724. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +0 -465
  2725. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +0 -279
  2726. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +0 -235
  2727. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +0 -74
  2728. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +0 -457
  2729. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +0 -245
  2730. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +0 -259
  2731. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +0 -214
  2732. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -183
  2733. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -397
  2734. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +0 -103
  2735. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +0 -98
  2736. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +0 -105
  2737. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +0 -94
  2738. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +0 -241
  2739. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +0 -973
  2740. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +0 -708
  2741. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +0 -212
  2742. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +0 -317
  2743. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -126
  2744. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +0 -268
  2745. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +0 -479
  2746. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +0 -726
  2747. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +0 -309
  2748. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +0 -544
  2749. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +0 -92
  2750. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -235
  2751. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +0 -334
  2752. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c +0 -192
  2753. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +0 -480
  2754. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -102
  2755. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +0 -189
  2756. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +0 -133
  2757. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +0 -169
  2758. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +0 -57
  2759. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +0 -465
  2760. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +0 -158
  2761. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +0 -53
  2762. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +0 -266
  2763. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +0 -718
  2764. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +0 -911
  2765. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +0 -156
  2766. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -224
  2767. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +0 -127
  2768. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +0 -152
  2769. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +0 -284
  2770. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +0 -841
  2771. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +0 -348
  2772. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +0 -228
  2773. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +0 -90
  2774. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +0 -455
  2775. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +0 -94
  2776. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +0 -598
  2777. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +0 -280
  2778. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +0 -514
  2779. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +0 -672
  2780. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +0 -75
  2781. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -55
  2782. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -62
  2783. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +0 -61
  2784. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +0 -93
  2785. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +0 -41
  2786. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -54
  2787. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -151
  2788. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -326
  2789. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +0 -188
  2790. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +0 -2157
  2791. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +0 -18
  2792. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +0 -523
  2793. data/third_party/boringssl-with-bazel/src/crypto/des/des.c +0 -871
  2794. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +0 -165
  2795. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +0 -480
  2796. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -266
  2797. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +0 -1539
  2798. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +0 -58
  2799. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +0 -997
  2800. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -419
  2801. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +0 -572
  2802. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +0 -96
  2803. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +0 -508
  2804. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -78
  2805. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +0 -124
  2806. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +0 -411
  2807. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +0 -91
  2808. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +0 -903
  2809. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +0 -430
  2810. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +0 -547
  2811. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +0 -483
  2812. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +0 -137
  2813. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +0 -120
  2814. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +0 -338
  2815. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +0 -274
  2816. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +0 -332
  2817. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +0 -100
  2818. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +0 -224
  2819. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +0 -232
  2820. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +0 -646
  2821. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +0 -241
  2822. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +0 -106
  2823. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +0 -236
  2824. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +0 -146
  2825. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +0 -381
  2826. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +0 -209
  2827. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +0 -156
  2828. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +0 -236
  2829. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c.inc +0 -127
  2830. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c.inc +0 -1281
  2831. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c.inc +0 -242
  2832. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c.inc +0 -124
  2833. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +0 -279
  2834. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.c.inc +0 -310
  2835. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.c.inc +0 -541
  2836. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c.inc +0 -428
  2837. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c.inc +0 -267
  2838. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c.inc +0 -201
  2839. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c.inc +0 -234
  2840. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c.inc +0 -876
  2841. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c.inc +0 -87
  2842. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c.inc +0 -1320
  2843. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c.inc +0 -397
  2844. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c.inc +0 -331
  2845. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c.inc +0 -624
  2846. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.c.inc +0 -146
  2847. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c.inc +0 -532
  2848. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c.inc +0 -222
  2849. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c.inc +0 -744
  2850. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c.inc +0 -1077
  2851. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c.inc +0 -354
  2852. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c.inc +0 -137
  2853. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c.inc +0 -363
  2854. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c.inc +0 -499
  2855. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c.inc +0 -287
  2856. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c.inc +0 -717
  2857. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c.inc +0 -1464
  2858. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.c.inc +0 -446
  2859. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.c.inc +0 -322
  2860. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c.inc +0 -245
  2861. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c.inc +0 -489
  2862. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c.inc +0 -288
  2863. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c.inc +0 -304
  2864. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.c.inc +0 -267
  2865. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c.inc +0 -1043
  2866. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c.inc +0 -561
  2867. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c.inc +0 -491
  2868. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c.inc +0 -104
  2869. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c.inc +0 -359
  2870. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c.inc +0 -1163
  2871. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c.inc +0 -734
  2872. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c.inc +0 -749
  2873. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c.inc +0 -173
  2874. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c.inc +0 -336
  2875. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c.inc +0 -269
  2876. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c.inc +0 -255
  2877. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c.inc +0 -264
  2878. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c.inc +0 -130
  2879. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c.inc +0 -317
  2880. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +0 -29
  2881. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c.inc +0 -112
  2882. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c.inc +0 -256
  2883. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c.inc +0 -240
  2884. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +0 -37
  2885. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c.inc +0 -284
  2886. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c.inc +0 -164
  2887. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c.inc +0 -200
  2888. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c.inc +0 -196
  2889. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c.inc +0 -743
  2890. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c.inc +0 -302
  2891. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +0 -428
  2892. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c.inc +0 -87
  2893. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c.inc +0 -90
  2894. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c.inc +0 -220
  2895. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c.inc +0 -479
  2896. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c.inc +0 -241
  2897. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c.inc +0 -420
  2898. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c.inc +0 -1038
  2899. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c.inc +0 -1351
  2900. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c.inc +0 -121
  2901. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c.inc +0 -1038
  2902. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c.inc +0 -328
  2903. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c.inc +0 -439
  2904. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c.inc +0 -359
  2905. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c.inc +0 -543
  2906. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c.inc +0 -218
  2907. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +0 -1092
  2908. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +0 -2234
  2909. data/third_party/boringssl-with-bazel/src/crypto/keccak/internal.h +0 -70
  2910. data/third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c +0 -279
  2911. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +0 -845
  2912. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +0 -350
  2913. data/third_party/boringssl-with-bazel/src/crypto/mem.c +0 -613
  2914. data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +0 -73
  2915. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.c +0 -1687
  2916. data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +0 -90
  2917. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +0 -564
  2918. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c +0 -122
  2919. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -243
  2920. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -294
  2921. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -789
  2922. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +0 -87
  2923. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -250
  2924. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -183
  2925. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -64
  2926. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -64
  2927. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +0 -193
  2928. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -523
  2929. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +0 -316
  2930. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -527
  2931. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +0 -1352
  2932. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +0 -314
  2933. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +0 -308
  2934. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +0 -847
  2935. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +0 -261
  2936. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +0 -65
  2937. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fork_detect.c +0 -195
  2938. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +0 -44
  2939. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +0 -60
  2940. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getrandom_fillin.h +0 -64
  2941. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +0 -42
  2942. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +0 -174
  2943. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +0 -77
  2944. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +0 -37
  2945. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +0 -46
  2946. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/urandom.c +0 -328
  2947. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +0 -102
  2948. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c +0 -98
  2949. data/third_party/boringssl-with-bazel/src/crypto/refcount.c +0 -59
  2950. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +0 -79
  2951. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +0 -324
  2952. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +0 -570
  2953. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +0 -22
  2954. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +0 -79
  2955. data/third_party/boringssl-with-bazel/src/crypto/spx/address.c +0 -101
  2956. data/third_party/boringssl-with-bazel/src/crypto/spx/address.h +0 -50
  2957. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.c +0 -133
  2958. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.h +0 -54
  2959. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.c +0 -150
  2960. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.h +0 -61
  2961. data/third_party/boringssl-with-bazel/src/crypto/spx/params.h +0 -71
  2962. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +0 -140
  2963. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c +0 -53
  2964. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h +0 -44
  2965. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.c +0 -136
  2966. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.h +0 -70
  2967. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.c +0 -135
  2968. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.h +0 -45
  2969. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +0 -534
  2970. data/third_party/boringssl-with-bazel/src/crypto/thread.c +0 -110
  2971. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -51
  2972. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -150
  2973. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +0 -236
  2974. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +0 -1668
  2975. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +0 -687
  2976. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +0 -1267
  2977. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +0 -94
  2978. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +0 -136
  2979. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +0 -116
  2980. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -178
  2981. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +0 -585
  2982. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +0 -400
  2983. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -269
  2984. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +0 -79
  2985. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +0 -227
  2986. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +0 -786
  2987. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +0 -401
  2988. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -145
  2989. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +0 -245
  2990. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -329
  2991. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +0 -121
  2992. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c +0 -221
  2993. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c +0 -73
  2994. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c +0 -634
  2995. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c +0 -135
  2996. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c +0 -141
  2997. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c +0 -416
  2998. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +0 -482
  2999. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +0 -598
  3000. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c +0 -112
  3001. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c +0 -154
  3002. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c +0 -270
  3003. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c +0 -122
  3004. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +0 -211
  3005. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c +0 -121
  3006. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +0 -344
  3007. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c +0 -555
  3008. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c +0 -81
  3009. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c +0 -142
  3010. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c +0 -150
  3011. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c +0 -224
  3012. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c +0 -624
  3013. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c +0 -170
  3014. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +0 -1390
  3015. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -89
  3016. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -227
  3017. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +0 -280
  3018. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +0 -108
  3019. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +0 -86
  3020. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +0 -181
  3021. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -599
  3022. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +0 -206
  3023. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +0 -299
  3024. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +0 -240
  3025. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +0 -160
  3026. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +0 -189
  3027. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +0 -291
  3028. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +0 -1638
  3029. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +0 -440
  3030. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +0 -277
  3031. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +0 -407
  3032. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +0 -109
  3033. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +0 -133
  3034. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +0 -149
  3035. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -356
  3036. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +0 -97
  3037. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +0 -384
  3038. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +0 -78
  3039. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +0 -527
  3040. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -210
  3041. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +0 -116
  3042. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +0 -93
  3043. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +0 -79
  3044. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +0 -70
  3045. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +0 -544
  3046. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +0 -209
  3047. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.c +0 -1514
  3048. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +0 -129
  3049. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h +0 -90
  3050. data/third_party/upb/upb/message/internal/compare_unknown.c +0 -289
  3051. data/third_party/upb/upb/message/internal/compare_unknown.h +0 -49
@@ -24,6 +24,7 @@
24
24
  #include <algorithm>
25
25
  #include <functional>
26
26
  #include <memory>
27
+ #include <optional>
27
28
  #include <string>
28
29
  #include <type_traits>
29
30
  #include <vector>
@@ -37,16 +38,19 @@
37
38
  #include "absl/strings/str_split.h"
38
39
  #include "absl/strings/string_view.h"
39
40
  #include "absl/strings/strip.h"
40
- #include "absl/types/optional.h"
41
41
  #include "envoy/config/core/v3/base.upb.h"
42
- #include "envoy/service/status/v3/csds.upb.h"
42
+ #include "envoy/service/discovery/v3/discovery.upb.h"
43
+ #include "envoy/service/discovery/v3/discovery.upbdefs.h"
43
44
  #include "google/protobuf/any.upb.h"
44
45
  #include "google/protobuf/timestamp.upb.h"
46
+ #include "google/rpc/status.upb.h"
45
47
  #include "src/core/lib/iomgr/exec_ctx.h"
46
48
  #include "src/core/util/backoff.h"
47
49
  #include "src/core/util/debug_location.h"
50
+ #include "src/core/util/env.h"
48
51
  #include "src/core/util/orphanable.h"
49
52
  #include "src/core/util/ref_counted_ptr.h"
53
+ #include "src/core/util/string.h"
50
54
  #include "src/core/util/sync.h"
51
55
  #include "src/core/util/upb_utils.h"
52
56
  #include "src/core/util/uri.h"
@@ -55,6 +59,8 @@
55
59
  #include "src/core/xds/xds_client/xds_locality.h"
56
60
  #include "upb/base/string_view.h"
57
61
  #include "upb/mem/arena.h"
62
+ #include "upb/reflection/def.h"
63
+ #include "upb/text/encode.h"
58
64
 
59
65
  #define GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS 1
60
66
  #define GRPC_XDS_RECONNECT_BACKOFF_MULTIPLIER 1.6
@@ -64,6 +70,18 @@
64
70
 
65
71
  namespace grpc_core {
66
72
 
73
+ namespace {
74
+
75
+ bool XdsEndpointFallbackEnabled() {
76
+ auto value = GetEnv("GRPC_EXPERIMENTAL_XDS_ENDPOINT_FALLBACK");
77
+ if (!value.has_value()) return false;
78
+ bool parsed_value;
79
+ bool parse_succeeded = gpr_parse_bool_value(value->c_str(), &parsed_value);
80
+ return parse_succeeded && parsed_value;
81
+ }
82
+
83
+ } // namespace
84
+
67
85
  using ::grpc_event_engine::experimental::EventEngine;
68
86
 
69
87
  //
@@ -107,7 +125,7 @@ class XdsClient::XdsChannel::RetryableCall final
107
125
 
108
126
  // Retry state.
109
127
  BackOff backoff_;
110
- absl::optional<EventEngine::TaskHandle> timer_handle_
128
+ std::optional<EventEngine::TaskHandle> timer_handle_
111
129
  ABSL_GUARDED_BY(&XdsClient::mu_);
112
130
 
113
131
  bool shutting_down_ = false;
@@ -120,7 +138,10 @@ class XdsClient::XdsChannel::AdsCall final
120
138
  // The ctor and dtor should not be used directly.
121
139
  explicit AdsCall(RefCountedPtr<RetryableCall<AdsCall>> retryable_call);
122
140
 
123
- void Orphan() override;
141
+ // Disable thread-safety analysis because this method is called via
142
+ // OrphanablePtr<>, but there's no way to pass the lock annotation
143
+ // through there.
144
+ void Orphan() override ABSL_NO_THREAD_SAFETY_ANALYSIS;
124
145
 
125
146
  RetryableCall<AdsCall>* retryable_call() const {
126
147
  return retryable_call_.get();
@@ -141,44 +162,6 @@ class XdsClient::XdsChannel::AdsCall final
141
162
  private:
142
163
  class AdsReadDelayHandle;
143
164
 
144
- class AdsResponseParser final : public XdsApi::AdsResponseParserInterface {
145
- public:
146
- struct Result {
147
- const XdsResourceType* type;
148
- std::string type_url;
149
- std::string version;
150
- std::string nonce;
151
- std::vector<std::string> errors;
152
- std::map<std::string /*authority*/, std::set<XdsResourceKey>>
153
- resources_seen;
154
- uint64_t num_valid_resources = 0;
155
- uint64_t num_invalid_resources = 0;
156
- RefCountedPtr<ReadDelayHandle> read_delay_handle;
157
- };
158
-
159
- explicit AdsResponseParser(AdsCall* ads_call) : ads_call_(ads_call) {}
160
-
161
- absl::Status ProcessAdsResponseFields(AdsResponseFields fields) override
162
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
163
-
164
- void ParseResource(upb_Arena* arena, size_t idx, absl::string_view type_url,
165
- absl::string_view resource_name,
166
- absl::string_view serialized_resource) override
167
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
168
-
169
- void ResourceWrapperParsingFailed(size_t idx,
170
- absl::string_view message) override;
171
-
172
- Result TakeResult() { return std::move(result_); }
173
-
174
- private:
175
- XdsClient* xds_client() const { return ads_call_->xds_client(); }
176
-
177
- AdsCall* ads_call_;
178
- const Timestamp update_time_ = Timestamp::Now();
179
- Result result_;
180
- };
181
-
182
165
  class ResourceTimer final : public InternallyRefCounted<ResourceTimer> {
183
166
  public:
184
167
  ResourceTimer(const XdsResourceType* type, const XdsResourceName& name)
@@ -238,14 +221,20 @@ class XdsClient::XdsChannel::AdsCall final
238
221
  // optimize by not resending the resource that we already have.
239
222
  auto& authority_state =
240
223
  ads_call->xds_client()->authority_state_map_[name_.authority];
241
- ResourceState& state = authority_state.resource_map[type_][name_.key];
242
- if (state.resource != nullptr) return;
224
+ ResourceState& state = authority_state.type_map[type_][name_.key];
225
+ if (state.HasResource()) return;
243
226
  // Start timer.
244
227
  ads_call_ = std::move(ads_call);
228
+ Duration timeout = ads_call_->xds_client()->request_timeout_;
229
+ if (timeout == Duration::Zero()) {
230
+ timeout = XdsDataErrorHandlingEnabled() &&
231
+ ads_call_->xds_channel()
232
+ ->server_.ResourceTimerIsTransientFailure()
233
+ ? Duration::Seconds(30)
234
+ : Duration::Seconds(15);
235
+ }
245
236
  timer_handle_ = ads_call_->xds_client()->engine()->RunAfter(
246
- ads_call_->xds_client()->request_timeout_,
247
- [self = Ref(DEBUG_LOCATION, "timer")]() {
248
- ApplicationCallbackExecCtx callback_exec_ctx;
237
+ timeout, [self = Ref(DEBUG_LOCATION, "timer")]() {
249
238
  ExecCtx exec_ctx;
250
239
  self->OnTimer();
251
240
  });
@@ -257,25 +246,33 @@ class XdsClient::XdsChannel::AdsCall final
257
246
  timer_handle_.reset();
258
247
  auto& authority_state =
259
248
  ads_call_->xds_client()->authority_state_map_[name_.authority];
260
- ResourceState& state = authority_state.resource_map[type_][name_.key];
249
+ ResourceState& state = authority_state.type_map[type_][name_.key];
261
250
  // We might have received the resource after the timer fired but before
262
251
  // the callback ran.
263
- if (state.resource == nullptr) {
252
+ if (!state.HasResource()) {
264
253
  GRPC_TRACE_LOG(xds_client, INFO)
265
254
  << "[xds_client " << ads_call_->xds_client() << "] xds server "
266
- << ads_call_->xds_channel()->server_.server_uri()
255
+ << ads_call_->xds_channel()->server_uri()
267
256
  << ": timeout obtaining resource {type=" << type_->type_url()
268
257
  << " name="
269
258
  << XdsClient::ConstructFullXdsResourceName(
270
259
  name_.authority, type_->type_url(), name_.key)
271
260
  << "} from xds server";
272
261
  resource_seen_ = true;
273
- state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
274
- ads_call_->xds_client()->NotifyWatchersOnResourceDoesNotExist(
275
- state.watchers, ReadDelayHandle::NoWait());
262
+ if (XdsDataErrorHandlingEnabled() &&
263
+ ads_call_->xds_channel()
264
+ ->server_.ResourceTimerIsTransientFailure()) {
265
+ state.SetTimeout(
266
+ absl::StrCat("timeout obtaining resource from xDS server ",
267
+ ads_call_->xds_channel()->server_uri()));
268
+ } else {
269
+ state.SetDoesNotExistOnTimeout();
270
+ }
271
+ ads_call_->xds_client()->NotifyWatchersOnResourceChanged(
272
+ state.failed_status(), state.watchers(),
273
+ ReadDelayHandle::NoWait());
276
274
  }
277
275
  }
278
- ads_call_->xds_client()->work_serializer_.DrainQueue();
279
276
  ads_call_.reset();
280
277
  }
281
278
 
@@ -290,7 +287,7 @@ class XdsClient::XdsChannel::AdsCall final
290
287
  // stream or (b) declared the resource to not exist due to the timer
291
288
  // firing.
292
289
  bool resource_seen_ ABSL_GUARDED_BY(&XdsClient::mu_) = false;
293
- absl::optional<EventEngine::TaskHandle> timer_handle_
290
+ std::optional<EventEngine::TaskHandle> timer_handle_
294
291
  ABSL_GUARDED_BY(&XdsClient::mu_);
295
292
  };
296
293
 
@@ -323,9 +320,44 @@ class XdsClient::XdsChannel::AdsCall final
323
320
  subscribed_resources;
324
321
  };
325
322
 
323
+ std::string CreateAdsRequest(absl::string_view type_url,
324
+ absl::string_view version,
325
+ absl::string_view nonce,
326
+ const std::vector<std::string>& resource_names,
327
+ absl::Status status) const
328
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
329
+
326
330
  void SendMessageLocked(const XdsResourceType* type)
327
331
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
328
332
 
333
+ struct DecodeContext {
334
+ upb::Arena arena;
335
+ const XdsResourceType* type;
336
+ std::string type_url;
337
+ std::string version;
338
+ std::string nonce;
339
+ std::vector<std::string> errors;
340
+ std::map<std::string /*authority*/, std::set<XdsResourceKey>>
341
+ resources_seen;
342
+ uint64_t num_valid_resources = 0;
343
+ uint64_t num_invalid_resources = 0;
344
+ Timestamp update_time = Timestamp::Now();
345
+ RefCountedPtr<ReadDelayHandle> read_delay_handle;
346
+ };
347
+ void ParseResource(size_t idx, absl::string_view type_url,
348
+ absl::string_view resource_name,
349
+ absl::string_view serialized_resource,
350
+ DecodeContext* context)
351
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
352
+ void HandleServerReportedResourceError(size_t idx,
353
+ absl::string_view resource_name,
354
+ absl::Status status,
355
+ DecodeContext* context)
356
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
357
+ absl::Status DecodeAdsResponse(absl::string_view encoded_response,
358
+ DecodeContext* context)
359
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
360
+
329
361
  void OnRequestSent(bool ok);
330
362
  void OnRecvMessage(absl::string_view payload);
331
363
  void OnStatusReceived(absl::Status status);
@@ -387,9 +419,10 @@ XdsClient::XdsChannel::XdsChannel(WeakRefCountedPtr<XdsClient> xds_client,
387
419
  server_(server) {
388
420
  GRPC_TRACE_LOG(xds_client, INFO)
389
421
  << "[xds_client " << xds_client_.get() << "] creating channel " << this
390
- << " for server " << server.server_uri();
422
+ << " for server " << server_uri();
391
423
  absl::Status status;
392
- transport_ = xds_client_->transport_factory_->GetTransport(server, &status);
424
+ transport_ =
425
+ xds_client_->transport_factory_->GetTransport(*server.target(), &status);
393
426
  CHECK(transport_ != nullptr);
394
427
  if (!status.ok()) {
395
428
  SetChannelStatusLocked(std::move(status));
@@ -403,7 +436,7 @@ XdsClient::XdsChannel::XdsChannel(WeakRefCountedPtr<XdsClient> xds_client,
403
436
  XdsClient::XdsChannel::~XdsChannel() {
404
437
  GRPC_TRACE_LOG(xds_client, INFO)
405
438
  << "[xds_client " << xds_client() << "] destroying xds channel " << this
406
- << " for server " << server_.server_uri();
439
+ << " for server " << server_uri();
407
440
  xds_client_.reset(DEBUG_LOCATION, "XdsChannel");
408
441
  }
409
442
 
@@ -414,7 +447,7 @@ XdsClient::XdsChannel::~XdsChannel() {
414
447
  void XdsClient::XdsChannel::Orphaned() ABSL_NO_THREAD_SAFETY_ANALYSIS {
415
448
  GRPC_TRACE_LOG(xds_client, INFO)
416
449
  << "[xds_client " << xds_client() << "] orphaning xds channel " << this
417
- << " for server " << server_.server_uri();
450
+ << " for server " << server_uri();
418
451
  shutting_down_ = true;
419
452
  if (failure_watcher_ != nullptr) {
420
453
  transport_->StopConnectivityFailureWatch(failure_watcher_);
@@ -430,16 +463,12 @@ void XdsClient::XdsChannel::Orphaned() ABSL_NO_THREAD_SAFETY_ANALYSIS {
430
463
 
431
464
  void XdsClient::XdsChannel::ResetBackoff() { transport_->ResetBackoff(); }
432
465
 
433
- XdsClient::XdsChannel::AdsCall* XdsClient::XdsChannel::ads_call() const {
434
- return ads_call_->call();
435
- }
436
-
437
466
  void XdsClient::XdsChannel::SubscribeLocked(const XdsResourceType* type,
438
467
  const XdsResourceName& name) {
439
468
  if (ads_call_ == nullptr) {
440
469
  // Start the ADS call if this is the first request.
441
- ads_call_.reset(
442
- new RetryableCall<AdsCall>(WeakRef(DEBUG_LOCATION, "XdsChannel+ads")));
470
+ ads_call_ = MakeOrphanable<RetryableCall<AdsCall>>(
471
+ WeakRef(DEBUG_LOCATION, "XdsChannel+ads"));
443
472
  // Note: AdsCall's ctor will automatically subscribe to all
444
473
  // resources that the XdsClient already has watchers for, so we can
445
474
  // return here.
@@ -447,9 +476,9 @@ void XdsClient::XdsChannel::SubscribeLocked(const XdsResourceType* type,
447
476
  }
448
477
  // If the ADS call is in backoff state, we don't need to do anything now
449
478
  // because when the call is restarted it will resend all necessary requests.
450
- if (ads_call() == nullptr) return;
479
+ if (ads_call_->call() == nullptr) return;
451
480
  // Subscribe to this resource if the ADS call is active.
452
- ads_call()->SubscribeLocked(type, name, /*delay_send=*/false);
481
+ ads_call_->call()->SubscribeLocked(type, name, /*delay_send=*/false);
453
482
  }
454
483
 
455
484
  void XdsClient::XdsChannel::UnsubscribeLocked(const XdsResourceType* type,
@@ -462,35 +491,51 @@ void XdsClient::XdsChannel::UnsubscribeLocked(const XdsResourceType* type,
462
491
  if (!call->HasSubscribedResources()) {
463
492
  ads_call_.reset();
464
493
  }
494
+ } else {
495
+ // If there is currently no ADS call because we're in retry backoff,
496
+ // then we immediately trigger deletion of unsubscribed cache entries.
497
+ // This may orphan the XdsChannel, which would stop the retry
498
+ // timer, since we would no longer need to restart the ADS call.
499
+ xds_client_->MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(this, type);
465
500
  }
466
501
  }
467
502
  }
468
503
 
469
504
  bool XdsClient::XdsChannel::MaybeFallbackLocked(
470
505
  const std::string& authority, AuthorityState& authority_state) {
471
- if (!xds_client_->HasUncachedResources(authority_state)) {
472
- return false;
473
- }
474
506
  std::vector<const XdsBootstrap::XdsServer*> xds_servers;
507
+ bool fallback_on_reachability_only = false;
475
508
  if (authority != kOldStyleAuthority) {
476
- xds_servers =
477
- xds_client_->bootstrap().LookupAuthority(authority)->servers();
509
+ auto* bootstrap_authority =
510
+ xds_client_->bootstrap().LookupAuthority(authority);
511
+ xds_servers = bootstrap_authority->servers();
512
+ if (XdsEndpointFallbackEnabled()) {
513
+ fallback_on_reachability_only =
514
+ bootstrap_authority->FallbackOnReachabilityOnly();
515
+ }
516
+ }
517
+ if (!fallback_on_reachability_only &&
518
+ !xds_client_->HasUncachedResources(authority_state)) {
519
+ return false;
478
520
  }
479
521
  if (xds_servers.empty()) xds_servers = xds_client_->bootstrap().servers();
480
522
  for (size_t i = authority_state.xds_channels.size(); i < xds_servers.size();
481
523
  ++i) {
482
524
  authority_state.xds_channels.emplace_back(
483
525
  xds_client_->GetOrCreateXdsChannelLocked(*xds_servers[i], "fallback"));
484
- for (const auto& type_resource : authority_state.resource_map) {
485
- for (const auto& key_state : type_resource.second) {
486
- authority_state.xds_channels.back()->SubscribeLocked(
487
- type_resource.first, {authority, key_state.first});
526
+ for (const auto& [type, resource_map] : authority_state.type_map) {
527
+ for (const auto& [key, resource_state] : resource_map) {
528
+ if (resource_state.HasWatchers()) {
529
+ authority_state.xds_channels.back()->SubscribeLocked(
530
+ type, {authority, key});
531
+ }
488
532
  }
489
533
  }
490
534
  GRPC_TRACE_LOG(xds_client, INFO)
491
535
  << "[xds_client " << xds_client_.get() << "] authority " << authority
492
- << ": added fallback server " << xds_servers[i]->server_uri() << " ("
493
- << authority_state.xds_channels.back()->status().ToString() << ")";
536
+ << ": added fallback server " << xds_servers[i]->target()->server_uri()
537
+ << " (" << authority_state.xds_channels.back()->status().ToString()
538
+ << ")";
494
539
  if (authority_state.xds_channels.back()->status().ok()) return true;
495
540
  }
496
541
  GRPC_TRACE_LOG(xds_client, INFO)
@@ -505,77 +550,74 @@ void XdsClient::XdsChannel::SetHealthyLocked() {
505
550
  // 1. Channel is on the list of authority channels
506
551
  // 2. Channel is not the last channel on the list (i.e. not the active
507
552
  // channel)
508
- for (auto& authority : xds_client_->authority_state_map_) {
509
- auto& channels = authority.second.xds_channels;
553
+ for (auto& [authority, authority_state] : xds_client_->authority_state_map_) {
554
+ auto& channels = authority_state.xds_channels;
510
555
  // Skip if channel is active.
511
556
  if (channels.back() == this) continue;
512
557
  auto channel_it = std::find(channels.begin(), channels.end(), this);
513
558
  // Skip if this is not on the list
514
559
  if (channel_it != channels.end()) {
515
560
  GRPC_TRACE_LOG(xds_client, INFO)
516
- << "[xds_client " << xds_client_.get() << "] authority "
517
- << authority.first << ": Falling forward to " << server_.server_uri();
561
+ << "[xds_client " << xds_client_.get() << "] authority " << authority
562
+ << ": Falling forward to " << server_uri();
518
563
  // Lower priority channels are no longer needed, connection is back!
564
+ // Note that we move the lower priority channels out of the vector
565
+ // before we unref them, or else
566
+ // MaybeRemoveUnsubscribedCacheEntriesForTypeLocked() will try to
567
+ // access the vector while we are modifying it.
568
+ std::vector<RefCountedPtr<XdsChannel>> channels_to_unref(
569
+ std::make_move_iterator(channel_it + 1),
570
+ std::make_move_iterator(channels.end()));
519
571
  channels.erase(channel_it + 1, channels.end());
520
572
  }
521
573
  }
522
574
  }
523
575
 
524
576
  void XdsClient::XdsChannel::OnConnectivityFailure(absl::Status status) {
525
- {
526
- MutexLock lock(&xds_client_->mu_);
527
- SetChannelStatusLocked(std::move(status));
528
- }
529
- xds_client_->work_serializer_.DrainQueue();
577
+ MutexLock lock(&xds_client_->mu_);
578
+ SetChannelStatusLocked(std::move(status));
530
579
  }
531
580
 
532
581
  void XdsClient::XdsChannel::SetChannelStatusLocked(absl::Status status) {
533
582
  if (shutting_down_) return;
534
- status = absl::Status(status.code(), absl::StrCat("xDS channel for server ",
535
- server_.server_uri(), ": ",
536
- status.message()));
583
+ status = absl::Status(
584
+ status.code(), absl::StrCat("xDS channel for server ", server_uri(), ": ",
585
+ status.message()));
537
586
  LOG(INFO) << "[xds_client " << xds_client() << "] " << status;
538
- // If the node ID is set, append that to the status message that we send to
539
- // the watchers, so that it will appear in log messages visible to users.
540
- const auto* node = xds_client_->bootstrap_->node();
541
- if (node != nullptr) {
542
- status = absl::Status(
543
- status.code(),
544
- absl::StrCat(status.message(),
545
- " (node ID:", xds_client_->bootstrap_->node()->id(), ")"));
546
- }
547
587
  // If status was previously OK, report that the channel has gone unhealthy.
548
588
  if (status_.ok() && xds_client_->metrics_reporter_ != nullptr) {
549
- xds_client_->metrics_reporter_->ReportServerFailure(server_.server_uri());
589
+ xds_client_->metrics_reporter_->ReportServerFailure(server_uri());
550
590
  }
551
591
  // Save status in channel, so that we can immediately generate an
552
592
  // error for any new watchers that may be started.
553
593
  status_ = status;
554
594
  // Find all watchers for this channel.
555
- std::set<RefCountedPtr<ResourceWatcherInterface>> watchers;
556
- for (auto& a : xds_client_->authority_state_map_) { // authority
557
- if (a.second.xds_channels.empty() || a.second.xds_channels.back() != this ||
558
- MaybeFallbackLocked(a.first, a.second)) {
595
+ WatcherSet watchers_cached;
596
+ WatcherSet watchers_uncached;
597
+ for (auto& [authority, authority_state] : xds_client_->authority_state_map_) {
598
+ if (authority_state.xds_channels.empty() ||
599
+ authority_state.xds_channels.back() != this ||
600
+ MaybeFallbackLocked(authority, authority_state)) {
559
601
  continue;
560
602
  }
561
- for (const auto& t : a.second.resource_map) { // type
562
- for (const auto& r : t.second) { // resource id
563
- for (const auto& w : r.second.watchers) { // watchers
564
- watchers.insert(w.second);
603
+ for (const auto& [_, resource_map] : authority_state.type_map) {
604
+ for (const auto& [_, resource_state] : resource_map) {
605
+ auto& watchers =
606
+ resource_state.HasResource() ? watchers_cached : watchers_uncached;
607
+ for (const auto& watcher : resource_state.watchers()) {
608
+ watchers.insert(watcher);
565
609
  }
566
610
  }
567
611
  }
568
612
  }
569
- if (!watchers.empty()) {
570
- // Enqueue notification for the watchers.
571
- xds_client_->work_serializer_.Schedule(
572
- [watchers = std::move(watchers), status = std::move(status)]()
573
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(xds_client_->work_serializer_) {
574
- for (const auto& watcher : watchers) {
575
- watcher->OnError(status, ReadDelayHandle::NoWait());
576
- }
577
- },
578
- DEBUG_LOCATION);
613
+ // Enqueue notifications for the watchers.
614
+ if (!watchers_cached.empty()) {
615
+ xds_client_->NotifyWatchersOnAmbientError(
616
+ status, std::move(watchers_cached), ReadDelayHandle::NoWait());
617
+ }
618
+ if (!watchers_uncached.empty()) {
619
+ xds_client_->NotifyWatchersOnResourceChanged(
620
+ status, std::move(watchers_uncached), ReadDelayHandle::NoWait());
579
621
  }
580
622
  }
581
623
 
@@ -624,8 +666,8 @@ void XdsClient::XdsChannel::RetryableCall<T>::StartNewCallLocked() {
624
666
  CHECK(call_ == nullptr);
625
667
  GRPC_TRACE_LOG(xds_client, INFO)
626
668
  << "[xds_client " << xds_channel()->xds_client() << "] xds server "
627
- << xds_channel()->server_.server_uri()
628
- << ": start new call from retryable call " << this;
669
+ << xds_channel()->server_uri() << ": start new call from retryable call "
670
+ << this;
629
671
  call_ = MakeOrphanable<T>(
630
672
  this->Ref(DEBUG_LOCATION, "RetryableCall+start_new_call"));
631
673
  }
@@ -636,13 +678,12 @@ void XdsClient::XdsChannel::RetryableCall<T>::StartRetryTimerLocked() {
636
678
  const Duration delay = backoff_.NextAttemptDelay();
637
679
  GRPC_TRACE_LOG(xds_client, INFO)
638
680
  << "[xds_client " << xds_channel()->xds_client() << "] xds server "
639
- << xds_channel()->server_.server_uri()
681
+ << xds_channel()->server_uri()
640
682
  << ": call attempt failed; retry timer will fire in " << delay.millis()
641
683
  << "ms.";
642
684
  timer_handle_ = xds_channel()->xds_client()->engine()->RunAfter(
643
685
  delay,
644
686
  [self = this->Ref(DEBUG_LOCATION, "RetryableCall+retry_timer_start")]() {
645
- ApplicationCallbackExecCtx callback_exec_ctx;
646
687
  ExecCtx exec_ctx;
647
688
  self->OnRetryTimer();
648
689
  });
@@ -656,7 +697,7 @@ void XdsClient::XdsChannel::RetryableCall<T>::OnRetryTimer() {
656
697
  if (shutting_down_) return;
657
698
  GRPC_TRACE_LOG(xds_client, INFO)
658
699
  << "[xds_client " << xds_channel()->xds_client() << "] xds server "
659
- << xds_channel()->server_.server_uri()
700
+ << xds_channel()->server_uri()
660
701
  << ": retry timer fired (retryable call: " << this << ")";
661
702
  StartNewCallLocked();
662
703
  }
@@ -682,203 +723,6 @@ class XdsClient::XdsChannel::AdsCall::AdsReadDelayHandle final
682
723
  RefCountedPtr<AdsCall> ads_call_;
683
724
  };
684
725
 
685
- //
686
- // XdsClient::XdsChannel::AdsCall::AdsResponseParser
687
- //
688
-
689
- absl::Status
690
- XdsClient::XdsChannel::AdsCall::AdsResponseParser::ProcessAdsResponseFields(
691
- AdsResponseFields fields) {
692
- GRPC_TRACE_LOG(xds_client, INFO)
693
- << "[xds_client " << ads_call_->xds_client() << "] xds server "
694
- << ads_call_->xds_channel()->server_.server_uri()
695
- << ": received ADS response: type_url=" << fields.type_url
696
- << ", version=" << fields.version << ", nonce=" << fields.nonce
697
- << ", num_resources=" << fields.num_resources;
698
- result_.type =
699
- ads_call_->xds_client()->GetResourceTypeLocked(fields.type_url);
700
- if (result_.type == nullptr) {
701
- return absl::InvalidArgumentError(
702
- absl::StrCat("unknown resource type ", fields.type_url));
703
- }
704
- result_.type_url = std::move(fields.type_url);
705
- result_.version = std::move(fields.version);
706
- result_.nonce = std::move(fields.nonce);
707
- result_.read_delay_handle =
708
- MakeRefCounted<AdsReadDelayHandle>(ads_call_->Ref());
709
- return absl::OkStatus();
710
- }
711
-
712
- namespace {
713
-
714
- // Build a resource metadata struct for ADS result accepting methods and CSDS.
715
- XdsApi::ResourceMetadata CreateResourceMetadataAcked(
716
- std::string serialized_proto, std::string version, Timestamp update_time) {
717
- XdsApi::ResourceMetadata resource_metadata;
718
- resource_metadata.serialized_proto = std::move(serialized_proto);
719
- resource_metadata.update_time = update_time;
720
- resource_metadata.version = std::move(version);
721
- resource_metadata.client_status = XdsApi::ResourceMetadata::ACKED;
722
- return resource_metadata;
723
- }
724
-
725
- // Update resource_metadata for NACK.
726
- void UpdateResourceMetadataNacked(const std::string& version,
727
- const std::string& details,
728
- Timestamp update_time,
729
- XdsApi::ResourceMetadata* resource_metadata) {
730
- resource_metadata->client_status = XdsApi::ResourceMetadata::NACKED;
731
- resource_metadata->failed_version = version;
732
- resource_metadata->failed_details = details;
733
- resource_metadata->failed_update_time = update_time;
734
- }
735
-
736
- } // namespace
737
-
738
- void XdsClient::XdsChannel::AdsCall::AdsResponseParser::ParseResource(
739
- upb_Arena* arena, size_t idx, absl::string_view type_url,
740
- absl::string_view resource_name, absl::string_view serialized_resource) {
741
- std::string error_prefix = absl::StrCat(
742
- "resource index ", idx, ": ",
743
- resource_name.empty() ? "" : absl::StrCat(resource_name, ": "));
744
- // Check the type_url of the resource.
745
- if (result_.type_url != type_url) {
746
- result_.errors.emplace_back(
747
- absl::StrCat(error_prefix, "incorrect resource type \"", type_url,
748
- "\" (should be \"", result_.type_url, "\")"));
749
- ++result_.num_invalid_resources;
750
- return;
751
- }
752
- // Parse the resource.
753
- XdsResourceType::DecodeContext context = {
754
- xds_client(), ads_call_->xds_channel()->server_, &xds_client_trace,
755
- xds_client()->def_pool_.ptr(), arena};
756
- XdsResourceType::DecodeResult decode_result =
757
- result_.type->Decode(context, serialized_resource);
758
- // If we didn't already have the resource name from the Resource
759
- // wrapper, try to get it from the decoding result.
760
- if (resource_name.empty()) {
761
- if (decode_result.name.has_value()) {
762
- resource_name = *decode_result.name;
763
- error_prefix =
764
- absl::StrCat("resource index ", idx, ": ", resource_name, ": ");
765
- } else {
766
- // We don't have any way of determining the resource name, so
767
- // there's nothing more we can do here.
768
- result_.errors.emplace_back(absl::StrCat(
769
- error_prefix, decode_result.resource.status().ToString()));
770
- ++result_.num_invalid_resources;
771
- return;
772
- }
773
- }
774
- // If decoding failed, make sure we include the error in the NACK.
775
- const absl::Status& decode_status = decode_result.resource.status();
776
- if (!decode_status.ok()) {
777
- result_.errors.emplace_back(
778
- absl::StrCat(error_prefix, decode_status.ToString()));
779
- }
780
- // Check the resource name.
781
- auto parsed_resource_name =
782
- xds_client()->ParseXdsResourceName(resource_name, result_.type);
783
- if (!parsed_resource_name.ok()) {
784
- result_.errors.emplace_back(
785
- absl::StrCat(error_prefix, "Cannot parse xDS resource name"));
786
- ++result_.num_invalid_resources;
787
- return;
788
- }
789
- // Cancel resource-does-not-exist timer, if needed.
790
- auto timer_it = ads_call_->state_map_.find(result_.type);
791
- if (timer_it != ads_call_->state_map_.end()) {
792
- auto it = timer_it->second.subscribed_resources.find(
793
- parsed_resource_name->authority);
794
- if (it != timer_it->second.subscribed_resources.end()) {
795
- auto res_it = it->second.find(parsed_resource_name->key);
796
- if (res_it != it->second.end()) {
797
- res_it->second->MarkSeen();
798
- }
799
- }
800
- }
801
- // Lookup the authority in the cache.
802
- auto authority_it =
803
- xds_client()->authority_state_map_.find(parsed_resource_name->authority);
804
- if (authority_it == xds_client()->authority_state_map_.end()) {
805
- return; // Skip resource -- we don't have a subscription for it.
806
- }
807
- // Found authority, so look up type.
808
- AuthorityState& authority_state = authority_it->second;
809
- auto type_it = authority_state.resource_map.find(result_.type);
810
- if (type_it == authority_state.resource_map.end()) {
811
- return; // Skip resource -- we don't have a subscription for it.
812
- }
813
- auto& type_map = type_it->second;
814
- // Found type, so look up resource key.
815
- auto it = type_map.find(parsed_resource_name->key);
816
- if (it == type_map.end()) {
817
- return; // Skip resource -- we don't have a subscription for it.
818
- }
819
- ResourceState& resource_state = it->second;
820
- // If needed, record that we've seen this resource.
821
- if (result_.type->AllResourcesRequiredInSotW()) {
822
- result_.resources_seen[parsed_resource_name->authority].insert(
823
- parsed_resource_name->key);
824
- }
825
- // If we previously ignored the resource's deletion, log that we're
826
- // now re-adding it.
827
- if (resource_state.ignored_deletion) {
828
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
829
- << ads_call_->xds_channel()->server_.server_uri()
830
- << ": server returned new version of resource for which we "
831
- "previously ignored a deletion: type "
832
- << type_url << " name " << resource_name;
833
- resource_state.ignored_deletion = false;
834
- }
835
- // Update resource state based on whether the resource is valid.
836
- if (!decode_status.ok()) {
837
- xds_client()->NotifyWatchersOnErrorLocked(
838
- resource_state.watchers,
839
- absl::UnavailableError(
840
- absl::StrCat("invalid resource: ", decode_status.ToString())),
841
- result_.read_delay_handle);
842
- UpdateResourceMetadataNacked(result_.version, decode_status.ToString(),
843
- update_time_, &resource_state.meta);
844
- ++result_.num_invalid_resources;
845
- return;
846
- }
847
- // Resource is valid.
848
- ++result_.num_valid_resources;
849
- // If it didn't change, ignore it.
850
- if (resource_state.resource != nullptr &&
851
- result_.type->ResourcesEqual(resource_state.resource.get(),
852
- decode_result.resource->get())) {
853
- GRPC_TRACE_LOG(xds_client, INFO)
854
- << "[xds_client " << xds_client() << "] " << result_.type_url
855
- << " resource " << resource_name << " identical to current, ignoring.";
856
- return;
857
- }
858
- // Update the resource state.
859
- resource_state.resource = std::move(*decode_result.resource);
860
- resource_state.meta = CreateResourceMetadataAcked(
861
- std::string(serialized_resource), result_.version, update_time_);
862
- // Notify watchers.
863
- auto& watchers_list = resource_state.watchers;
864
- xds_client()->work_serializer_.Schedule(
865
- [watchers_list, value = resource_state.resource,
866
- read_delay_handle = result_.read_delay_handle]()
867
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client()->work_serializer_) {
868
- for (const auto& p : watchers_list) {
869
- p.first->OnGenericResourceChanged(value, read_delay_handle);
870
- }
871
- },
872
- DEBUG_LOCATION);
873
- }
874
-
875
- void XdsClient::XdsChannel::AdsCall::AdsResponseParser::
876
- ResourceWrapperParsingFailed(size_t idx, absl::string_view message) {
877
- result_.errors.emplace_back(
878
- absl::StrCat("resource index ", idx, ": ", message));
879
- ++result_.num_invalid_resources;
880
- }
881
-
882
726
  //
883
727
  // XdsClient::XdsChannel::AdsCall
884
728
  //
@@ -902,35 +746,42 @@ XdsClient::XdsChannel::AdsCall::AdsCall(
902
746
  // Start the call.
903
747
  GRPC_TRACE_LOG(xds_client, INFO)
904
748
  << "[xds_client " << xds_client() << "] xds server "
905
- << xds_channel()->server_.server_uri()
749
+ << xds_channel()->server_uri()
906
750
  << ": starting ADS call (ads_call: " << this
907
751
  << ", streaming_call: " << streaming_call_.get() << ")";
908
752
  // If this is a reconnect, add any necessary subscriptions from what's
909
753
  // already in the cache.
910
- for (auto& a : xds_client()->authority_state_map_) {
911
- const std::string& authority = a.first;
912
- auto it = std::find(a.second.xds_channels.begin(),
913
- a.second.xds_channels.end(), xds_channel());
754
+ for (auto& [authority, authority_state] :
755
+ xds_client()->authority_state_map_) {
756
+ auto it = std::find(authority_state.xds_channels.begin(),
757
+ authority_state.xds_channels.end(), xds_channel());
914
758
  // Skip authorities that are not using this xDS channel. The channel can be
915
759
  // anywhere in the list.
916
- if (it == a.second.xds_channels.end()) continue;
917
- for (const auto& t : a.second.resource_map) {
918
- const XdsResourceType* type = t.first;
919
- for (const auto& r : t.second) {
920
- const XdsResourceKey& resource_key = r.first;
921
- SubscribeLocked(type, {authority, resource_key}, /*delay_send=*/true);
760
+ if (it == authority_state.xds_channels.end()) continue;
761
+ for (const auto& [type, resource_map] : authority_state.type_map) {
762
+ for (const auto& [resource_key, resource_state] : resource_map) {
763
+ if (resource_state.HasWatchers()) {
764
+ SubscribeLocked(type, {authority, resource_key}, /*delay_send=*/true);
765
+ }
922
766
  }
923
767
  }
924
768
  }
925
769
  // Send initial message if we added any subscriptions above.
926
- for (const auto& p : state_map_) {
927
- SendMessageLocked(p.first);
770
+ for (const auto& [type, _] : state_map_) {
771
+ SendMessageLocked(type);
928
772
  }
929
773
  streaming_call_->StartRecvMessage();
930
774
  }
931
775
 
932
776
  void XdsClient::XdsChannel::AdsCall::Orphan() {
933
777
  state_map_.clear();
778
+ // We may have unsubscriptions for which we have not yet actually sent
779
+ // unsubscribe messages, and now we never will, so do a pass to delete
780
+ // any cache entries for which we've unsubscribed.
781
+ for (const auto& [_, type] : xds_client()->resource_types_) {
782
+ xds_client()->MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(
783
+ xds_channel(), type);
784
+ }
934
785
  // Note that the initial ref is held by the StreamEventHandler, which
935
786
  // will be destroyed when streaming_call_ is destroyed, which may not happen
936
787
  // here, since there may be other refs held to streaming_call_ by internal
@@ -938,31 +789,6 @@ void XdsClient::XdsChannel::AdsCall::Orphan() {
938
789
  streaming_call_.reset();
939
790
  }
940
791
 
941
- void XdsClient::XdsChannel::AdsCall::SendMessageLocked(
942
- const XdsResourceType* type)
943
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
944
- // Buffer message sending if an existing message is in flight.
945
- if (send_message_pending_ != nullptr) {
946
- buffered_requests_.insert(type);
947
- return;
948
- }
949
- auto& state = state_map_[type];
950
- std::string serialized_message = xds_client()->api_.CreateAdsRequest(
951
- type->type_url(), xds_channel()->resource_type_version_map_[type],
952
- state.nonce, ResourceNamesForRequest(type), state.status,
953
- !sent_initial_message_);
954
- sent_initial_message_ = true;
955
- GRPC_TRACE_LOG(xds_client, INFO)
956
- << "[xds_client " << xds_client() << "] xds server "
957
- << xds_channel()->server_.server_uri()
958
- << ": sending ADS request: type=" << type->type_url()
959
- << " version=" << xds_channel()->resource_type_version_map_[type]
960
- << " nonce=" << state.nonce << " error=" << state.status;
961
- state.status = absl::OkStatus();
962
- streaming_call_->SendMessage(std::move(serialized_message));
963
- send_message_pending_ = type;
964
- }
965
-
966
792
  void XdsClient::XdsChannel::AdsCall::SubscribeLocked(
967
793
  const XdsResourceType* type, const XdsResourceName& name, bool delay_send) {
968
794
  auto& state = state_map_[type].subscribed_resources[name.authority][name.key];
@@ -980,6 +806,10 @@ void XdsClient::XdsChannel::AdsCall::UnsubscribeLocked(
980
806
  authority_map.erase(name.key);
981
807
  if (authority_map.empty()) {
982
808
  type_state_map.subscribed_resources.erase(name.authority);
809
+ // Note: We intentionally do not remove the top-level map entry for
810
+ // the resource type even if the authority map for the type is empty,
811
+ // because we need to retain the nonce in case a new watch is
812
+ // started for a resource of this type while this stream is still open.
983
813
  }
984
814
  // Don't need to send unsubscription message if this was the last
985
815
  // resource we were subscribed to, since we'll be closing the stream
@@ -990,21 +820,134 @@ void XdsClient::XdsChannel::AdsCall::UnsubscribeLocked(
990
820
  }
991
821
 
992
822
  bool XdsClient::XdsChannel::AdsCall::HasSubscribedResources() const {
993
- for (const auto& p : state_map_) {
994
- if (!p.second.subscribed_resources.empty()) return true;
823
+ for (const auto& [_, resource_type_state] : state_map_) {
824
+ if (!resource_type_state.subscribed_resources.empty()) return true;
995
825
  }
996
826
  return false;
997
827
  }
998
828
 
829
+ namespace {
830
+
831
+ void MaybeLogDiscoveryRequest(
832
+ const XdsClient* client, upb_DefPool* def_pool,
833
+ const envoy_service_discovery_v3_DiscoveryRequest* request) {
834
+ if (GRPC_TRACE_FLAG_ENABLED(xds_client) && ABSL_VLOG_IS_ON(2)) {
835
+ const upb_MessageDef* msg_type =
836
+ envoy_service_discovery_v3_DiscoveryRequest_getmsgdef(def_pool);
837
+ char buf[10240];
838
+ upb_TextEncode(reinterpret_cast<const upb_Message*>(request), msg_type,
839
+ nullptr, 0, buf, sizeof(buf));
840
+ VLOG(2) << "[xds_client " << client << "] constructed ADS request: " << buf;
841
+ }
842
+ }
843
+
844
+ std::string SerializeDiscoveryRequest(
845
+ upb_Arena* arena, envoy_service_discovery_v3_DiscoveryRequest* request) {
846
+ size_t output_length;
847
+ char* output = envoy_service_discovery_v3_DiscoveryRequest_serialize(
848
+ request, arena, &output_length);
849
+ return std::string(output, output_length);
850
+ }
851
+
852
+ } // namespace
853
+
854
+ std::string XdsClient::XdsChannel::AdsCall::CreateAdsRequest(
855
+ absl::string_view type_url, absl::string_view version,
856
+ absl::string_view nonce, const std::vector<std::string>& resource_names,
857
+ absl::Status status) const {
858
+ upb::Arena arena;
859
+ // Create a request.
860
+ envoy_service_discovery_v3_DiscoveryRequest* request =
861
+ envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr());
862
+ // Set type_url.
863
+ std::string type_url_str = absl::StrCat("type.googleapis.com/", type_url);
864
+ envoy_service_discovery_v3_DiscoveryRequest_set_type_url(
865
+ request, StdStringToUpbString(type_url_str));
866
+ // Set version_info.
867
+ if (!version.empty()) {
868
+ envoy_service_discovery_v3_DiscoveryRequest_set_version_info(
869
+ request, StdStringToUpbString(version));
870
+ }
871
+ // Set nonce.
872
+ if (!nonce.empty()) {
873
+ envoy_service_discovery_v3_DiscoveryRequest_set_response_nonce(
874
+ request, StdStringToUpbString(nonce));
875
+ }
876
+ // Set error_detail if it's a NACK.
877
+ std::string error_string_storage;
878
+ if (!status.ok()) {
879
+ google_rpc_Status* error_detail =
880
+ envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(
881
+ request, arena.ptr());
882
+ // Hard-code INVALID_ARGUMENT as the status code.
883
+ // TODO(roth): If at some point we decide we care about this value,
884
+ // we could attach a status code to the individual errors where we
885
+ // generate them in the parsing code, and then use that here.
886
+ google_rpc_Status_set_code(error_detail, GRPC_STATUS_INVALID_ARGUMENT);
887
+ // Error description comes from the status that was passed in.
888
+ error_string_storage = std::string(status.message());
889
+ upb_StringView error_description =
890
+ StdStringToUpbString(error_string_storage);
891
+ google_rpc_Status_set_message(error_detail, error_description);
892
+ }
893
+ // Populate node.
894
+ if (!sent_initial_message_) {
895
+ envoy_config_core_v3_Node* node_msg =
896
+ envoy_service_discovery_v3_DiscoveryRequest_mutable_node(request,
897
+ arena.ptr());
898
+ PopulateXdsNode(xds_client()->bootstrap_->node(),
899
+ xds_client()->user_agent_name_,
900
+ xds_client()->user_agent_version_, node_msg, arena.ptr());
901
+ envoy_config_core_v3_Node_add_client_features(
902
+ node_msg, upb_StringView_FromString("xds.config.resource-in-sotw"),
903
+ arena.ptr());
904
+ }
905
+ // Add resource_names.
906
+ for (const std::string& resource_name : resource_names) {
907
+ envoy_service_discovery_v3_DiscoveryRequest_add_resource_names(
908
+ request, StdStringToUpbString(resource_name), arena.ptr());
909
+ }
910
+ MaybeLogDiscoveryRequest(xds_client(), xds_client()->def_pool_.ptr(),
911
+ request);
912
+ return SerializeDiscoveryRequest(arena.ptr(), request);
913
+ }
914
+
915
+ void XdsClient::XdsChannel::AdsCall::SendMessageLocked(
916
+ const XdsResourceType* type)
917
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
918
+ // Buffer message sending if an existing message is in flight.
919
+ if (send_message_pending_ != nullptr) {
920
+ buffered_requests_.insert(type);
921
+ return;
922
+ }
923
+ xds_client()->MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(xds_channel(),
924
+ type);
925
+ auto& state = state_map_[type];
926
+ std::string serialized_message = CreateAdsRequest(
927
+ type->type_url(), xds_channel()->resource_type_version_map_[type],
928
+ state.nonce, ResourceNamesForRequest(type), state.status);
929
+ sent_initial_message_ = true;
930
+ GRPC_TRACE_LOG(xds_client, INFO)
931
+ << "[xds_client " << xds_client() << "] xds server "
932
+ << xds_channel()->server_uri()
933
+ << ": sending ADS request: type=" << type->type_url()
934
+ << " version=" << xds_channel()->resource_type_version_map_[type]
935
+ << " nonce=" << state.nonce << " error=" << state.status;
936
+ state.status = absl::OkStatus();
937
+ streaming_call_->SendMessage(std::move(serialized_message));
938
+ send_message_pending_ = type;
939
+ }
940
+
999
941
  void XdsClient::XdsChannel::AdsCall::OnRequestSent(bool ok) {
1000
942
  MutexLock lock(&xds_client()->mu_);
1001
943
  // For each resource that was in the message we just sent, start the
1002
944
  // resource timer if needed.
1003
945
  if (ok) {
1004
946
  auto& resource_type_state = state_map_[send_message_pending_];
1005
- for (const auto& p : resource_type_state.subscribed_resources) {
1006
- for (auto& q : p.second) {
1007
- q.second->MaybeMarkSubscriptionSendComplete(
947
+ for (const auto& [_, resource_map] :
948
+ resource_type_state.subscribed_resources) {
949
+ for (auto& [_, resource_timer] : resource_map) {
950
+ resource_timer->MaybeMarkSubscriptionSendComplete(
1008
951
  Ref(DEBUG_LOCATION, "ResourceTimer"));
1009
952
  }
1010
953
  }
@@ -1028,142 +971,467 @@ void XdsClient::XdsChannel::AdsCall::OnRequestSent(bool ok) {
1028
971
  }
1029
972
  }
1030
973
 
1031
- void XdsClient::XdsChannel::AdsCall::OnRecvMessage(absl::string_view payload) {
1032
- // Needs to be destroyed after the mutex is released.
1033
- RefCountedPtr<ReadDelayHandle> read_delay_handle;
1034
- {
1035
- MutexLock lock(&xds_client()->mu_);
1036
- if (!IsCurrentCallOnChannel()) return;
1037
- // Parse and validate the response.
1038
- AdsResponseParser parser(this);
1039
- absl::Status status = xds_client()->api_.ParseAdsResponse(payload, &parser);
1040
- // This includes a handle that will trigger an ADS read.
1041
- AdsResponseParser::Result result = parser.TakeResult();
1042
- read_delay_handle = std::move(result.read_delay_handle);
1043
- if (!status.ok()) {
1044
- // Ignore unparsable response.
1045
- LOG(ERROR) << "[xds_client " << xds_client() << "] xds server "
1046
- << xds_channel()->server_.server_uri()
1047
- << ": error parsing ADS response (" << status
1048
- << ") -- ignoring";
974
+ void XdsClient::XdsChannel::AdsCall::ParseResource(
975
+ size_t idx, absl::string_view type_url, absl::string_view resource_name,
976
+ absl::string_view serialized_resource, DecodeContext* context) {
977
+ std::string error_prefix = absl::StrCat(
978
+ "resource index ", idx, ": ",
979
+ resource_name.empty() ? "" : absl::StrCat(resource_name, ": "));
980
+ // Check the type_url of the resource.
981
+ if (context->type_url != type_url) {
982
+ context->errors.emplace_back(
983
+ absl::StrCat(error_prefix, "incorrect resource type \"", type_url,
984
+ "\" (should be \"", context->type_url, "\")"));
985
+ ++context->num_invalid_resources;
986
+ return;
987
+ }
988
+ // Parse the resource.
989
+ XdsResourceType::DecodeContext resource_type_context = {
990
+ xds_client(), xds_channel()->server_, xds_client()->def_pool_.ptr(),
991
+ context->arena.ptr()};
992
+ XdsResourceType::DecodeResult decode_result =
993
+ context->type->Decode(resource_type_context, serialized_resource);
994
+ // If we didn't already have the resource name from the Resource
995
+ // wrapper, try to get it from the decoding result.
996
+ if (resource_name.empty()) {
997
+ if (decode_result.name.has_value()) {
998
+ resource_name = *decode_result.name;
999
+ error_prefix =
1000
+ absl::StrCat("resource index ", idx, ": ", resource_name, ": ");
1049
1001
  } else {
1050
- seen_response_ = true;
1051
- xds_channel()->SetHealthyLocked();
1052
- // Update nonce.
1053
- auto& state = state_map_[result.type];
1054
- state.nonce = result.nonce;
1055
- // If we got an error, set state.status so that we'll NACK the update.
1056
- if (!result.errors.empty()) {
1057
- state.status = absl::UnavailableError(
1058
- absl::StrCat("xDS response validation errors: [",
1059
- absl::StrJoin(result.errors, "; "), "]"));
1060
- LOG(ERROR) << "[xds_client " << xds_client() << "] xds server "
1061
- << xds_channel()->server_.server_uri()
1062
- << ": ADS response invalid for resource type "
1063
- << result.type_url << " version " << result.version
1064
- << ", will NACK: nonce=" << state.nonce
1065
- << " status=" << state.status;
1002
+ // We don't have any way of determining the resource name, so
1003
+ // there's nothing more we can do here.
1004
+ context->errors.emplace_back(absl::StrCat(
1005
+ error_prefix, decode_result.resource.status().ToString()));
1006
+ ++context->num_invalid_resources;
1007
+ return;
1008
+ }
1009
+ }
1010
+ // If decoding failed, make sure we include the error in the NACK.
1011
+ const absl::Status& decode_status = decode_result.resource.status();
1012
+ if (!decode_status.ok()) {
1013
+ context->errors.emplace_back(
1014
+ absl::StrCat(error_prefix, decode_status.ToString()));
1015
+ }
1016
+ // Check the resource name.
1017
+ auto parsed_resource_name =
1018
+ xds_client()->ParseXdsResourceName(resource_name, context->type);
1019
+ if (!parsed_resource_name.ok()) {
1020
+ context->errors.emplace_back(
1021
+ absl::StrCat(error_prefix, "Cannot parse xDS resource name"));
1022
+ ++context->num_invalid_resources;
1023
+ return;
1024
+ }
1025
+ // Cancel resource-does-not-exist timer, if needed.
1026
+ if (auto it = state_map_.find(context->type); it != state_map_.end()) {
1027
+ auto& resource_type_state = it->second;
1028
+ auto authority_it = resource_type_state.subscribed_resources.find(
1029
+ parsed_resource_name->authority);
1030
+ if (authority_it != resource_type_state.subscribed_resources.end()) {
1031
+ auto& resource_map = authority_it->second;
1032
+ auto res_it = resource_map.find(parsed_resource_name->key);
1033
+ if (res_it != resource_map.end()) {
1034
+ res_it->second->MarkSeen();
1066
1035
  }
1067
- // Delete resources not seen in update if needed.
1068
- if (result.type->AllResourcesRequiredInSotW()) {
1069
- for (auto& a : xds_client()->authority_state_map_) {
1070
- const std::string& authority = a.first;
1071
- AuthorityState& authority_state = a.second;
1072
- // Skip authorities that are not using this xDS channel.
1073
- if (authority_state.xds_channels.back() != xds_channel()) {
1074
- continue;
1075
- }
1076
- auto seen_authority_it = result.resources_seen.find(authority);
1077
- // Find this resource type.
1078
- auto type_it = authority_state.resource_map.find(result.type);
1079
- if (type_it == authority_state.resource_map.end()) continue;
1080
- // Iterate over resource ids.
1081
- for (auto& r : type_it->second) {
1082
- const XdsResourceKey& resource_key = r.first;
1083
- ResourceState& resource_state = r.second;
1084
- if (seen_authority_it == result.resources_seen.end() ||
1085
- seen_authority_it->second.find(resource_key) ==
1086
- seen_authority_it->second.end()) {
1087
- // If the resource was newly requested but has not yet been
1088
- // received, we don't want to generate an error for the
1089
- // watchers, because this ADS response may be in reaction to an
1090
- // earlier request that did not yet request the new resource, so
1091
- // its absence from the response does not necessarily indicate
1092
- // that the resource does not exist. For that case, we rely on
1093
- // the request timeout instead.
1094
- if (resource_state.resource == nullptr) continue;
1095
- if (xds_channel()->server_.IgnoreResourceDeletion()) {
1096
- if (!resource_state.ignored_deletion) {
1097
- LOG(ERROR)
1098
- << "[xds_client " << xds_client() << "] xds server "
1099
- << xds_channel()->server_.server_uri()
1100
- << ": ignoring deletion for resource type "
1101
- << result.type_url << " name "
1102
- << XdsClient::ConstructFullXdsResourceName(
1103
- authority, result.type_url.c_str(), resource_key);
1104
- resource_state.ignored_deletion = true;
1105
- }
1106
- } else {
1107
- resource_state.resource.reset();
1108
- resource_state.meta.client_status =
1109
- XdsApi::ResourceMetadata::DOES_NOT_EXIST;
1110
- xds_client()->NotifyWatchersOnResourceDoesNotExist(
1111
- resource_state.watchers, read_delay_handle);
1112
- }
1113
- }
1114
- }
1115
- }
1036
+ }
1037
+ }
1038
+ // Lookup the authority in the cache.
1039
+ auto authority_it =
1040
+ xds_client()->authority_state_map_.find(parsed_resource_name->authority);
1041
+ if (authority_it == xds_client()->authority_state_map_.end()) {
1042
+ return; // Skip resource -- we don't have a subscription for it.
1043
+ }
1044
+ AuthorityState& authority_state = authority_it->second;
1045
+ // Found authority, so look up type.
1046
+ auto type_it = authority_state.type_map.find(context->type);
1047
+ if (type_it == authority_state.type_map.end()) {
1048
+ return; // Skip resource -- we don't have a subscription for it.
1049
+ }
1050
+ auto& type_map = type_it->second;
1051
+ // Found type, so look up resource key.
1052
+ auto res_it = type_map.find(parsed_resource_name->key);
1053
+ if (res_it == type_map.end()) {
1054
+ return; // Skip resource -- we don't have a subscription for it.
1055
+ }
1056
+ ResourceState& resource_state = res_it->second;
1057
+ // If needed, record that we've seen this resource.
1058
+ if (context->type->AllResourcesRequiredInSotW()) {
1059
+ context->resources_seen[parsed_resource_name->authority].insert(
1060
+ parsed_resource_name->key);
1061
+ }
1062
+ // Update resource state based on whether the resource is valid.
1063
+ if (!decode_status.ok()) {
1064
+ ++context->num_invalid_resources;
1065
+ // If the fail_on_data_errors server feature is present, drop the
1066
+ // existing cached resource, if any.
1067
+ const bool drop_cached_resource = XdsDataErrorHandlingEnabled() &&
1068
+ xds_channel()->server_.FailOnDataErrors();
1069
+ resource_state.SetNacked(context->version, decode_status.message(),
1070
+ context->update_time, drop_cached_resource);
1071
+ xds_client()->NotifyWatchersOnError(resource_state,
1072
+ context->read_delay_handle);
1073
+ return;
1074
+ }
1075
+ // Resource is valid.
1076
+ ++context->num_valid_resources;
1077
+ // Check if the resource has changed.
1078
+ const bool resource_identical =
1079
+ resource_state.HasResource() &&
1080
+ context->type->ResourcesEqual(resource_state.resource().get(),
1081
+ decode_result.resource->get());
1082
+ // If not changed, keep using the current decoded resource object.
1083
+ // This should avoid wasting memory, since external watchers may be
1084
+ // holding refs to the current object.
1085
+ if (resource_identical) decode_result.resource = resource_state.resource();
1086
+ // Update the resource state.
1087
+ resource_state.SetAcked(std::move(*decode_result.resource),
1088
+ std::string(serialized_resource), context->version,
1089
+ context->update_time);
1090
+ // If the resource didn't change, inhibit watcher notifications.
1091
+ if (resource_identical) {
1092
+ GRPC_TRACE_LOG(xds_client, INFO)
1093
+ << "[xds_client " << xds_client() << "] " << context->type_url
1094
+ << " resource " << resource_name << " identical to current, ignoring.";
1095
+ // If we previously had connectivity problems, notify watchers that
1096
+ // the ambient error has been cleared.
1097
+ if (!xds_channel()->status().ok()) {
1098
+ xds_client()->NotifyWatchersOnAmbientError(absl::OkStatus(),
1099
+ resource_state.watchers(),
1100
+ context->read_delay_handle);
1101
+ }
1102
+ return;
1103
+ }
1104
+ // Notify watchers.
1105
+ xds_client()->NotifyWatchersOnResourceChanged(resource_state.resource(),
1106
+ resource_state.watchers(),
1107
+ context->read_delay_handle);
1108
+ }
1109
+
1110
+ void XdsClient::XdsChannel::AdsCall::HandleServerReportedResourceError(
1111
+ size_t idx, absl::string_view resource_name, absl::Status status,
1112
+ DecodeContext* context) {
1113
+ std::string error_prefix = absl::StrCat(
1114
+ "resource_errors index ", idx, ": ",
1115
+ resource_name.empty() ? "" : absl::StrCat(resource_name, ": "));
1116
+ if (resource_name.empty()) {
1117
+ context->errors.emplace_back(
1118
+ absl::StrCat(error_prefix, "resource_name unset"));
1119
+ ++context->num_invalid_resources;
1120
+ return;
1121
+ }
1122
+ if (status.ok()) {
1123
+ context->errors.emplace_back(
1124
+ absl::StrCat(error_prefix, "error_detail must be non-OK"));
1125
+ ++context->num_invalid_resources;
1126
+ return;
1127
+ }
1128
+ // Check the resource name.
1129
+ auto parsed_resource_name =
1130
+ xds_client()->ParseXdsResourceName(resource_name, context->type);
1131
+ if (!parsed_resource_name.ok()) {
1132
+ context->errors.emplace_back(
1133
+ absl::StrCat(error_prefix, "Cannot parse xDS resource name"));
1134
+ ++context->num_invalid_resources;
1135
+ return;
1136
+ }
1137
+ // Cancel resource-does-not-exist timer, if needed.
1138
+ auto timer_it = state_map_.find(context->type);
1139
+ if (timer_it != state_map_.end()) {
1140
+ auto it = timer_it->second.subscribed_resources.find(
1141
+ parsed_resource_name->authority);
1142
+ if (it != timer_it->second.subscribed_resources.end()) {
1143
+ auto res_it = it->second.find(parsed_resource_name->key);
1144
+ if (res_it != it->second.end()) {
1145
+ res_it->second->MarkSeen();
1146
+ }
1147
+ }
1148
+ }
1149
+ // Lookup the authority in the cache.
1150
+ auto authority_it =
1151
+ xds_client()->authority_state_map_.find(parsed_resource_name->authority);
1152
+ if (authority_it == xds_client()->authority_state_map_.end()) {
1153
+ return; // Skip resource -- we don't have a subscription for it.
1154
+ }
1155
+ AuthorityState& authority_state = authority_it->second;
1156
+ // Found authority, so look up type.
1157
+ auto type_it = authority_state.type_map.find(context->type);
1158
+ if (type_it == authority_state.type_map.end()) {
1159
+ return; // Skip resource -- we don't have a subscription for it.
1160
+ }
1161
+ auto& type_map = type_it->second;
1162
+ // Found type, so look up resource key.
1163
+ auto it = type_map.find(parsed_resource_name->key);
1164
+ if (it == type_map.end()) {
1165
+ return; // Skip resource -- we don't have a subscription for it.
1166
+ }
1167
+ ResourceState& resource_state = it->second;
1168
+ // If needed, record that we've seen this resource.
1169
+ if (context->type->AllResourcesRequiredInSotW()) {
1170
+ context->resources_seen[parsed_resource_name->authority].insert(
1171
+ parsed_resource_name->key);
1172
+ }
1173
+ ++context->num_invalid_resources;
1174
+ // Update cache state.
1175
+ const bool drop_cached_resource =
1176
+ xds_channel()->server_.FailOnDataErrors() &&
1177
+ (status.code() == absl::StatusCode::kNotFound ||
1178
+ status.code() == absl::StatusCode::kPermissionDenied);
1179
+ resource_state.SetReceivedError(context->version, std::move(status),
1180
+ context->update_time, drop_cached_resource);
1181
+ // If there is no cached resource (either because we didn't have one
1182
+ // or because we just dropped it due to fail_on_data_errors), then notify
1183
+ // via OnResourceChanged(); otherwise, notify via OnAmbientError().
1184
+ if (!resource_state.HasResource()) {
1185
+ xds_client()->NotifyWatchersOnResourceChanged(
1186
+ resource_state.failed_status(), resource_state.watchers(),
1187
+ context->read_delay_handle);
1188
+ } else {
1189
+ xds_client()->NotifyWatchersOnAmbientError(resource_state.failed_status(),
1190
+ resource_state.watchers(),
1191
+ context->read_delay_handle);
1192
+ }
1193
+ }
1194
+
1195
+ namespace {
1196
+
1197
+ void MaybeLogDiscoveryResponse(
1198
+ const XdsClient* client, upb_DefPool* def_pool,
1199
+ const envoy_service_discovery_v3_DiscoveryResponse* response) {
1200
+ if (GRPC_TRACE_FLAG_ENABLED(xds_client) && ABSL_VLOG_IS_ON(2)) {
1201
+ const upb_MessageDef* msg_type =
1202
+ envoy_service_discovery_v3_DiscoveryResponse_getmsgdef(def_pool);
1203
+ char buf[10240];
1204
+ upb_TextEncode(reinterpret_cast<const upb_Message*>(response), msg_type,
1205
+ nullptr, 0, buf, sizeof(buf));
1206
+ VLOG(2) << "[xds_client " << client << "] received response: " << buf;
1207
+ }
1208
+ }
1209
+
1210
+ } // namespace
1211
+
1212
+ absl::Status XdsClient::XdsChannel::AdsCall::DecodeAdsResponse(
1213
+ absl::string_view encoded_response, DecodeContext* context) {
1214
+ // Decode the response.
1215
+ const envoy_service_discovery_v3_DiscoveryResponse* response =
1216
+ envoy_service_discovery_v3_DiscoveryResponse_parse(
1217
+ encoded_response.data(), encoded_response.size(),
1218
+ context->arena.ptr());
1219
+ // If decoding fails, report a fatal error and return.
1220
+ if (response == nullptr) {
1221
+ return absl::InvalidArgumentError("Can't decode DiscoveryResponse.");
1222
+ }
1223
+ MaybeLogDiscoveryResponse(xds_client(), xds_client()->def_pool_.ptr(),
1224
+ response);
1225
+ // Get the type_url, version, nonce, number of resources, and number
1226
+ // of errors.
1227
+ context->type_url = std::string(absl::StripPrefix(
1228
+ UpbStringToAbsl(
1229
+ envoy_service_discovery_v3_DiscoveryResponse_type_url(response)),
1230
+ "type.googleapis.com/"));
1231
+ context->version = UpbStringToStdString(
1232
+ envoy_service_discovery_v3_DiscoveryResponse_version_info(response));
1233
+ context->nonce = UpbStringToStdString(
1234
+ envoy_service_discovery_v3_DiscoveryResponse_nonce(response));
1235
+ size_t num_resources;
1236
+ const google_protobuf_Any* const* resources =
1237
+ envoy_service_discovery_v3_DiscoveryResponse_resources(response,
1238
+ &num_resources);
1239
+ size_t num_errors = 0;
1240
+ const envoy_service_discovery_v3_ResourceError* const* errors = nullptr;
1241
+ if (XdsDataErrorHandlingEnabled()) {
1242
+ errors = envoy_service_discovery_v3_DiscoveryResponse_resource_errors(
1243
+ response, &num_errors);
1244
+ }
1245
+ GRPC_TRACE_LOG(xds_client, INFO)
1246
+ << "[xds_client " << xds_client() << "] xds server "
1247
+ << xds_channel()->server_uri()
1248
+ << ": received ADS response: type_url=" << context->type_url
1249
+ << ", version=" << context->version << ", nonce=" << context->nonce
1250
+ << ", num_resources=" << num_resources << ", num_errors=" << num_errors;
1251
+ context->type = xds_client()->GetResourceTypeLocked(context->type_url);
1252
+ if (context->type == nullptr) {
1253
+ return absl::InvalidArgumentError(
1254
+ absl::StrCat("unknown resource type ", context->type_url));
1255
+ }
1256
+ context->read_delay_handle = MakeRefCounted<AdsReadDelayHandle>(Ref());
1257
+ // Process each resource.
1258
+ for (size_t i = 0; i < num_resources; ++i) {
1259
+ absl::string_view type_url = absl::StripPrefix(
1260
+ UpbStringToAbsl(google_protobuf_Any_type_url(resources[i])),
1261
+ "type.googleapis.com/");
1262
+ absl::string_view serialized_resource =
1263
+ UpbStringToAbsl(google_protobuf_Any_value(resources[i]));
1264
+ // Unwrap Resource messages, if so wrapped.
1265
+ absl::string_view resource_name;
1266
+ if (type_url == "envoy.service.discovery.v3.Resource") {
1267
+ const auto* resource_wrapper = envoy_service_discovery_v3_Resource_parse(
1268
+ serialized_resource.data(), serialized_resource.size(),
1269
+ context->arena.ptr());
1270
+ if (resource_wrapper == nullptr) {
1271
+ context->errors.emplace_back(absl::StrCat(
1272
+ "resource index ", i, ": Can't decode Resource proto wrapper"));
1273
+ ++context->num_invalid_resources;
1274
+ continue;
1116
1275
  }
1117
- // If we had valid resources or the update was empty, update the version.
1118
- if (result.num_valid_resources > 0 || result.errors.empty()) {
1119
- xds_channel()->resource_type_version_map_[result.type] =
1120
- std::move(result.version);
1276
+ const auto* resource =
1277
+ envoy_service_discovery_v3_Resource_resource(resource_wrapper);
1278
+ if (resource == nullptr) {
1279
+ context->errors.emplace_back(
1280
+ absl::StrCat("resource index ", i,
1281
+ ": No resource present in Resource proto wrappe"));
1282
+ ++context->num_invalid_resources;
1283
+ continue;
1121
1284
  }
1122
- // Send ACK or NACK.
1123
- SendMessageLocked(result.type);
1285
+ type_url = absl::StripPrefix(
1286
+ UpbStringToAbsl(google_protobuf_Any_type_url(resource)),
1287
+ "type.googleapis.com/");
1288
+ serialized_resource =
1289
+ UpbStringToAbsl(google_protobuf_Any_value(resource));
1290
+ resource_name = UpbStringToAbsl(
1291
+ envoy_service_discovery_v3_Resource_name(resource_wrapper));
1124
1292
  }
1125
- // Update metrics.
1126
- if (xds_client()->metrics_reporter_ != nullptr) {
1127
- xds_client()->metrics_reporter_->ReportResourceUpdates(
1128
- xds_channel()->server_.server_uri(), result.type_url,
1129
- result.num_valid_resources, result.num_invalid_resources);
1293
+ ParseResource(i, type_url, resource_name, serialized_resource, context);
1294
+ }
1295
+ // Process each error.
1296
+ for (size_t i = 0; i < num_errors; ++i) {
1297
+ absl::string_view name;
1298
+ {
1299
+ const envoy_service_discovery_v3_ResourceName* resource_name =
1300
+ envoy_service_discovery_v3_ResourceError_resource_name(errors[i]);
1301
+ if (resource_name != nullptr) {
1302
+ name = UpbStringToAbsl(
1303
+ envoy_service_discovery_v3_ResourceName_name(resource_name));
1304
+ }
1305
+ }
1306
+ absl::Status status;
1307
+ {
1308
+ const google_rpc_Status* error_detail =
1309
+ envoy_service_discovery_v3_ResourceError_error_detail(errors[i]);
1310
+ if (error_detail != nullptr) {
1311
+ status = absl::Status(
1312
+ static_cast<absl::StatusCode>(google_rpc_Status_code(error_detail)),
1313
+ UpbStringToAbsl(google_rpc_Status_message(error_detail)));
1314
+ }
1130
1315
  }
1316
+ HandleServerReportedResourceError(i, name, std::move(status), context);
1131
1317
  }
1132
- xds_client()->work_serializer_.DrainQueue();
1318
+ return absl::OkStatus();
1133
1319
  }
1134
1320
 
1135
- void XdsClient::XdsChannel::AdsCall::OnStatusReceived(absl::Status status) {
1136
- {
1137
- MutexLock lock(&xds_client()->mu_);
1138
- GRPC_TRACE_LOG(xds_client, INFO)
1139
- << "[xds_client " << xds_client() << "] xds server "
1140
- << xds_channel()->server_.server_uri()
1141
- << ": ADS call status received (xds_channel=" << xds_channel()
1142
- << ", ads_call=" << this << ", streaming_call=" << streaming_call_.get()
1143
- << "): " << status;
1144
- // Cancel any does-not-exist timers that may be pending.
1145
- for (const auto& p : state_map_) {
1146
- for (const auto& q : p.second.subscribed_resources) {
1147
- for (auto& r : q.second) {
1148
- r.second->MaybeCancelTimer();
1321
+ void XdsClient::XdsChannel::AdsCall::OnRecvMessage(absl::string_view payload) {
1322
+ // context.read_delay_handle needs to be destroyed after the mutex is
1323
+ // released.
1324
+ DecodeContext context;
1325
+ MutexLock lock(&xds_client()->mu_);
1326
+ if (!IsCurrentCallOnChannel()) return;
1327
+ // Parse and validate the response.
1328
+ absl::Status status = DecodeAdsResponse(payload, &context);
1329
+ if (!status.ok()) {
1330
+ // Ignore unparsable response.
1331
+ LOG(ERROR) << "[xds_client " << xds_client() << "] xds server "
1332
+ << xds_channel()->server_uri()
1333
+ << ": error parsing ADS response (" << status << ") -- ignoring";
1334
+ } else {
1335
+ seen_response_ = true;
1336
+ xds_channel()->SetHealthyLocked();
1337
+ // Update nonce.
1338
+ auto& state = state_map_[context.type];
1339
+ state.nonce = context.nonce;
1340
+ // If we got an error, set state.status so that we'll NACK the update.
1341
+ if (!context.errors.empty()) {
1342
+ state.status = absl::UnavailableError(
1343
+ absl::StrCat("xDS response validation errors: [",
1344
+ absl::StrJoin(context.errors, "; "), "]"));
1345
+ LOG(ERROR) << "[xds_client " << xds_client() << "] xds server "
1346
+ << xds_channel()->server_uri()
1347
+ << ": ADS response invalid for resource type "
1348
+ << context.type_url << " version " << context.version
1349
+ << ", will NACK: nonce=" << state.nonce
1350
+ << " status=" << state.status;
1351
+ }
1352
+ // Delete resources not seen in update if needed.
1353
+ if (context.type->AllResourcesRequiredInSotW()) {
1354
+ for (auto& [authority, authority_state] :
1355
+ xds_client()->authority_state_map_) {
1356
+ // Skip authorities that are not using this xDS channel.
1357
+ if (authority_state.xds_channels.back() != xds_channel()) {
1358
+ continue;
1359
+ }
1360
+ auto seen_authority_it = context.resources_seen.find(authority);
1361
+ // Find this resource type.
1362
+ auto type_it = authority_state.type_map.find(context.type);
1363
+ if (type_it == authority_state.type_map.end()) continue;
1364
+ // Iterate over resource ids.
1365
+ for (auto& [resource_key, resource_state] : type_it->second) {
1366
+ if (seen_authority_it == context.resources_seen.end() ||
1367
+ seen_authority_it->second.find(resource_key) ==
1368
+ seen_authority_it->second.end()) {
1369
+ // If the resource was newly requested but has not yet been
1370
+ // received, we don't want to generate an error for the
1371
+ // watchers, because this ADS response may be in reaction to an
1372
+ // earlier request that did not yet request the new resource, so
1373
+ // its absence from the response does not necessarily indicate
1374
+ // that the resource does not exist. For that case, we rely on
1375
+ // the request timeout instead.
1376
+ if (!resource_state.HasResource()) continue;
1377
+ const bool drop_cached_resource =
1378
+ XdsDataErrorHandlingEnabled()
1379
+ ? xds_channel()->server_.FailOnDataErrors()
1380
+ : !xds_channel()->server_.IgnoreResourceDeletion();
1381
+ resource_state.SetDoesNotExistOnLdsOrCdsDeletion(
1382
+ context.version, context.update_time, drop_cached_resource);
1383
+ xds_client()->NotifyWatchersOnError(resource_state,
1384
+ context.read_delay_handle);
1385
+ }
1149
1386
  }
1150
1387
  }
1151
1388
  }
1152
- // Ignore status from a stale call.
1153
- if (IsCurrentCallOnChannel()) {
1154
- // Try to restart the call.
1155
- retryable_call_->OnCallFinishedLocked();
1156
- // If we didn't receive a response on the stream, report the
1157
- // stream failure as a connectivity failure, which will report the
1158
- // error to all watchers of resources on this channel.
1159
- if (!seen_response_) {
1160
- xds_channel()->SetChannelStatusLocked(absl::UnavailableError(
1161
- absl::StrCat("xDS call failed with no responses received; status: ",
1162
- status.ToString())));
1389
+ // If we had valid resources or the update was empty, update the version.
1390
+ if (context.num_valid_resources > 0 || context.errors.empty()) {
1391
+ xds_channel()->resource_type_version_map_[context.type] =
1392
+ std::move(context.version);
1393
+ }
1394
+ // Send ACK or NACK.
1395
+ SendMessageLocked(context.type);
1396
+ }
1397
+ // Update metrics.
1398
+ if (xds_client()->metrics_reporter_ != nullptr) {
1399
+ xds_client()->metrics_reporter_->ReportResourceUpdates(
1400
+ xds_channel()->server_uri(), context.type_url,
1401
+ context.num_valid_resources, context.num_invalid_resources);
1402
+ }
1403
+ }
1404
+
1405
+ void XdsClient::XdsChannel::AdsCall::OnStatusReceived(absl::Status status) {
1406
+ MutexLock lock(&xds_client()->mu_);
1407
+ GRPC_TRACE_LOG(xds_client, INFO)
1408
+ << "[xds_client " << xds_client() << "] xds server "
1409
+ << xds_channel()->server_uri()
1410
+ << ": ADS call status received (xds_channel=" << xds_channel()
1411
+ << ", ads_call=" << this << ", streaming_call=" << streaming_call_.get()
1412
+ << "): " << status;
1413
+ // Cancel any does-not-exist timers that may be pending.
1414
+ for (const auto& [_, resource_type_state] : state_map_) {
1415
+ for (const auto& [_, resource_map] :
1416
+ resource_type_state.subscribed_resources) {
1417
+ for (auto& [_, resource_timer] : resource_map) {
1418
+ resource_timer->MaybeCancelTimer();
1163
1419
  }
1164
1420
  }
1165
1421
  }
1166
- xds_client()->work_serializer_.DrainQueue();
1422
+ // Ignore status from a stale call.
1423
+ if (IsCurrentCallOnChannel()) {
1424
+ // Try to restart the call.
1425
+ retryable_call_->OnCallFinishedLocked();
1426
+ // If we didn't receive a response on the stream, report the
1427
+ // stream failure as a connectivity failure, which will report the
1428
+ // error to all watchers of resources on this channel.
1429
+ if (!seen_response_) {
1430
+ xds_channel()->SetChannelStatusLocked(absl::UnavailableError(
1431
+ absl::StrCat("xDS call failed with no responses received; status: ",
1432
+ status.ToString())));
1433
+ }
1434
+ }
1167
1435
  }
1168
1436
 
1169
1437
  bool XdsClient::XdsChannel::AdsCall::IsCurrentCallOnChannel() const {
@@ -1179,13 +1447,10 @@ XdsClient::XdsChannel::AdsCall::ResourceNamesForRequest(
1179
1447
  std::vector<std::string> resource_names;
1180
1448
  auto it = state_map_.find(type);
1181
1449
  if (it != state_map_.end()) {
1182
- for (auto& a : it->second.subscribed_resources) {
1183
- const std::string& authority = a.first;
1184
- for (auto& p : a.second) {
1185
- const XdsResourceKey& resource_key = p.first;
1450
+ for (auto& [authority, authority_state] : it->second.subscribed_resources) {
1451
+ for (auto& [resource_key, resource_timer] : authority_state) {
1186
1452
  resource_names.emplace_back(XdsClient::ConstructFullXdsResourceName(
1187
1453
  authority, type->type_url(), resource_key));
1188
- OrphanablePtr<ResourceTimer>& resource_timer = p.second;
1189
1454
  resource_timer->MarkSubscriptionSendStarted();
1190
1455
  }
1191
1456
  }
@@ -1193,6 +1458,144 @@ XdsClient::XdsChannel::AdsCall::ResourceNamesForRequest(
1193
1458
  return resource_names;
1194
1459
  }
1195
1460
 
1461
+ //
1462
+ // XdsClient::ResourceState
1463
+ //
1464
+
1465
+ void XdsClient::ResourceState::SetAcked(
1466
+ std::shared_ptr<const XdsResourceType::ResourceData> resource,
1467
+ std::string serialized_proto, std::string version, Timestamp update_time) {
1468
+ resource_ = std::move(resource);
1469
+ client_status_ = ClientResourceStatus::ACKED;
1470
+ serialized_proto_ = std::move(serialized_proto);
1471
+ update_time_ = update_time;
1472
+ version_ = std::move(version);
1473
+ failed_version_.clear();
1474
+ failed_status_ = absl::OkStatus();
1475
+ }
1476
+
1477
+ void XdsClient::ResourceState::SetNacked(const std::string& version,
1478
+ absl::string_view details,
1479
+ Timestamp update_time,
1480
+ bool drop_cached_resource) {
1481
+ if (drop_cached_resource) {
1482
+ resource_.reset();
1483
+ serialized_proto_.clear();
1484
+ }
1485
+ client_status_ = ClientResourceStatus::NACKED;
1486
+ failed_status_ =
1487
+ absl::InvalidArgumentError(absl::StrCat("invalid resource: ", details));
1488
+ failed_version_ = version;
1489
+ failed_update_time_ = update_time;
1490
+ }
1491
+
1492
+ void XdsClient::ResourceState::SetReceivedError(const std::string& version,
1493
+ absl::Status status,
1494
+ Timestamp update_time,
1495
+ bool drop_cached_resource) {
1496
+ if (drop_cached_resource) {
1497
+ resource_.reset();
1498
+ serialized_proto_.clear();
1499
+ }
1500
+ client_status_ = ClientResourceStatus::RECEIVED_ERROR;
1501
+ failed_version_ = version;
1502
+ failed_status_ = std::move(status);
1503
+ failed_update_time_ = update_time;
1504
+ }
1505
+
1506
+ void XdsClient::ResourceState::SetDoesNotExistOnLdsOrCdsDeletion(
1507
+ const std::string& version, Timestamp update_time,
1508
+ bool drop_cached_resource) {
1509
+ if (drop_cached_resource) {
1510
+ resource_.reset();
1511
+ serialized_proto_.clear();
1512
+ }
1513
+ client_status_ = ClientResourceStatus::DOES_NOT_EXIST;
1514
+ failed_status_ = absl::NotFoundError("does not exist");
1515
+ failed_version_ = version;
1516
+ failed_update_time_ = update_time;
1517
+ }
1518
+
1519
+ void XdsClient::ResourceState::SetDoesNotExistOnTimeout() {
1520
+ client_status_ = ClientResourceStatus::DOES_NOT_EXIST;
1521
+ failed_status_ = absl::NotFoundError("does not exist");
1522
+ failed_version_.clear();
1523
+ }
1524
+
1525
+ void XdsClient::ResourceState::SetTimeout(const std::string& details) {
1526
+ client_status_ = ClientResourceStatus::TIMEOUT;
1527
+ failed_status_ = absl::UnavailableError(details);
1528
+ failed_version_.clear();
1529
+ }
1530
+
1531
+ absl::string_view XdsClient::ResourceState::CacheStateString() const {
1532
+ switch (client_status_) {
1533
+ case ClientResourceStatus::REQUESTED:
1534
+ return "requested";
1535
+ case ClientResourceStatus::DOES_NOT_EXIST:
1536
+ return resource_ != nullptr ? "does_not_exist_but_cached"
1537
+ : "does_not_exist";
1538
+ case ClientResourceStatus::ACKED:
1539
+ return "acked";
1540
+ case ClientResourceStatus::NACKED:
1541
+ return resource_ != nullptr ? "nacked_but_cached" : "nacked";
1542
+ case ClientResourceStatus::RECEIVED_ERROR:
1543
+ return resource_ != nullptr ? "received_error_but_cached"
1544
+ : "received_error";
1545
+ case ClientResourceStatus::TIMEOUT:
1546
+ return "timeout";
1547
+ }
1548
+ Crash("unknown resource state");
1549
+ }
1550
+
1551
+ namespace {
1552
+
1553
+ google_protobuf_Timestamp* EncodeTimestamp(Timestamp value, upb_Arena* arena) {
1554
+ google_protobuf_Timestamp* timestamp = google_protobuf_Timestamp_new(arena);
1555
+ gpr_timespec timespec = value.as_timespec(GPR_CLOCK_REALTIME);
1556
+ google_protobuf_Timestamp_set_seconds(timestamp, timespec.tv_sec);
1557
+ google_protobuf_Timestamp_set_nanos(timestamp, timespec.tv_nsec);
1558
+ return timestamp;
1559
+ }
1560
+
1561
+ } // namespace
1562
+
1563
+ void XdsClient::ResourceState::FillGenericXdsConfig(
1564
+ upb_StringView type_url, upb_StringView resource_name, upb_Arena* arena,
1565
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig* entry) const {
1566
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_type_url(entry,
1567
+ type_url);
1568
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_name(entry,
1569
+ resource_name);
1570
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_client_status(
1571
+ entry, client_status_);
1572
+ if (!serialized_proto_.empty()) {
1573
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_version_info(
1574
+ entry, StdStringToUpbString(version_));
1575
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_last_updated(
1576
+ entry, EncodeTimestamp(update_time_, arena));
1577
+ auto* any_field =
1578
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_xds_config(
1579
+ entry, arena);
1580
+ google_protobuf_Any_set_type_url(any_field, type_url);
1581
+ google_protobuf_Any_set_value(any_field,
1582
+ StdStringToUpbString(serialized_proto_));
1583
+ }
1584
+ if (!failed_status_.ok()) {
1585
+ auto* update_failure_state = envoy_admin_v3_UpdateFailureState_new(arena);
1586
+ envoy_admin_v3_UpdateFailureState_set_details(
1587
+ update_failure_state, StdStringToUpbString(failed_status_.message()));
1588
+ if (!failed_version_.empty()) {
1589
+ envoy_admin_v3_UpdateFailureState_set_version_info(
1590
+ update_failure_state, StdStringToUpbString(failed_version_));
1591
+ envoy_admin_v3_UpdateFailureState_set_last_update_attempt(
1592
+ update_failure_state, EncodeTimestamp(failed_update_time_, arena));
1593
+ }
1594
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_error_state(
1595
+ entry, update_failure_state);
1596
+ }
1597
+ }
1598
+
1196
1599
  //
1197
1600
  // XdsClient
1198
1601
  //
@@ -1209,11 +1612,11 @@ XdsClient::XdsClient(
1209
1612
  : DualRefCounted<XdsClient>(
1210
1613
  GRPC_TRACE_FLAG_ENABLED(xds_client_refcount) ? "XdsClient" : nullptr),
1211
1614
  bootstrap_(std::move(bootstrap)),
1615
+ user_agent_name_(std::move(user_agent_name)),
1616
+ user_agent_version_(std::move(user_agent_version)),
1212
1617
  transport_factory_(std::move(transport_factory)),
1213
1618
  request_timeout_(resource_request_timeout),
1214
1619
  xds_federation_enabled_(XdsFederationEnabled()),
1215
- api_(this, &xds_client_trace, bootstrap_->node(), &def_pool_,
1216
- std::move(user_agent_name), std::move(user_agent_version)),
1217
1620
  work_serializer_(engine),
1218
1621
  engine_(std::move(engine)),
1219
1622
  metrics_reporter_(std::move(metrics_reporter)) {
@@ -1238,7 +1641,12 @@ void XdsClient::Orphaned() {
1238
1641
  MutexLock lock(&mu_);
1239
1642
  shutting_down_ = true;
1240
1643
  // Clear cache and any remaining watchers that may not have been cancelled.
1241
- authority_state_map_.clear();
1644
+ // Note: We move authority_state_map_ out of the way before clearing
1645
+ // it, because clearing the map will trigger calls to
1646
+ // MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(), which would try to
1647
+ // modify the map while we are iterating over it.
1648
+ auto authority_state_map = std::move(authority_state_map_);
1649
+ authority_state_map.clear();
1242
1650
  invalid_watchers_.clear();
1243
1651
  }
1244
1652
 
@@ -1257,10 +1665,11 @@ RefCountedPtr<XdsClient::XdsChannel> XdsClient::GetOrCreateXdsChannelLocked(
1257
1665
  }
1258
1666
 
1259
1667
  bool XdsClient::HasUncachedResources(const AuthorityState& authority_state) {
1260
- for (const auto& type_resource : authority_state.resource_map) {
1261
- for (const auto& key_state : type_resource.second) {
1262
- if (key_state.second.meta.client_status ==
1263
- XdsApi::ResourceMetadata::REQUESTED) {
1668
+ for (const auto& [_, resource_map] : authority_state.type_map) {
1669
+ for (const auto& [_, resource_state] : resource_map) {
1670
+ if (resource_state.HasWatchers() &&
1671
+ resource_state.client_status() ==
1672
+ ResourceState::ClientResourceStatus::REQUESTED) {
1264
1673
  return true;
1265
1674
  }
1266
1675
  }
@@ -1271,24 +1680,19 @@ bool XdsClient::HasUncachedResources(const AuthorityState& authority_state) {
1271
1680
  void XdsClient::WatchResource(const XdsResourceType* type,
1272
1681
  absl::string_view name,
1273
1682
  RefCountedPtr<ResourceWatcherInterface> watcher) {
1274
- ResourceWatcherInterface* w = watcher.get();
1275
1683
  // Lambda for handling failure cases.
1276
1684
  auto fail = [&](absl::Status status) mutable {
1277
1685
  {
1278
1686
  MutexLock lock(&mu_);
1279
1687
  MaybeRegisterResourceTypeLocked(type);
1280
- invalid_watchers_[w] = watcher;
1688
+ invalid_watchers_.insert(watcher);
1281
1689
  }
1282
- work_serializer_.Run(
1283
- [watcher = std::move(watcher), status = std::move(status)]()
1284
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1285
- watcher->OnError(status, ReadDelayHandle::NoWait());
1286
- },
1287
- DEBUG_LOCATION);
1690
+ NotifyWatchersOnResourceChanged(std::move(status), {watcher},
1691
+ ReadDelayHandle::NoWait());
1288
1692
  };
1289
1693
  auto resource_name = ParseXdsResourceName(name, type);
1290
1694
  if (!resource_name.ok()) {
1291
- fail(absl::UnavailableError(
1695
+ fail(absl::InvalidArgumentError(
1292
1696
  absl::StrCat("Unable to parse resource name ", name)));
1293
1697
  return;
1294
1698
  }
@@ -1298,7 +1702,7 @@ void XdsClient::WatchResource(const XdsResourceType* type,
1298
1702
  auto* authority =
1299
1703
  bootstrap_->LookupAuthority(std::string(resource_name->authority));
1300
1704
  if (authority == nullptr) {
1301
- fail(absl::UnavailableError(
1705
+ fail(absl::FailedPreconditionError(
1302
1706
  absl::StrCat("authority \"", resource_name->authority,
1303
1707
  "\" not present in bootstrap config")));
1304
1708
  return;
@@ -1306,103 +1710,67 @@ void XdsClient::WatchResource(const XdsResourceType* type,
1306
1710
  xds_servers = authority->servers();
1307
1711
  }
1308
1712
  if (xds_servers.empty()) xds_servers = bootstrap_->servers();
1309
- {
1310
- MutexLock lock(&mu_);
1311
- MaybeRegisterResourceTypeLocked(type);
1312
-
1313
- AuthorityState& authority_state =
1314
- authority_state_map_[resource_name->authority];
1315
- auto it_is_new = authority_state.resource_map[type].emplace(
1316
- resource_name->key, ResourceState());
1317
- bool first_watcher_for_resource = it_is_new.second;
1318
- ResourceState& resource_state = it_is_new.first->second;
1319
- resource_state.watchers[w] = watcher;
1320
- if (first_watcher_for_resource) {
1321
- // We try to add new channels in 2 cases:
1322
- // - This is the first resource for this authority (i.e., the list
1323
- // of channels is empty).
1324
- // - The last channel in the list is failing. That failure may not
1325
- // have previously triggered fallback if there were no uncached
1326
- // resources, but we've just added a new uncached resource,
1327
- // so we need to trigger fallback now.
1328
- //
1329
- // Note that when we add a channel, it might already be failing
1330
- // due to being used in a different authority. So we keep going
1331
- // until either we add one that isn't failing or we've added them all.
1332
- if (authority_state.xds_channels.empty() ||
1333
- !authority_state.xds_channels.back()->status().ok()) {
1334
- for (size_t i = authority_state.xds_channels.size();
1335
- i < xds_servers.size(); ++i) {
1336
- authority_state.xds_channels.emplace_back(
1337
- GetOrCreateXdsChannelLocked(*xds_servers[i], "start watch"));
1338
- if (authority_state.xds_channels.back()->status().ok()) {
1339
- break;
1340
- }
1341
- }
1342
- }
1343
- for (const auto& channel : authority_state.xds_channels) {
1344
- channel->SubscribeLocked(type, *resource_name);
1345
- }
1346
- } else {
1347
- // If we already have a cached value for the resource, notify the new
1348
- // watcher immediately.
1349
- if (resource_state.resource != nullptr) {
1350
- GRPC_TRACE_LOG(xds_client, INFO)
1351
- << "[xds_client " << this << "] returning cached listener data for "
1352
- << name;
1353
- work_serializer_.Schedule(
1354
- [watcher, value = resource_state.resource]()
1355
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1356
- watcher->OnGenericResourceChanged(value,
1357
- ReadDelayHandle::NoWait());
1358
- },
1359
- DEBUG_LOCATION);
1360
- } else if (resource_state.meta.client_status ==
1361
- XdsApi::ResourceMetadata::DOES_NOT_EXIST) {
1362
- GRPC_TRACE_LOG(xds_client, INFO)
1363
- << "[xds_client " << this
1364
- << "] reporting cached does-not-exist for " << name;
1365
- work_serializer_.Schedule(
1366
- [watcher]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1367
- watcher->OnResourceDoesNotExist(ReadDelayHandle::NoWait());
1368
- },
1369
- DEBUG_LOCATION);
1370
- } else if (resource_state.meta.client_status ==
1371
- XdsApi::ResourceMetadata::NACKED) {
1372
- GRPC_TRACE_LOG(xds_client, INFO)
1373
- << "[xds_client " << this
1374
- << "] reporting cached validation failure for " << name << ": "
1375
- << resource_state.meta.failed_details;
1376
- std::string details = resource_state.meta.failed_details;
1377
- const auto* node = bootstrap_->node();
1378
- if (node != nullptr) {
1379
- absl::StrAppend(&details, " (node ID:", bootstrap_->node()->id(),
1380
- ")");
1713
+ MutexLock lock(&mu_);
1714
+ MaybeRegisterResourceTypeLocked(type);
1715
+ AuthorityState& authority_state =
1716
+ authority_state_map_[resource_name->authority];
1717
+ auto [it, created_entry] = authority_state.type_map[type].emplace(
1718
+ resource_name->key, ResourceState());
1719
+ ResourceState& resource_state = it->second;
1720
+ resource_state.AddWatcher(watcher);
1721
+ if (created_entry) {
1722
+ // We try to add new channels in 2 cases:
1723
+ // - This is the first resource for this authority (i.e., the list
1724
+ // of channels is empty).
1725
+ // - The last channel in the list is failing. That failure may not
1726
+ // have previously triggered fallback if there were no uncached
1727
+ // resources, but we've just added a new uncached resource,
1728
+ // so we need to trigger fallback now.
1729
+ //
1730
+ // Note that when we add a channel, it might already be failing
1731
+ // due to being used in a different authority. So we keep going
1732
+ // until either we add one that isn't failing or we've added them all.
1733
+ if (authority_state.xds_channels.empty() ||
1734
+ !authority_state.xds_channels.back()->status().ok()) {
1735
+ for (size_t i = authority_state.xds_channels.size();
1736
+ i < xds_servers.size(); ++i) {
1737
+ authority_state.xds_channels.emplace_back(
1738
+ GetOrCreateXdsChannelLocked(*xds_servers[i], "start watch"));
1739
+ if (authority_state.xds_channels.back()->status().ok()) {
1740
+ break;
1381
1741
  }
1382
- work_serializer_.Schedule(
1383
- [watcher, details = std::move(details)]()
1384
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1385
- watcher->OnError(absl::UnavailableError(absl::StrCat(
1386
- "invalid resource: ", details)),
1387
- ReadDelayHandle::NoWait());
1388
- },
1389
- DEBUG_LOCATION);
1390
1742
  }
1391
1743
  }
1392
- absl::Status channel_status = authority_state.xds_channels.back()->status();
1393
- if (!channel_status.ok()) {
1744
+ } else {
1745
+ // If we already have a cached value for the resource, notify the new
1746
+ // watcher immediately.
1747
+ if (resource_state.HasResource()) {
1748
+ GRPC_TRACE_LOG(xds_client, INFO)
1749
+ << "[xds_client " << this << "] returning cached data for " << name;
1750
+ NotifyWatchersOnResourceChanged(resource_state.resource(), {watcher},
1751
+ ReadDelayHandle::NoWait());
1752
+ }
1753
+ if (!resource_state.failed_status().ok()) {
1394
1754
  GRPC_TRACE_LOG(xds_client, INFO)
1395
- << "[xds_client " << this << "] returning cached channel error for "
1396
- << name << ": " << channel_status;
1397
- work_serializer_.Schedule(
1398
- [watcher = std::move(watcher), status = std::move(channel_status)]()
1399
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) mutable {
1400
- watcher->OnError(std::move(status), ReadDelayHandle::NoWait());
1401
- },
1402
- DEBUG_LOCATION);
1755
+ << "[xds_client " << this << "] returning cached error for " << name
1756
+ << ": " << resource_state.failed_status();
1757
+ NotifyWatchersOnError(resource_state, ReadDelayHandle::NoWait(),
1758
+ {watcher});
1403
1759
  }
1404
1760
  }
1405
- work_serializer_.DrainQueue();
1761
+ // Make sure all channels are subscribing to the resource.
1762
+ for (const auto& channel : authority_state.xds_channels) {
1763
+ channel->SubscribeLocked(type, *resource_name);
1764
+ }
1765
+ // If the channel is not connected, report an error to the watcher.
1766
+ absl::Status channel_status = authority_state.xds_channels.back()->status();
1767
+ if (!channel_status.ok()) {
1768
+ GRPC_TRACE_LOG(xds_client, INFO)
1769
+ << "[xds_client " << this << "] returning cached channel error for "
1770
+ << name << ": " << channel_status;
1771
+ NotifyWatchersOnError(resource_state, ReadDelayHandle::NoWait(), {watcher},
1772
+ std::move(channel_status));
1773
+ }
1406
1774
  }
1407
1775
 
1408
1776
  void XdsClient::CancelResourceWatch(const XdsResourceType* type,
@@ -1420,34 +1788,63 @@ void XdsClient::CancelResourceWatch(const XdsResourceType* type,
1420
1788
  if (authority_it == authority_state_map_.end()) return;
1421
1789
  AuthorityState& authority_state = authority_it->second;
1422
1790
  // Find type map.
1423
- auto type_it = authority_state.resource_map.find(type);
1424
- if (type_it == authority_state.resource_map.end()) return;
1425
- auto& type_map = type_it->second;
1791
+ auto type_it = authority_state.type_map.find(type);
1792
+ if (type_it == authority_state.type_map.end()) return;
1793
+ auto& resource_map = type_it->second;
1426
1794
  // Find resource key.
1427
- auto resource_it = type_map.find(resource_name->key);
1428
- if (resource_it == type_map.end()) return;
1795
+ auto resource_it = resource_map.find(resource_name->key);
1796
+ if (resource_it == resource_map.end()) return;
1429
1797
  ResourceState& resource_state = resource_it->second;
1430
1798
  // Remove watcher.
1431
- resource_state.watchers.erase(watcher);
1432
- // Clean up empty map entries, if any.
1433
- if (resource_state.watchers.empty()) {
1434
- if (resource_state.ignored_deletion) {
1435
- LOG(INFO) << "[xds_client " << this
1436
- << "] unsubscribing from a resource for which we "
1437
- << "previously ignored a deletion: type " << type->type_url()
1438
- << " name " << name;
1439
- }
1799
+ resource_state.RemoveWatcher(watcher);
1800
+ // If this was the last watcher, clean up.
1801
+ if (!resource_state.HasWatchers()) {
1802
+ // Unsubscribe from this resource on all XdsChannels.
1440
1803
  for (const auto& xds_channel : authority_state.xds_channels) {
1441
1804
  xds_channel->UnsubscribeLocked(type, *resource_name,
1442
1805
  delay_unsubscription);
1443
1806
  }
1444
- type_map.erase(resource_it);
1445
- if (type_map.empty()) {
1446
- authority_state.resource_map.erase(type_it);
1447
- if (authority_state.resource_map.empty()) {
1448
- authority_state.xds_channels.clear();
1807
+ // Note: We wait to remove the cache entry until we actualle send
1808
+ // the unsubscription message on the ADS stream, so that if a watch is
1809
+ // stopped and then started again before we send the next request
1810
+ // for that resource type, we don't lose the cache entry without the
1811
+ // xDS server knowing it needs to re-send it.
1812
+ //
1813
+ // Note: Because the cache cleanup may have been triggered by the
1814
+ // unsubscription, it's no longer safe to access any of the
1815
+ // iterators that we have from above.
1816
+ }
1817
+ }
1818
+
1819
+ void XdsClient::MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(
1820
+ XdsChannel* xds_channel, const XdsResourceType* type) {
1821
+ for (auto authority_it = authority_state_map_.begin();
1822
+ authority_it != authority_state_map_.end();) {
1823
+ AuthorityState& authority_state = authority_it->second;
1824
+ if (authority_state.xds_channels.back() == xds_channel) {
1825
+ // Find type map.
1826
+ auto type_it = authority_state.type_map.find(type);
1827
+ if (type_it != authority_state.type_map.end()) {
1828
+ auto& resource_map = type_it->second;
1829
+ // Remove the cache entry for any resource without watchers.
1830
+ for (auto resource_it = resource_map.begin();
1831
+ resource_it != resource_map.end();) {
1832
+ ResourceState& resource_state = resource_it->second;
1833
+ if (!resource_state.HasWatchers()) {
1834
+ resource_map.erase(resource_it++);
1835
+ } else {
1836
+ ++resource_it;
1837
+ }
1838
+ }
1839
+ // Clean up empty entries in the map.
1840
+ if (resource_map.empty()) authority_state.type_map.erase(type_it);
1449
1841
  }
1450
1842
  }
1843
+ if (authority_state.type_map.empty()) {
1844
+ authority_state_map_.erase(authority_it++);
1845
+ } else {
1846
+ ++authority_it;
1847
+ }
1451
1848
  }
1452
1849
  }
1453
1850
 
@@ -1490,9 +1887,9 @@ absl::StatusOr<XdsClient::XdsResourceName> XdsClient::ParseXdsResourceName(
1490
1887
  }
1491
1888
  // Canonicalize order of query params.
1492
1889
  std::vector<URI::QueryParam> query_params;
1493
- for (const auto& p : uri->query_parameter_map()) {
1890
+ for (const auto& [key, value] : uri->query_parameter_map()) {
1494
1891
  query_params.emplace_back(
1495
- URI::QueryParam{std::string(p.first), std::string(p.second)});
1892
+ URI::QueryParam{std::string(key), std::string(value)});
1496
1893
  }
1497
1894
  return XdsResourceName{
1498
1895
  uri->authority(),
@@ -1503,7 +1900,7 @@ std::string XdsClient::ConstructFullXdsResourceName(
1503
1900
  absl::string_view authority, absl::string_view resource_type,
1504
1901
  const XdsResourceKey& key) {
1505
1902
  if (authority != kOldStyleAuthority) {
1506
- auto uri = URI::Create("xdstp", std::string(authority),
1903
+ auto uri = URI::Create("xdstp", /*user_info=*/"", std::string(authority),
1507
1904
  absl::StrCat("/", resource_type, "/", key.id),
1508
1905
  key.query_params, /*fragment=*/"");
1509
1906
  CHECK(uri.ok());
@@ -1515,94 +1912,65 @@ std::string XdsClient::ConstructFullXdsResourceName(
1515
1912
 
1516
1913
  void XdsClient::ResetBackoff() {
1517
1914
  MutexLock lock(&mu_);
1518
- for (auto& p : xds_channel_map_) {
1519
- p.second->ResetBackoff();
1915
+ for (auto& [_, xds_channel] : xds_channel_map_) {
1916
+ xds_channel->ResetBackoff();
1520
1917
  }
1521
1918
  }
1522
1919
 
1523
- void XdsClient::NotifyWatchersOnErrorLocked(
1524
- const std::map<ResourceWatcherInterface*,
1525
- RefCountedPtr<ResourceWatcherInterface>>& watchers,
1526
- absl::Status status, RefCountedPtr<ReadDelayHandle> read_delay_handle) {
1920
+ absl::Status XdsClient::AppendNodeToStatus(const absl::Status& status) const {
1527
1921
  const auto* node = bootstrap_->node();
1528
- if (node != nullptr) {
1529
- status = absl::Status(
1530
- status.code(),
1531
- absl::StrCat(status.message(), " (node ID:", node->id(), ")"));
1532
- }
1533
- work_serializer_.Schedule(
1534
- [watchers, status = std::move(status),
1922
+ if (node == nullptr) return status;
1923
+ return absl::Status(
1924
+ status.code(), absl::StrCat(status.message(),
1925
+ " (node ID:", bootstrap_->node()->id(), ")"));
1926
+ }
1927
+
1928
+ void XdsClient::NotifyWatchersOnResourceChanged(
1929
+ absl::StatusOr<std::shared_ptr<const XdsResourceType::ResourceData>>
1930
+ resource,
1931
+ WatcherSet watchers, RefCountedPtr<ReadDelayHandle> read_delay_handle) {
1932
+ if (!resource.ok()) resource = AppendNodeToStatus(resource.status());
1933
+ work_serializer_.Run(
1934
+ [watchers = std::move(watchers), resource = std::move(resource),
1535
1935
  read_delay_handle = std::move(read_delay_handle)]()
1536
1936
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1537
- for (const auto& p : watchers) {
1538
- p.first->OnError(status, read_delay_handle);
1937
+ for (const auto& watcher : watchers) {
1938
+ watcher->OnGenericResourceChanged(resource, read_delay_handle);
1539
1939
  }
1540
1940
  },
1541
1941
  DEBUG_LOCATION);
1542
1942
  }
1543
1943
 
1544
- void XdsClient::NotifyWatchersOnResourceDoesNotExist(
1545
- const std::map<ResourceWatcherInterface*,
1546
- RefCountedPtr<ResourceWatcherInterface>>& watchers,
1944
+ void XdsClient::NotifyWatchersOnAmbientError(
1945
+ absl::Status status, WatcherSet watchers,
1547
1946
  RefCountedPtr<ReadDelayHandle> read_delay_handle) {
1548
- work_serializer_.Schedule(
1549
- [watchers, read_delay_handle = std::move(read_delay_handle)]()
1947
+ if (!status.ok()) status = AppendNodeToStatus(status);
1948
+ work_serializer_.Run(
1949
+ [watchers = std::move(watchers), status = std::move(status),
1950
+ read_delay_handle = std::move(read_delay_handle)]()
1550
1951
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1551
- for (const auto& p : watchers) {
1552
- p.first->OnResourceDoesNotExist(read_delay_handle);
1952
+ for (const auto& watcher : watchers) {
1953
+ watcher->OnAmbientError(status, read_delay_handle);
1553
1954
  }
1554
1955
  },
1555
1956
  DEBUG_LOCATION);
1556
1957
  }
1557
1958
 
1558
- namespace {
1559
-
1560
- google_protobuf_Timestamp* EncodeTimestamp(Timestamp value, upb_Arena* arena) {
1561
- google_protobuf_Timestamp* timestamp = google_protobuf_Timestamp_new(arena);
1562
- gpr_timespec timespec = value.as_timespec(GPR_CLOCK_REALTIME);
1563
- google_protobuf_Timestamp_set_seconds(timestamp, timespec.tv_sec);
1564
- google_protobuf_Timestamp_set_nanos(timestamp, timespec.tv_nsec);
1565
- return timestamp;
1566
- }
1567
-
1568
- void FillGenericXdsConfig(
1569
- const XdsApi::ResourceMetadata& metadata, upb_StringView type_url,
1570
- upb_StringView resource_name, upb_Arena* arena,
1571
- envoy_service_status_v3_ClientConfig_GenericXdsConfig* entry) {
1572
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_type_url(entry,
1573
- type_url);
1574
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_name(entry,
1575
- resource_name);
1576
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_client_status(
1577
- entry, metadata.client_status);
1578
- if (!metadata.serialized_proto.empty()) {
1579
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_version_info(
1580
- entry, StdStringToUpbString(metadata.version));
1581
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_last_updated(
1582
- entry, EncodeTimestamp(metadata.update_time, arena));
1583
- auto* any_field =
1584
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_xds_config(
1585
- entry, arena);
1586
- google_protobuf_Any_set_type_url(any_field, type_url);
1587
- google_protobuf_Any_set_value(
1588
- any_field, StdStringToUpbString(metadata.serialized_proto));
1589
- }
1590
- if (metadata.client_status == XdsApi::ResourceMetadata::NACKED) {
1591
- auto* update_failure_state = envoy_admin_v3_UpdateFailureState_new(arena);
1592
- envoy_admin_v3_UpdateFailureState_set_details(
1593
- update_failure_state, StdStringToUpbString(metadata.failed_details));
1594
- envoy_admin_v3_UpdateFailureState_set_version_info(
1595
- update_failure_state, StdStringToUpbString(metadata.failed_version));
1596
- envoy_admin_v3_UpdateFailureState_set_last_update_attempt(
1597
- update_failure_state,
1598
- EncodeTimestamp(metadata.failed_update_time, arena));
1599
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_error_state(
1600
- entry, update_failure_state);
1959
+ void XdsClient::NotifyWatchersOnError(
1960
+ const ResourceState& resource_state,
1961
+ RefCountedPtr<ReadDelayHandle> read_delay_handle, WatcherSet watchers,
1962
+ absl::Status status) {
1963
+ if (watchers.empty()) watchers = resource_state.watchers();
1964
+ if (status.ok()) status = resource_state.failed_status();
1965
+ if (!resource_state.HasResource()) {
1966
+ NotifyWatchersOnResourceChanged(std::move(status), std::move(watchers),
1967
+ std::move(read_delay_handle));
1968
+ } else {
1969
+ NotifyWatchersOnAmbientError(std::move(status), std::move(watchers),
1970
+ std::move(read_delay_handle));
1601
1971
  }
1602
1972
  }
1603
1973
 
1604
- } // namespace
1605
-
1606
1974
  void XdsClient::DumpClientConfig(
1607
1975
  std::set<std::string>* string_pool, upb_Arena* arena,
1608
1976
  envoy_service_status_v3_ClientConfig* client_config) {
@@ -1610,70 +1978,51 @@ void XdsClient::DumpClientConfig(
1610
1978
  // Fill-in the node information
1611
1979
  auto* node =
1612
1980
  envoy_service_status_v3_ClientConfig_mutable_node(client_config, arena);
1613
- api_.PopulateNode(node, arena);
1981
+ PopulateXdsNode(bootstrap_->node(), user_agent_name_, user_agent_version_,
1982
+ node, arena);
1614
1983
  // Dump each resource.
1615
- for (const auto& a : authority_state_map_) { // authority
1616
- const std::string& authority = a.first;
1617
- for (const auto& t : a.second.resource_map) { // type
1618
- const XdsResourceType* type = t.first;
1984
+ for (const auto& [authority, authority_state] : authority_state_map_) {
1985
+ for (const auto& [type, resource_map] : authority_state.type_map) {
1619
1986
  auto it =
1620
1987
  string_pool
1621
1988
  ->emplace(absl::StrCat("type.googleapis.com/", type->type_url()))
1622
1989
  .first;
1623
1990
  upb_StringView type_url = StdStringToUpbString(*it);
1624
- for (const auto& r : t.second) { // resource id
1991
+ for (const auto& [resource_key, resource_state] : resource_map) {
1992
+ if (!resource_state.HasWatchers()) continue;
1625
1993
  auto it2 = string_pool
1626
1994
  ->emplace(ConstructFullXdsResourceName(
1627
- authority, type->type_url(), r.first))
1995
+ authority, type->type_url(), resource_key))
1628
1996
  .first;
1629
1997
  upb_StringView resource_name = StdStringToUpbString(*it2);
1630
1998
  envoy_service_status_v3_ClientConfig_GenericXdsConfig* entry =
1631
1999
  envoy_service_status_v3_ClientConfig_add_generic_xds_configs(
1632
2000
  client_config, arena);
1633
- FillGenericXdsConfig(r.second.meta, type_url, resource_name, arena,
1634
- entry);
2001
+ resource_state.FillGenericXdsConfig(type_url, resource_name, arena,
2002
+ entry);
1635
2003
  }
1636
2004
  }
1637
2005
  }
1638
2006
  }
1639
2007
 
1640
- namespace {
1641
-
1642
- absl::string_view CacheStateForEntry(const XdsApi::ResourceMetadata& metadata,
1643
- bool resource_cached) {
1644
- switch (metadata.client_status) {
1645
- case XdsApi::ResourceMetadata::REQUESTED:
1646
- return "requested";
1647
- case XdsApi::ResourceMetadata::DOES_NOT_EXIST:
1648
- return "does_not_exist";
1649
- case XdsApi::ResourceMetadata::ACKED:
1650
- return "acked";
1651
- case XdsApi::ResourceMetadata::NACKED:
1652
- return resource_cached ? "nacked_but_cached" : "nacked";
1653
- }
1654
- Crash("unknown resource state");
1655
- }
1656
-
1657
- } // namespace
1658
-
1659
2008
  void XdsClient::ReportResourceCounts(
1660
2009
  absl::FunctionRef<void(const ResourceCountLabels&, uint64_t)> func) {
1661
2010
  ResourceCountLabels labels;
1662
- for (const auto& a : authority_state_map_) { // authority
1663
- labels.xds_authority = a.first;
1664
- for (const auto& t : a.second.resource_map) { // type
1665
- labels.resource_type = t.first->type_url();
2011
+ for (const auto& [authority, authority_state] : authority_state_map_) {
2012
+ labels.xds_authority = authority;
2013
+ for (const auto& [type, resource_map] : authority_state.type_map) {
2014
+ labels.resource_type = type->type_url();
1666
2015
  // Count the number of entries in each state.
1667
2016
  std::map<absl::string_view, uint64_t> counts;
1668
- for (const auto& r : t.second) { // resource id
1669
- absl::string_view cache_state =
1670
- CacheStateForEntry(r.second.meta, r.second.resource != nullptr);
1671
- ++counts[cache_state];
2017
+ for (const auto& [_, resource_state] : resource_map) {
2018
+ if (resource_state.HasWatchers()) {
2019
+ ++counts[resource_state.CacheStateString()];
2020
+ }
1672
2021
  }
1673
2022
  // Report the count for each state.
1674
- for (const auto& c : counts) {
1675
- labels.cache_state = c.first;
1676
- func(labels, c.second);
2023
+ for (const auto& [state, count] : counts) {
2024
+ labels.cache_state = state;
2025
+ func(labels, count);
1677
2026
  }
1678
2027
  }
1679
2028
  }
@@ -1681,8 +2030,8 @@ void XdsClient::ReportResourceCounts(
1681
2030
 
1682
2031
  void XdsClient::ReportServerConnections(
1683
2032
  absl::FunctionRef<void(absl::string_view, bool)> func) {
1684
- for (const auto& p : xds_channel_map_) {
1685
- func(p.second->server_uri(), p.second->status().ok());
2033
+ for (const auto& [_, xds_channel] : xds_channel_map_) {
2034
+ func(xds_channel->server_uri(), xds_channel->status().ok());
1686
2035
  }
1687
2036
  }
1688
2037