grpc 1.66.0 → 1.71.0

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 (3048) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +316 -329
  3. data/include/grpc/compression.h +1 -2
  4. data/include/grpc/credentials.h +2 -3
  5. data/include/grpc/event_engine/README.md +1 -1
  6. data/include/grpc/event_engine/endpoint_config.h +7 -7
  7. data/include/grpc/event_engine/event_engine.h +56 -14
  8. data/include/grpc/event_engine/extensible.h +2 -2
  9. data/include/grpc/event_engine/internal/memory_allocator_impl.h +4 -4
  10. data/include/grpc/event_engine/internal/slice_cast.h +1 -1
  11. data/include/grpc/event_engine/memory_allocator.h +3 -4
  12. data/include/grpc/event_engine/memory_request.h +1 -2
  13. data/include/grpc/event_engine/slice.h +3 -5
  14. data/include/grpc/event_engine/slice_buffer.h +6 -8
  15. data/include/grpc/grpc.h +1 -2
  16. data/include/grpc/grpc_audit_logging.h +3 -3
  17. data/include/grpc/grpc_crl_provider.h +5 -5
  18. data/include/grpc/grpc_posix.h +1 -2
  19. data/include/grpc/grpc_security.h +1 -2
  20. data/include/grpc/impl/call.h +2 -2
  21. data/include/grpc/impl/channel_arg_names.h +3 -1
  22. data/include/grpc/impl/grpc_types.h +1 -2
  23. data/include/grpc/impl/slice_type.h +1 -2
  24. data/include/grpc/passive_listener.h +2 -2
  25. data/include/grpc/status.h +1 -1
  26. data/include/grpc/support/alloc.h +1 -2
  27. data/include/grpc/support/atm.h +0 -13
  28. data/include/grpc/support/json.h +17 -18
  29. data/include/grpc/support/log.h +35 -34
  30. data/include/grpc/support/metrics.h +7 -3
  31. data/include/grpc/support/port_platform.h +6 -1
  32. data/include/grpc/support/sync_generic.h +2 -4
  33. data/include/grpc/support/sync_posix.h +1 -2
  34. data/include/grpc/support/time.h +1 -2
  35. data/src/core/call/request_buffer.cc +224 -0
  36. data/src/core/call/request_buffer.h +192 -0
  37. data/src/core/channelz/channel_trace.cc +5 -6
  38. data/src/core/channelz/channel_trace.h +5 -7
  39. data/src/core/channelz/channelz.cc +7 -9
  40. data/src/core/channelz/channelz.h +11 -32
  41. data/src/core/channelz/channelz_registry.cc +6 -15
  42. data/src/core/channelz/channelz_registry.h +4 -5
  43. data/src/core/client_channel/backup_poller.cc +21 -11
  44. data/src/core/client_channel/client_channel.cc +51 -55
  45. data/src/core/client_channel/client_channel.h +7 -5
  46. data/src/core/client_channel/client_channel_args.h +21 -0
  47. data/src/core/client_channel/client_channel_factory.cc +2 -2
  48. data/src/core/client_channel/client_channel_factory.h +1 -2
  49. data/src/core/client_channel/client_channel_filter.cc +91 -162
  50. data/src/core/client_channel/client_channel_filter.h +23 -21
  51. data/src/core/client_channel/client_channel_internal.h +2 -5
  52. data/src/core/client_channel/client_channel_plugin.cc +3 -4
  53. data/src/core/client_channel/client_channel_service_config.cc +3 -4
  54. data/src/core/client_channel/client_channel_service_config.h +9 -11
  55. data/src/core/client_channel/config_selector.h +4 -8
  56. data/src/core/client_channel/connector.h +3 -3
  57. data/src/core/client_channel/direct_channel.cc +4 -4
  58. data/src/core/client_channel/direct_channel.h +1 -1
  59. data/src/core/client_channel/dynamic_filters.cc +10 -10
  60. data/src/core/client_channel/dynamic_filters.h +8 -7
  61. data/src/core/client_channel/global_subchannel_pool.cc +2 -2
  62. data/src/core/client_channel/global_subchannel_pool.h +2 -3
  63. data/src/core/client_channel/lb_metadata.cc +7 -8
  64. data/src/core/client_channel/lb_metadata.h +5 -6
  65. data/src/core/client_channel/load_balanced_call_destination.cc +6 -7
  66. data/src/core/client_channel/load_balanced_call_destination.h +0 -1
  67. data/src/core/client_channel/local_subchannel_pool.cc +2 -5
  68. data/src/core/client_channel/local_subchannel_pool.h +1 -1
  69. data/src/core/client_channel/retry_filter.cc +6 -8
  70. data/src/core/client_channel/retry_filter.h +5 -9
  71. data/src/core/client_channel/retry_filter_legacy_call_data.cc +197 -281
  72. data/src/core/client_channel/retry_filter_legacy_call_data.h +18 -19
  73. data/src/core/client_channel/retry_interceptor.cc +408 -0
  74. data/src/core/client_channel/retry_interceptor.h +157 -0
  75. data/src/core/client_channel/retry_service_config.cc +7 -9
  76. data/src/core/client_channel/retry_service_config.h +19 -8
  77. data/src/core/client_channel/retry_throttle.cc +34 -20
  78. data/src/core/client_channel/retry_throttle.h +6 -9
  79. data/src/core/client_channel/subchannel.cc +76 -118
  80. data/src/core/client_channel/subchannel.h +21 -20
  81. data/src/core/client_channel/subchannel_interface_internal.h +1 -1
  82. data/src/core/client_channel/subchannel_pool_interface.cc +1 -3
  83. data/src/core/client_channel/subchannel_pool_interface.h +2 -3
  84. data/src/core/client_channel/subchannel_stream_client.cc +7 -11
  85. data/src/core/client_channel/subchannel_stream_client.h +11 -13
  86. data/src/core/config/config_vars.cc +152 -0
  87. data/src/core/config/config_vars.h +129 -0
  88. data/src/core/config/config_vars_non_generated.cc +49 -0
  89. data/src/core/config/core_configuration.cc +111 -0
  90. data/src/core/config/core_configuration.h +242 -0
  91. data/src/core/config/load_config.cc +78 -0
  92. data/src/core/config/load_config.h +54 -0
  93. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +21 -29
  94. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +7 -8
  95. data/src/core/ext/filters/census/grpc_context.cc +1 -2
  96. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +1 -2
  97. data/src/core/ext/filters/channel_idle/idle_filter_state.h +0 -1
  98. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +17 -20
  99. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +6 -8
  100. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +20 -25
  101. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +7 -9
  102. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +3 -4
  103. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +4 -7
  104. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +198 -0
  105. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +97 -0
  106. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +80 -0
  107. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +86 -0
  108. data/src/core/ext/filters/http/client/http_client_filter.cc +13 -13
  109. data/src/core/ext/filters/http/client/http_client_filter.h +4 -5
  110. data/src/core/ext/filters/http/client_authority_filter.cc +13 -17
  111. data/src/core/ext/filters/http/client_authority_filter.h +6 -7
  112. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -2
  113. data/src/core/ext/filters/http/message_compress/compression_filter.cc +49 -41
  114. data/src/core/ext/filters/http/message_compress/compression_filter.h +19 -17
  115. data/src/core/ext/filters/http/server/http_server_filter.cc +16 -18
  116. data/src/core/ext/filters/http/server/http_server_filter.h +4 -5
  117. data/src/core/ext/filters/message_size/message_size_filter.cc +32 -39
  118. data/src/core/ext/filters/message_size/message_size_filter.h +22 -25
  119. data/src/core/ext/filters/rbac/rbac_filter.cc +6 -13
  120. data/src/core/ext/filters/rbac/rbac_filter.h +6 -8
  121. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +17 -11
  122. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +2 -4
  123. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +12 -14
  124. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +6 -8
  125. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +3 -4
  126. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +5 -7
  127. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -3
  128. data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -2
  129. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +21 -26
  130. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  131. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +762 -191
  132. data/src/core/ext/transport/chttp2/server/chttp2_server.h +191 -15
  133. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  134. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -3
  135. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -7
  136. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
  137. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +53 -0
  138. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +72 -0
  139. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +500 -394
  140. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -13
  141. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -2
  142. data/src/core/ext/transport/chttp2/transport/decode_huff.h +4 -4
  143. data/src/core/ext/transport/chttp2/transport/flow_control.cc +7 -10
  144. data/src/core/ext/transport/chttp2/transport/flow_control.h +5 -8
  145. data/src/core/ext/transport/chttp2/transport/frame.cc +24 -7
  146. data/src/core/ext/transport/chttp2/transport/frame.h +16 -7
  147. data/src/core/ext/transport/chttp2/transport/frame_data.cc +17 -14
  148. data/src/core/ext/transport/chttp2/transport/frame_data.h +2 -4
  149. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +11 -14
  150. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
  151. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +8 -10
  152. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
  153. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -9
  154. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -2
  155. data/src/core/ext/transport/chttp2/transport/frame_security.cc +80 -0
  156. data/src/core/ext/transport/chttp2/transport/frame_security.h +44 -0
  157. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +29 -16
  158. data/src/core/ext/transport/chttp2/transport/frame_settings.h +3 -4
  159. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +21 -4
  160. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -2
  161. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
  162. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +12 -14
  163. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +6 -8
  164. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -3
  165. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +4 -5
  166. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -4
  167. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +6 -9
  168. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +39 -40
  169. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +9 -12
  170. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +38 -8
  171. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +29 -10
  172. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +13 -5
  173. data/src/core/ext/transport/chttp2/transport/http2_settings.h +12 -6
  174. data/src/core/ext/transport/chttp2/transport/internal.h +58 -110
  175. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +1 -0
  176. data/src/core/ext/transport/chttp2/transport/parsing.cc +79 -55
  177. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +4 -4
  178. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +3 -3
  179. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +4 -5
  180. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +5 -7
  181. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +6 -7
  182. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +4 -6
  183. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
  184. data/src/core/ext/transport/chttp2/transport/stream_lists.h +65 -0
  185. data/src/core/ext/transport/chttp2/transport/varint.cc +6 -6
  186. data/src/core/ext/transport/chttp2/transport/varint.h +1 -3
  187. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -3
  188. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +3 -4
  189. data/src/core/ext/transport/chttp2/transport/writing.cc +49 -55
  190. data/src/core/ext/transport/inproc/inproc_transport.cc +7 -10
  191. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +27 -24
  192. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +35 -4
  193. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +25 -18
  194. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +10 -4
  195. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +36 -4
  196. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +24 -18
  197. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +9 -4
  198. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +39 -4
  199. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +29 -22
  200. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +10 -4
  201. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +140 -5
  202. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +105 -84
  203. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +24 -4
  204. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +10 -4
  205. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +8 -4
  206. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +7 -4
  207. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +17 -4
  208. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +12 -8
  209. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +7 -4
  210. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +5 -4
  211. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +4 -1
  212. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +6 -4
  213. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +5 -4
  214. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -1
  215. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +6 -4
  216. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +5 -4
  217. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +4 -1
  218. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +6 -4
  219. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +35 -4
  220. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +19 -14
  221. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +7 -4
  222. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +7 -4
  223. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +7 -4
  224. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +6 -4
  225. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +5 -4
  226. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +7 -1
  227. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +5 -4
  228. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +7 -6
  229. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +10 -6
  230. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +6 -4
  231. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +61 -4
  232. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +66 -48
  233. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +21 -4
  234. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +183 -4
  235. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +131 -106
  236. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +28 -4
  237. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +31 -4
  238. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +22 -17
  239. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +8 -4
  240. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +251 -40
  241. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +169 -140
  242. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +30 -4
  243. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +9 -4
  244. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +8 -5
  245. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +6 -4
  246. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +56 -4
  247. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +30 -27
  248. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +6 -4
  249. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +96 -4
  250. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +80 -63
  251. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +20 -4
  252. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +44 -4
  253. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +36 -26
  254. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +13 -4
  255. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +9 -4
  256. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +8 -5
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +6 -4
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +225 -4
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +138 -81
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +36 -4
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +46 -4
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +36 -27
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +12 -4
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +7 -4
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +7 -4
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +6 -4
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +7 -4
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +7 -4
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +6 -4
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +10 -4
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +8 -4
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +7 -4
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +71 -4
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +61 -45
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +19 -4
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +92 -4
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +55 -44
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +14 -4
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +12 -4
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +8 -5
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +6 -4
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +7 -4
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +7 -4
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +6 -4
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +196 -10
  286. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +101 -77
  287. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +21 -4
  288. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +7 -4
  289. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +8 -4
  290. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +7 -4
  291. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +12 -4
  292. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +9 -5
  293. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +7 -4
  294. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +151 -0
  295. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +60 -0
  296. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +32 -0
  297. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +238 -25
  298. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +73 -21
  299. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +13 -4
  300. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +16 -4
  301. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +11 -7
  302. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +7 -4
  303. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +9 -4
  304. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +8 -5
  305. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +6 -4
  306. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +35 -4
  307. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +23 -17
  308. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +9 -4
  309. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +48 -4
  310. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +41 -32
  311. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +12 -4
  312. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +44 -4
  313. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +27 -19
  314. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +11 -4
  315. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +7 -4
  316. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +7 -4
  317. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +6 -4
  318. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +83 -4
  319. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +53 -41
  320. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +15 -4
  321. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +69 -106
  322. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +48 -60
  323. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +11 -5
  324. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +112 -4
  325. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +41 -16
  326. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +6 -4
  327. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +11 -4
  328. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +10 -6
  329. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +7 -4
  330. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +9 -4
  331. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +8 -5
  332. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +6 -4
  333. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +33 -4
  334. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +34 -24
  335. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +13 -4
  336. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +53 -5
  337. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +41 -29
  338. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +15 -4
  339. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +248 -4
  340. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +106 -63
  341. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +18 -4
  342. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +52 -4
  343. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +24 -19
  344. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +8 -4
  345. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +688 -8
  346. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +374 -257
  347. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +67 -4
  348. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +14 -4
  349. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +13 -8
  350. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +8 -4
  351. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +69 -4
  352. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +59 -45
  353. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +17 -4
  354. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +9 -4
  355. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +11 -7
  356. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +7 -4
  357. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +7 -4
  358. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +7 -4
  359. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +6 -4
  360. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +9 -4
  361. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +11 -7
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +7 -4
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +7 -4
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +7 -4
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +6 -4
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +16 -4
  367. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +10 -7
  368. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +6 -4
  369. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +7 -4
  370. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +7 -4
  371. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +6 -4
  372. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +11 -4
  373. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +12 -8
  374. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +7 -4
  375. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +5 -6
  376. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +3 -2
  377. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +5 -5
  378. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +13 -4
  379. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +13 -9
  380. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +7 -4
  381. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +7 -4
  382. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +7 -4
  383. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +6 -4
  384. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +102 -4
  385. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +72 -54
  386. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +21 -4
  387. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +5 -4
  388. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +4 -1
  389. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +6 -4
  390. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +17 -4
  391. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +18 -11
  392. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +10 -4
  393. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +24 -4
  394. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +18 -13
  395. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +8 -4
  396. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +444 -0
  397. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +135 -0
  398. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +38 -0
  399. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +15 -4
  400. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +14 -10
  401. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +7 -4
  402. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +21 -4
  403. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +14 -10
  404. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +7 -4
  405. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +9 -4
  406. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +11 -7
  407. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +7 -4
  408. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +197 -4
  409. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +137 -113
  410. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +26 -4
  411. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +7 -4
  412. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +7 -4
  413. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +6 -4
  414. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +77 -4
  415. 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 +25 -11
  416. 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 +6 -4
  417. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +21 -4
  418. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +24 -17
  419. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +10 -4
  420. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +5 -4
  421. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +4 -1
  422. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +6 -4
  423. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +15 -4
  424. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +11 -8
  425. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +6 -4
  426. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +7 -4
  427. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +7 -4
  428. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +6 -4
  429. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +105 -0
  430. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +51 -0
  431. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +32 -0
  432. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -4
  433. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +3 -1
  434. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +5 -4
  435. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +59 -4
  436. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +42 -32
  437. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +13 -4
  438. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +17 -4
  439. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +18 -13
  440. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +8 -4
  441. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +179 -28
  442. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +79 -61
  443. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +12 -4
  444. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +49 -11
  445. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +17 -11
  446. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +7 -4
  447. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +42 -4
  448. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +32 -26
  449. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +9 -4
  450. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +5 -4
  451. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +4 -1
  452. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +6 -4
  453. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +337 -22
  454. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +102 -61
  455. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +21 -4
  456. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +14 -4
  457. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +12 -8
  458. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +7 -4
  459. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +47 -5
  460. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +32 -25
  461. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +10 -4
  462. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +7 -4
  463. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +7 -4
  464. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +6 -4
  465. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +14 -4
  466. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +14 -8
  467. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +9 -4
  468. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +142 -0
  469. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +55 -0
  470. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +32 -0
  471. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +40 -4
  472. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +13 -7
  473. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +6 -4
  474. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +5 -4
  475. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +8 -1
  476. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +10 -4
  477. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +12 -4
  478. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +9 -5
  479. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +7 -4
  480. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +12 -4
  481. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +8 -5
  482. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +6 -4
  483. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +7 -4
  484. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +7 -4
  485. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +6 -4
  486. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +7 -4
  487. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +7 -4
  488. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +6 -4
  489. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +11 -4
  490. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +15 -10
  491. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +8 -4
  492. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +5 -4
  493. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +5 -1
  494. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +7 -4
  495. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +14 -4
  496. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +12 -8
  497. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +7 -4
  498. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +12 -4
  499. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +9 -5
  500. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +7 -4
  501. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +22 -4
  502. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +20 -14
  503. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +9 -4
  504. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +18 -4
  505. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +19 -10
  506. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +12 -4
  507. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +17 -4
  508. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +18 -11
  509. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +10 -4
  510. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +9 -4
  511. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +10 -5
  512. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +8 -4
  513. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +5 -4
  514. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +3 -1
  515. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +5 -4
  516. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +5 -4
  517. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +4 -1
  518. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +6 -4
  519. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +5 -4
  520. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +5 -1
  521. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +7 -4
  522. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +5 -4
  523. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +6 -1
  524. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +8 -4
  525. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +9 -4
  526. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +9 -5
  527. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +7 -4
  528. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +5 -4
  529. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +3 -1
  530. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +5 -4
  531. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +5 -4
  532. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +4 -1
  533. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +6 -4
  534. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +9 -4
  535. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +8 -5
  536. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +6 -4
  537. data/src/core/ext/upb-gen/google/api/annotations.upb.h +7 -6
  538. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +5 -2
  539. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +5 -4
  540. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +103 -4
  541. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +82 -56
  542. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +18 -4
  543. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +482 -26
  544. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +160 -68
  545. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +23 -4
  546. data/src/core/ext/upb-gen/google/api/http.upb.h +18 -4
  547. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +13 -8
  548. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +8 -4
  549. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +10 -4
  550. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +7 -4
  551. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +6 -4
  552. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +6 -4
  553. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +4 -1
  554. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +6 -4
  555. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +202 -4
  556. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +241 -206
  557. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +55 -21
  558. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +6 -4
  559. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +4 -1
  560. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +6 -4
  561. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +6 -4
  562. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +4 -1
  563. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +6 -4
  564. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +27 -4
  565. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +20 -14
  566. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +9 -4
  567. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +6 -4
  568. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +4 -1
  569. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +6 -4
  570. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +6 -4
  571. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +12 -1
  572. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +14 -4
  573. data/src/core/ext/upb-gen/google/rpc/status.upb.h +10 -4
  574. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +7 -4
  575. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +6 -4
  576. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +13 -4
  577. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +9 -5
  578. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +7 -4
  579. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +63 -4
  580. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +51 -37
  581. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +17 -4
  582. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +10 -4
  583. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +9 -5
  584. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +7 -4
  585. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +6 -4
  586. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +5 -1
  587. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +7 -4
  588. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +29 -4
  589. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +31 -20
  590. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +14 -4
  591. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  592. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +9 -4
  593. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +8 -4
  594. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +57 -4
  595. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +33 -22
  596. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +14 -4
  597. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +15 -14
  598. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +22 -12
  599. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +8 -4
  600. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +7 -6
  601. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +10 -6
  602. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +6 -4
  603. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +5 -4
  604. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +4 -1
  605. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +5 -4
  606. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +7 -6
  607. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +10 -6
  608. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +6 -4
  609. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +7 -6
  610. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +10 -6
  611. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +6 -4
  612. data/src/core/ext/upb-gen/validate/validate.upb.h +89 -6
  613. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +116 -87
  614. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +29 -5
  615. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +15 -14
  616. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +22 -12
  617. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +8 -4
  618. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +7 -6
  619. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +10 -6
  620. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +6 -4
  621. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +5 -4
  622. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +4 -1
  623. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +5 -4
  624. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +11 -10
  625. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +20 -11
  626. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +9 -4
  627. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +7 -6
  628. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +10 -6
  629. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +6 -4
  630. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +5 -4
  631. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +4 -1
  632. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +6 -4
  633. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +7 -4
  634. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +7 -4
  635. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +6 -4
  636. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +11 -4
  637. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +12 -8
  638. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +7 -4
  639. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +11 -4
  640. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +8 -4
  641. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +7 -4
  642. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +7 -4
  643. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +7 -4
  644. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +6 -4
  645. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +9 -4
  646. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +8 -5
  647. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +6 -4
  648. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +14 -4
  649. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +12 -8
  650. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +7 -4
  651. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +7 -4
  652. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +7 -4
  653. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +6 -4
  654. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +23 -4
  655. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +12 -6
  656. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +9 -4
  657. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +7 -4
  658. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +7 -4
  659. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +6 -4
  660. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +7 -4
  661. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +7 -4
  662. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +6 -4
  663. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +12 -4
  664. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +11 -7
  665. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +7 -4
  666. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +5 -4
  667. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +4 -1
  668. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +6 -4
  669. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +17 -4
  670. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +12 -8
  671. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +7 -4
  672. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +63 -4
  673. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +55 -43
  674. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +15 -4
  675. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +41 -4
  676. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +30 -22
  677. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +11 -4
  678. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +7 -4
  679. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +8 -4
  680. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +7 -4
  681. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +12 -4
  682. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +11 -7
  683. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +7 -4
  684. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +13 -4
  685. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +13 -9
  686. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +7 -4
  687. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +6 -4
  688. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +6 -1
  689. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +8 -4
  690. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +7 -4
  691. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +7 -4
  692. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +6 -4
  693. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +2 -1
  694. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -4
  695. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +2 -1
  696. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -4
  697. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +2 -1
  698. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -4
  699. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +13 -11
  700. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -4
  701. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +2 -1
  702. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -4
  703. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +2 -1
  704. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -4
  705. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +2 -1
  706. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -4
  707. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +2 -1
  708. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -4
  709. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +2 -1
  710. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -4
  711. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +8 -5
  712. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -4
  713. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +2 -1
  714. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -4
  715. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +2 -1
  716. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -4
  717. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +2 -1
  718. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -4
  719. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -1
  720. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -4
  721. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -1
  722. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -4
  723. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -1
  724. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -4
  725. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +420 -414
  726. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +5 -4
  727. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +2 -1
  728. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -4
  729. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -1
  730. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -4
  731. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +2 -1
  732. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -4
  733. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +2 -1
  734. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -4
  735. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +2 -1
  736. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -4
  737. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +163 -154
  738. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +10 -4
  739. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +2 -1
  740. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -4
  741. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +2 -1
  742. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -4
  743. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +2 -1
  744. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -4
  745. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +2 -1
  746. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -4
  747. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +2 -1
  748. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -4
  749. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +2 -1
  750. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -4
  751. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +2 -1
  752. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -4
  753. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +2 -1
  754. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -4
  755. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +272 -262
  756. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -4
  757. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -1
  758. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -4
  759. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +2 -1
  760. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -4
  761. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +46 -0
  762. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +33 -0
  763. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +31 -20
  764. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +20 -4
  765. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -1
  766. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -4
  767. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -1
  768. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -4
  769. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -1
  770. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -4
  771. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +2 -1
  772. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -4
  773. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -1
  774. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +5 -4
  775. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +2 -1
  776. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -4
  777. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +2 -1
  778. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -4
  779. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +60 -66
  780. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -9
  781. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +75 -64
  782. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -4
  783. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -1
  784. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -4
  785. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +2 -1
  786. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -4
  787. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +2 -1
  788. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -4
  789. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +51 -49
  790. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -4
  791. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +119 -101
  792. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +10 -4
  793. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +2 -1
  794. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -4
  795. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +919 -899
  796. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +15 -4
  797. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +2 -1
  798. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -4
  799. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +2 -1
  800. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -4
  801. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +2 -1
  802. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +5 -4
  803. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +2 -1
  804. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -4
  805. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -1
  806. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -4
  807. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +2 -1
  808. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -4
  809. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +2 -1
  810. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -4
  811. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +2 -1
  812. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -4
  813. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +2 -1
  814. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -4
  815. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +17 -19
  816. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -4
  817. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +2 -1
  818. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -4
  819. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +2 -1
  820. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -4
  821. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +2 -1
  822. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -4
  823. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -1
  824. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -4
  825. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -1
  826. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -4
  827. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -1
  828. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -4
  829. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +87 -0
  830. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +48 -0
  831. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +35 -34
  832. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -4
  833. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -1
  834. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -4
  835. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +2 -1
  836. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -4
  837. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +462 -458
  838. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -4
  839. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +2 -1
  840. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -4
  841. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +50 -0
  842. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +33 -0
  843. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -1
  844. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -4
  845. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +97 -96
  846. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -4
  847. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -1
  848. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -4
  849. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +204 -192
  850. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -4
  851. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +21 -18
  852. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -4
  853. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +2 -1
  854. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -4
  855. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +2 -1
  856. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -4
  857. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +150 -136
  858. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +10 -4
  859. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -1
  860. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -4
  861. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +25 -23
  862. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -4
  863. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +2 -1
  864. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -4
  865. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +2 -1
  866. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -4
  867. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +41 -0
  868. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +33 -0
  869. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +28 -20
  870. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -4
  871. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  872. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  873. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +2 -1
  874. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -4
  875. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +2 -1
  876. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -4
  877. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +2 -1
  878. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -4
  879. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +2 -1
  880. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -4
  881. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +2 -1
  882. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -4
  883. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +2 -1
  884. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -4
  885. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +2 -1
  886. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -4
  887. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +2 -1
  888. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -4
  889. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +2 -1
  890. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -4
  891. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +2 -1
  892. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -4
  893. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -1
  894. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -4
  895. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +2 -1
  896. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -4
  897. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +2 -1
  898. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -4
  899. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +2 -1
  900. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -4
  901. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +2 -1
  902. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -4
  903. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +2 -1
  904. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -4
  905. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +2 -1
  906. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -4
  907. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +2 -1
  908. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -4
  909. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +2 -1
  910. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -4
  911. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +2 -1
  912. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -4
  913. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +2 -1
  914. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -4
  915. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +110 -108
  916. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -4
  917. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +103 -79
  918. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +15 -4
  919. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +2 -1
  920. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -4
  921. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +2 -1
  922. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -4
  923. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +2 -1
  924. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -4
  925. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +486 -484
  926. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +5 -4
  927. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +2 -1
  928. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -4
  929. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +2 -1
  930. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -4
  931. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +2 -1
  932. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -4
  933. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +2 -1
  934. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -4
  935. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +2 -1
  936. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -4
  937. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +2 -1
  938. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -4
  939. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +2 -1
  940. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -4
  941. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +2 -1
  942. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -4
  943. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +2 -1
  944. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -4
  945. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +2 -1
  946. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -4
  947. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +2 -1
  948. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -4
  949. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +2 -1
  950. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -4
  951. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +2 -1
  952. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -4
  953. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +2 -1
  954. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -4
  955. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +2 -1
  956. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -4
  957. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +2 -1
  958. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -4
  959. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +2 -1
  960. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -4
  961. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +2 -1
  962. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -4
  963. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +2 -1
  964. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -4
  965. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +2 -1
  966. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -4
  967. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +2 -1
  968. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -4
  969. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +2 -1
  970. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -4
  971. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +2 -1
  972. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -4
  973. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +2 -1
  974. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -4
  975. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +2 -1
  976. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -4
  977. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +2 -1
  978. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -4
  979. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +2 -1
  980. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -4
  981. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +2 -1
  982. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -4
  983. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  984. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  985. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +2 -1
  986. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -4
  987. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +2 -1
  988. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -4
  989. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +2 -1
  990. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -4
  991. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +2 -1
  992. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -4
  993. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +2 -1
  994. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -4
  995. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +2 -1
  996. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -4
  997. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +2 -1
  998. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -4
  999. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +2 -1
  1000. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -4
  1001. data/src/core/filter/blackboard.cc +33 -0
  1002. data/src/core/filter/blackboard.h +70 -0
  1003. data/src/core/filter/filter_args.h +112 -0
  1004. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +4 -5
  1005. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.h +1 -1
  1006. data/src/core/handshaker/handshaker.cc +29 -43
  1007. data/src/core/handshaker/handshaker.h +8 -10
  1008. data/src/core/handshaker/handshaker_registry.cc +1 -2
  1009. data/src/core/handshaker/handshaker_registry.h +2 -2
  1010. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +17 -16
  1011. data/src/core/handshaker/http_connect/http_connect_handshaker.h +1 -1
  1012. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +38 -41
  1013. data/src/core/handshaker/http_connect/http_proxy_mapper.h +7 -8
  1014. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +57 -0
  1015. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +46 -0
  1016. data/src/core/handshaker/proxy_mapper.h +6 -7
  1017. data/src/core/handshaker/proxy_mapper_registry.cc +7 -8
  1018. data/src/core/handshaker/proxy_mapper_registry.h +6 -7
  1019. data/src/core/handshaker/security/secure_endpoint.cc +17 -19
  1020. data/src/core/handshaker/security/secure_endpoint.h +2 -3
  1021. data/src/core/handshaker/security/security_handshaker.cc +76 -96
  1022. data/src/core/handshaker/security/security_handshaker.h +3 -4
  1023. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +16 -16
  1024. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.h +1 -1
  1025. data/src/core/lib/address_utils/parse_address.cc +3 -4
  1026. data/src/core/lib/address_utils/parse_address.h +2 -4
  1027. data/src/core/lib/address_utils/sockaddr_utils.cc +4 -6
  1028. data/src/core/lib/address_utils/sockaddr_utils.h +1 -3
  1029. data/src/core/lib/channel/call_finalization.h +2 -2
  1030. data/src/core/lib/channel/channel_args.cc +17 -19
  1031. data/src/core/lib/channel/channel_args.h +19 -21
  1032. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  1033. data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
  1034. data/src/core/lib/channel/channel_stack.cc +5 -5
  1035. data/src/core/lib/channel/channel_stack.h +17 -18
  1036. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  1037. data/src/core/lib/channel/channel_stack_builder.h +3 -4
  1038. data/src/core/lib/channel/channel_stack_builder_impl.cc +5 -8
  1039. data/src/core/lib/channel/channel_stack_builder_impl.h +15 -3
  1040. data/src/core/lib/channel/connected_channel.cc +10 -13
  1041. data/src/core/lib/channel/promise_based_filter.cc +184 -223
  1042. data/src/core/lib/channel/promise_based_filter.h +99 -145
  1043. data/src/core/lib/channel/status_util.cc +1 -3
  1044. data/src/core/lib/channel/status_util.h +3 -3
  1045. data/src/core/lib/compression/compression.cc +5 -6
  1046. data/src/core/lib/compression/compression_internal.cc +14 -17
  1047. data/src/core/lib/compression/compression_internal.h +6 -8
  1048. data/src/core/lib/compression/message_compress.cc +3 -6
  1049. data/src/core/lib/debug/trace.cc +5 -6
  1050. data/src/core/lib/debug/trace_flags.cc +8 -20
  1051. data/src/core/lib/debug/trace_flags.h +3 -5
  1052. data/src/core/lib/debug/trace_impl.h +8 -2
  1053. data/src/core/lib/event_engine/ares_resolver.cc +109 -82
  1054. data/src/core/lib/event_engine/ares_resolver.h +13 -29
  1055. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +4 -8
  1056. data/src/core/lib/event_engine/cf_engine/cf_engine.h +3 -5
  1057. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +21 -10
  1058. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +6 -10
  1059. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +3 -5
  1060. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +11 -13
  1061. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +5 -9
  1062. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +7 -10
  1063. data/src/core/lib/event_engine/channel_args_endpoint_config.h +7 -9
  1064. data/src/core/lib/event_engine/common_closures.h +5 -7
  1065. data/src/core/lib/event_engine/default_event_engine.cc +69 -41
  1066. data/src/core/lib/event_engine/default_event_engine.h +27 -36
  1067. data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -14
  1068. data/src/core/lib/event_engine/default_event_engine_factory.h +4 -6
  1069. data/src/core/lib/event_engine/event_engine.cc +4 -6
  1070. data/src/core/lib/event_engine/extensions/can_track_errors.h +4 -6
  1071. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +3 -6
  1072. data/src/core/lib/event_engine/extensions/supports_fd.h +22 -7
  1073. data/src/core/lib/event_engine/extensions/tcp_trace.h +2 -5
  1074. data/src/core/lib/event_engine/forkable.cc +5 -8
  1075. data/src/core/lib/event_engine/forkable.h +4 -7
  1076. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -8
  1077. data/src/core/lib/event_engine/handle_containers.h +4 -7
  1078. data/src/core/lib/event_engine/memory_allocator_factory.h +5 -8
  1079. data/src/core/lib/event_engine/nameser.h +1 -1
  1080. data/src/core/lib/event_engine/poller.h +4 -6
  1081. data/src/core/lib/event_engine/posix.h +2 -4
  1082. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +14 -62
  1083. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +10 -13
  1084. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +21 -72
  1085. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +6 -9
  1086. data/src/core/lib/event_engine/posix_engine/event_poller.h +5 -8
  1087. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +6 -9
  1088. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +4 -6
  1089. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +6 -10
  1090. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -7
  1091. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +3 -6
  1092. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -11
  1093. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +4 -7
  1094. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +4 -7
  1095. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +4 -7
  1096. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +43 -27
  1097. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +10 -14
  1098. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +53 -34
  1099. data/src/core/lib/event_engine/posix_engine/posix_engine.h +18 -20
  1100. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +5 -7
  1101. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +10 -14
  1102. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +16 -17
  1103. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +6 -10
  1104. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +3 -6
  1105. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
  1106. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -14
  1107. data/src/core/lib/event_engine/posix_engine/timer.cc +8 -10
  1108. data/src/core/lib/event_engine/posix_engine/timer.h +9 -13
  1109. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +4 -7
  1110. data/src/core/lib/event_engine/posix_engine/timer_heap.h +4 -6
  1111. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +12 -20
  1112. data/src/core/lib/event_engine/posix_engine/timer_manager.h +9 -13
  1113. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +9 -16
  1114. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +27 -30
  1115. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +7 -10
  1116. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +4 -7
  1117. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +6 -9
  1118. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +4 -7
  1119. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +4 -6
  1120. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +4 -7
  1121. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +4 -6
  1122. data/src/core/lib/event_engine/query_extensions.h +4 -6
  1123. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +5 -9
  1124. data/src/core/lib/event_engine/resolved_address.cc +7 -9
  1125. data/src/core/lib/event_engine/resolved_address_internal.h +2 -4
  1126. data/src/core/lib/event_engine/shim.cc +2 -4
  1127. data/src/core/lib/event_engine/shim.h +2 -4
  1128. data/src/core/lib/event_engine/slice.cc +5 -10
  1129. data/src/core/lib/event_engine/slice_buffer.cc +3 -6
  1130. data/src/core/lib/event_engine/tcp_socket_utils.cc +9 -18
  1131. data/src/core/lib/event_engine/tcp_socket_utils.h +8 -10
  1132. data/src/core/lib/event_engine/thread_local.cc +2 -4
  1133. data/src/core/lib/event_engine/thread_local.h +2 -4
  1134. data/src/core/lib/event_engine/thread_pool/thread_count.cc +4 -9
  1135. data/src/core/lib/event_engine/thread_pool/thread_count.h +9 -24
  1136. data/src/core/lib/event_engine/thread_pool/thread_pool.h +4 -8
  1137. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +4 -7
  1138. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +15 -21
  1139. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +9 -13
  1140. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +7 -9
  1141. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +7 -9
  1142. data/src/core/lib/event_engine/time_util.cc +4 -6
  1143. data/src/core/lib/event_engine/time_util.h +3 -6
  1144. data/src/core/lib/event_engine/utils.cc +21 -9
  1145. data/src/core/lib/event_engine/utils.h +12 -8
  1146. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +128 -105
  1147. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +6 -10
  1148. data/src/core/lib/event_engine/windows/iocp.cc +6 -9
  1149. data/src/core/lib/event_engine/windows/iocp.h +3 -6
  1150. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +6 -10
  1151. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +2 -4
  1152. data/src/core/lib/event_engine/windows/win_socket.cc +6 -9
  1153. data/src/core/lib/event_engine/windows/win_socket.h +6 -9
  1154. data/src/core/lib/event_engine/windows/windows_endpoint.cc +30 -19
  1155. data/src/core/lib/event_engine/windows/windows_endpoint.h +4 -6
  1156. data/src/core/lib/event_engine/windows/windows_engine.cc +13 -15
  1157. data/src/core/lib/event_engine/windows/windows_engine.h +10 -13
  1158. data/src/core/lib/event_engine/windows/windows_listener.cc +4 -7
  1159. data/src/core/lib/event_engine/windows/windows_listener.h +6 -9
  1160. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +5 -7
  1161. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +5 -9
  1162. data/src/core/lib/event_engine/work_queue/work_queue.h +4 -7
  1163. data/src/core/lib/experiments/config.cc +21 -22
  1164. data/src/core/lib/experiments/config.h +1 -2
  1165. data/src/core/lib/experiments/experiments.cc +271 -177
  1166. data/src/core/lib/experiments/experiments.h +119 -80
  1167. data/src/core/lib/iomgr/buffer_list.cc +4 -6
  1168. data/src/core/lib/iomgr/buffer_list.h +23 -23
  1169. data/src/core/lib/iomgr/call_combiner.cc +2 -4
  1170. data/src/core/lib/iomgr/call_combiner.h +12 -16
  1171. data/src/core/lib/iomgr/cfstream_handle.cc +8 -14
  1172. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  1173. data/src/core/lib/iomgr/closure.cc +2 -2
  1174. data/src/core/lib/iomgr/closure.h +12 -18
  1175. data/src/core/lib/iomgr/combiner.cc +10 -15
  1176. data/src/core/lib/iomgr/combiner.h +2 -3
  1177. data/src/core/lib/iomgr/endpoint.h +1 -2
  1178. data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -26
  1179. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -5
  1180. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -2
  1181. data/src/core/lib/iomgr/error.cc +8 -10
  1182. data/src/core/lib/iomgr/error.h +6 -9
  1183. data/src/core/lib/iomgr/error_cfstream.cc +1 -3
  1184. data/src/core/lib/iomgr/ev_apple.cc +16 -22
  1185. data/src/core/lib/iomgr/ev_epoll1_linux.cc +54 -94
  1186. data/src/core/lib/iomgr/ev_poll_posix.cc +20 -29
  1187. data/src/core/lib/iomgr/ev_posix.cc +59 -50
  1188. data/src/core/lib/iomgr/ev_posix.h +1 -7
  1189. data/src/core/lib/iomgr/event_engine_shims/closure.cc +10 -14
  1190. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
  1191. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -18
  1192. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +2 -2
  1193. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +2 -4
  1194. data/src/core/lib/iomgr/exec_ctx.cc +11 -21
  1195. data/src/core/lib/iomgr/exec_ctx.h +22 -145
  1196. data/src/core/lib/iomgr/executor.cc +49 -52
  1197. data/src/core/lib/iomgr/executor.h +1 -1
  1198. data/src/core/lib/iomgr/fork_posix.cc +5 -7
  1199. data/src/core/lib/iomgr/fork_windows.cc +2 -3
  1200. data/src/core/lib/iomgr/internal_errqueue.cc +2 -4
  1201. data/src/core/lib/iomgr/iocp_windows.cc +4 -7
  1202. data/src/core/lib/iomgr/iomgr.cc +7 -9
  1203. data/src/core/lib/iomgr/iomgr.h +1 -2
  1204. data/src/core/lib/iomgr/iomgr_internal.cc +1 -2
  1205. data/src/core/lib/iomgr/iomgr_internal.h +1 -2
  1206. data/src/core/lib/iomgr/iomgr_posix.cc +2 -1
  1207. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  1208. data/src/core/lib/iomgr/lockfree_event.cc +10 -15
  1209. data/src/core/lib/iomgr/nameser.h +1 -1
  1210. data/src/core/lib/iomgr/polling_entity.cc +13 -7
  1211. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -2
  1212. data/src/core/lib/iomgr/pollset_windows.cc +2 -4
  1213. data/src/core/lib/iomgr/port.h +2 -2
  1214. data/src/core/lib/iomgr/resolve_address.cc +3 -5
  1215. data/src/core/lib/iomgr/resolve_address.h +4 -6
  1216. data/src/core/lib/iomgr/resolve_address_impl.h +1 -2
  1217. data/src/core/lib/iomgr/resolve_address_posix.cc +6 -10
  1218. data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
  1219. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -13
  1220. data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
  1221. data/src/core/lib/iomgr/resolved_address.h +1 -2
  1222. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -6
  1223. data/src/core/lib/iomgr/socket_mutator.cc +1 -2
  1224. data/src/core/lib/iomgr/socket_mutator.h +1 -2
  1225. data/src/core/lib/iomgr/socket_utils.h +1 -2
  1226. data/src/core/lib/iomgr/socket_utils_common_posix.cc +5 -7
  1227. data/src/core/lib/iomgr/socket_utils_linux.cc +1 -3
  1228. data/src/core/lib/iomgr/socket_utils_posix.cc +6 -8
  1229. data/src/core/lib/iomgr/socket_utils_windows.cc +1 -3
  1230. data/src/core/lib/iomgr/socket_windows.cc +3 -5
  1231. data/src/core/lib/iomgr/socket_windows.h +1 -2
  1232. data/src/core/lib/iomgr/tcp_client_cfstream.cc +12 -19
  1233. data/src/core/lib/iomgr/tcp_client_posix.cc +13 -19
  1234. data/src/core/lib/iomgr/tcp_client_windows.cc +6 -9
  1235. data/src/core/lib/iomgr/tcp_posix.cc +49 -87
  1236. data/src/core/lib/iomgr/tcp_posix.h +1 -1
  1237. data/src/core/lib/iomgr/tcp_server.h +2 -2
  1238. data/src/core/lib/iomgr/tcp_server_posix.cc +17 -25
  1239. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -3
  1240. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -5
  1241. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -6
  1242. data/src/core/lib/iomgr/tcp_server_windows.cc +11 -14
  1243. data/src/core/lib/iomgr/tcp_windows.cc +8 -18
  1244. data/src/core/lib/iomgr/timer.h +2 -2
  1245. data/src/core/lib/iomgr/timer_generic.cc +55 -76
  1246. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  1247. data/src/core/lib/iomgr/timer_manager.cc +9 -20
  1248. data/src/core/lib/iomgr/timer_manager.h +1 -2
  1249. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -5
  1250. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -4
  1251. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +0 -4
  1252. data/src/core/lib/iomgr/vsock.cc +2 -5
  1253. data/src/core/lib/iomgr/vsock.h +3 -4
  1254. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -4
  1255. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -4
  1256. data/src/core/lib/promise/activity.cc +4 -4
  1257. data/src/core/lib/promise/activity.h +43 -25
  1258. data/src/core/lib/promise/all_ok.h +40 -4
  1259. data/src/core/lib/promise/arena_promise.h +2 -4
  1260. data/src/core/lib/promise/cancel_callback.h +4 -4
  1261. data/src/core/lib/promise/context.h +7 -9
  1262. data/src/core/lib/promise/detail/basic_seq.h +33 -19
  1263. data/src/core/lib/promise/detail/join_state.h +64 -117
  1264. data/src/core/lib/promise/detail/promise_factory.h +92 -33
  1265. data/src/core/lib/promise/detail/promise_like.h +34 -15
  1266. data/src/core/lib/promise/detail/seq_state.h +1206 -1676
  1267. data/src/core/lib/promise/detail/status.h +5 -5
  1268. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -3
  1269. data/src/core/lib/promise/for_each.h +31 -30
  1270. data/src/core/lib/promise/if.h +56 -28
  1271. data/src/core/lib/promise/interceptor_list.h +29 -41
  1272. data/src/core/lib/promise/latch.h +31 -33
  1273. data/src/core/lib/promise/loop.h +70 -22
  1274. data/src/core/lib/promise/map.h +167 -21
  1275. data/src/core/lib/promise/observable.h +3 -4
  1276. data/src/core/lib/promise/party.cc +295 -136
  1277. data/src/core/lib/promise/party.h +376 -362
  1278. data/src/core/lib/promise/pipe.h +18 -21
  1279. data/src/core/lib/promise/poll.h +27 -13
  1280. data/src/core/lib/promise/prioritized_race.h +17 -23
  1281. data/src/core/lib/promise/promise.h +7 -9
  1282. data/src/core/lib/promise/race.h +6 -14
  1283. data/src/core/lib/promise/seq.h +58 -45
  1284. data/src/core/lib/promise/sleep.cc +6 -6
  1285. data/src/core/lib/promise/sleep.h +19 -6
  1286. data/src/core/lib/promise/status_flag.h +28 -7
  1287. data/src/core/lib/promise/try_join.h +124 -10
  1288. data/src/core/lib/promise/try_seq.h +84 -59
  1289. data/src/core/lib/resource_quota/api.cc +4 -6
  1290. data/src/core/lib/resource_quota/api.h +2 -3
  1291. data/src/core/lib/resource_quota/arena.cc +3 -4
  1292. data/src/core/lib/resource_quota/arena.h +91 -5
  1293. data/src/core/lib/resource_quota/connection_quota.cc +2 -3
  1294. data/src/core/lib/resource_quota/connection_quota.h +9 -6
  1295. data/src/core/lib/resource_quota/memory_quota.cc +84 -79
  1296. data/src/core/lib/resource_quota/memory_quota.h +27 -21
  1297. data/src/core/lib/resource_quota/periodic_update.cc +6 -7
  1298. data/src/core/lib/resource_quota/periodic_update.h +2 -4
  1299. data/src/core/lib/resource_quota/resource_quota.h +7 -8
  1300. data/src/core/lib/resource_quota/thread_quota.cc +2 -3
  1301. data/src/core/lib/resource_quota/thread_quota.h +5 -6
  1302. data/src/core/lib/security/authorization/audit_logging.cc +5 -7
  1303. data/src/core/lib/security/authorization/audit_logging.h +5 -6
  1304. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1305. data/src/core/lib/security/authorization/authorization_policy_provider.h +3 -4
  1306. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  1307. data/src/core/lib/security/authorization/evaluate_args.cc +7 -9
  1308. data/src/core/lib/security/authorization/evaluate_args.h +6 -7
  1309. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -4
  1310. data/src/core/lib/security/authorization/grpc_authorization_engine.h +2 -3
  1311. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +19 -29
  1312. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +8 -9
  1313. data/src/core/lib/security/authorization/matchers.cc +2 -4
  1314. data/src/core/lib/security/authorization/matchers.h +5 -7
  1315. data/src/core/lib/security/authorization/rbac_policy.cc +3 -3
  1316. data/src/core/lib/security/authorization/rbac_policy.h +6 -8
  1317. data/src/core/lib/security/authorization/stdout_logger.cc +4 -5
  1318. data/src/core/lib/security/authorization/stdout_logger.h +4 -4
  1319. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +6 -7
  1320. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -2
  1321. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -3
  1322. data/src/core/lib/security/context/security_context.cc +6 -8
  1323. data/src/core/lib/security/context/security_context.h +16 -10
  1324. data/src/core/lib/security/credentials/alts/alts_credentials.cc +5 -5
  1325. data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
  1326. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +2 -4
  1327. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +1 -2
  1328. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +1 -2
  1329. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +3 -5
  1330. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -2
  1331. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +2 -2
  1332. data/src/core/lib/security/credentials/call_creds_util.cc +6 -6
  1333. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  1334. data/src/core/lib/security/credentials/channel_creds_registry.h +5 -6
  1335. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -11
  1336. data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -5
  1337. data/src/core/lib/security/credentials/composite/composite_credentials.h +10 -9
  1338. data/src/core/lib/security/credentials/credentials.cc +1 -4
  1339. data/src/core/lib/security/credentials/credentials.h +12 -14
  1340. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +331 -336
  1341. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +58 -46
  1342. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -5
  1343. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  1344. data/src/core/lib/security/credentials/external/external_account_credentials.cc +399 -364
  1345. data/src/core/lib/security/credentials/external/external_account_credentials.h +125 -57
  1346. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +87 -50
  1347. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +32 -11
  1348. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +98 -125
  1349. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +21 -23
  1350. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -4
  1351. data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
  1352. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +195 -0
  1353. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h +90 -0
  1354. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +4 -5
  1355. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +47 -64
  1356. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +7 -5
  1357. data/src/core/lib/security/credentials/iam/iam_credentials.cc +3 -6
  1358. data/src/core/lib/security/credentials/iam/iam_credentials.h +8 -7
  1359. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  1360. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
  1361. data/src/core/lib/security/credentials/jwt/json_token.cc +11 -14
  1362. data/src/core/lib/security/credentials/jwt/json_token.h +1 -2
  1363. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +9 -12
  1364. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -11
  1365. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +19 -23
  1366. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  1367. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -2
  1368. data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
  1369. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +178 -276
  1370. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +47 -70
  1371. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +15 -21
  1372. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +11 -11
  1373. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -8
  1374. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -7
  1375. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +15 -17
  1376. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +18 -19
  1377. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +1 -3
  1378. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +99 -21
  1379. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +16 -15
  1380. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +4 -7
  1381. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +8 -10
  1382. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  1383. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -1
  1384. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -6
  1385. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +9 -12
  1386. data/src/core/lib/security/credentials/tls/tls_credentials.cc +8 -9
  1387. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -3
  1388. data/src/core/lib/security/credentials/tls/tls_utils.cc +1 -2
  1389. data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
  1390. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +304 -0
  1391. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +181 -0
  1392. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -4
  1393. data/src/core/lib/security/credentials/xds/xds_credentials.h +7 -9
  1394. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -12
  1395. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +1 -1
  1396. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +12 -15
  1397. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
  1398. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +4 -7
  1399. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +5 -6
  1400. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -7
  1401. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +3 -5
  1402. data/src/core/lib/security/security_connector/local/local_security_connector.cc +18 -14
  1403. data/src/core/lib/security/security_connector/local/local_security_connector.h +1 -1
  1404. data/src/core/lib/security/security_connector/security_connector.cc +2 -4
  1405. data/src/core/lib/security/security_connector/security_connector.h +7 -8
  1406. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +6 -8
  1407. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -3
  1408. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -14
  1409. data/src/core/lib/security/security_connector/ssl_utils.h +7 -9
  1410. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +17 -19
  1411. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +20 -21
  1412. data/src/core/lib/security/transport/auth_filters.h +97 -10
  1413. data/src/core/lib/security/transport/client_auth_filter.cc +104 -16
  1414. data/src/core/lib/security/transport/server_auth_filter.cc +14 -25
  1415. data/src/core/lib/security/util/json_util.cc +4 -5
  1416. data/src/core/lib/slice/percent_encoding.cc +2 -5
  1417. data/src/core/lib/slice/slice.cc +4 -7
  1418. data/src/core/lib/slice/slice.h +5 -8
  1419. data/src/core/lib/slice/slice_buffer.cc +7 -9
  1420. data/src/core/lib/slice/slice_buffer.h +5 -6
  1421. data/src/core/lib/slice/slice_internal.h +3 -6
  1422. data/src/core/lib/slice/slice_refcount.h +8 -11
  1423. data/src/core/lib/slice/slice_string_helpers.h +1 -2
  1424. data/src/core/lib/surface/byte_buffer.cc +1 -2
  1425. data/src/core/lib/surface/byte_buffer_reader.cc +3 -6
  1426. data/src/core/lib/surface/call.cc +25 -33
  1427. data/src/core/lib/surface/call.h +10 -11
  1428. data/src/core/lib/surface/call_log_batch.cc +3 -5
  1429. data/src/core/lib/surface/call_test_only.h +1 -2
  1430. data/src/core/lib/surface/call_utils.cc +18 -61
  1431. data/src/core/lib/surface/call_utils.h +67 -24
  1432. data/src/core/lib/surface/channel.cc +7 -17
  1433. data/src/core/lib/surface/channel.h +14 -15
  1434. data/src/core/lib/surface/channel_create.cc +2 -4
  1435. data/src/core/lib/surface/channel_create.h +2 -3
  1436. data/src/core/lib/surface/channel_init.cc +5 -7
  1437. data/src/core/lib/surface/channel_init.h +4 -7
  1438. data/src/core/lib/surface/client_call.cc +122 -96
  1439. data/src/core/lib/surface/client_call.h +34 -22
  1440. data/src/core/lib/surface/completion_queue.cc +32 -49
  1441. data/src/core/lib/surface/completion_queue.h +4 -5
  1442. data/src/core/lib/surface/completion_queue_factory.cc +1 -3
  1443. data/src/core/lib/surface/connection_context.cc +77 -0
  1444. data/src/core/lib/surface/connection_context.h +156 -0
  1445. data/src/core/lib/surface/event_string.cc +9 -3
  1446. data/src/core/lib/surface/event_string.h +2 -2
  1447. data/src/core/lib/surface/filter_stack_call.cc +29 -33
  1448. data/src/core/lib/surface/filter_stack_call.h +17 -20
  1449. data/src/core/lib/surface/init.cc +44 -18
  1450. data/src/core/lib/surface/init.h +5 -0
  1451. data/src/core/lib/surface/init_internally.h +13 -2
  1452. data/src/core/lib/surface/lame_client.cc +10 -12
  1453. data/src/core/lib/surface/lame_client.h +4 -5
  1454. data/src/core/lib/surface/legacy_channel.cc +20 -19
  1455. data/src/core/lib/surface/legacy_channel.h +7 -8
  1456. data/src/core/lib/surface/metadata_array.cc +1 -2
  1457. data/src/core/lib/surface/server_call.cc +128 -93
  1458. data/src/core/lib/surface/server_call.h +21 -21
  1459. data/src/core/lib/surface/validate_metadata.cc +3 -4
  1460. data/src/core/lib/surface/validate_metadata.h +2 -5
  1461. data/src/core/lib/surface/version.cc +2 -2
  1462. data/src/core/lib/transport/bdp_estimator.cc +11 -15
  1463. data/src/core/lib/transport/bdp_estimator.h +9 -13
  1464. data/src/core/lib/transport/call_arena_allocator.cc +4 -18
  1465. data/src/core/lib/transport/call_arena_allocator.h +22 -8
  1466. data/src/core/lib/transport/call_destination.h +1 -1
  1467. data/src/core/lib/transport/call_filters.cc +21 -130
  1468. data/src/core/lib/transport/call_filters.h +510 -94
  1469. data/src/core/lib/transport/call_final_info.cc +2 -2
  1470. data/src/core/lib/transport/call_final_info.h +3 -3
  1471. data/src/core/lib/transport/call_spine.cc +13 -55
  1472. data/src/core/lib/transport/call_spine.h +220 -25
  1473. data/src/core/lib/transport/call_state.h +283 -86
  1474. data/src/core/lib/transport/connectivity_state.cc +43 -53
  1475. data/src/core/lib/transport/connectivity_state.h +7 -10
  1476. data/src/core/lib/transport/error_utils.cc +3 -4
  1477. data/src/core/lib/transport/error_utils.h +4 -5
  1478. data/src/core/lib/transport/http2_errors.h +5 -3
  1479. data/src/core/lib/transport/interception_chain.cc +11 -3
  1480. data/src/core/lib/transport/interception_chain.h +53 -15
  1481. data/src/core/lib/transport/message.cc +2 -2
  1482. data/src/core/lib/transport/message.h +5 -0
  1483. data/src/core/lib/transport/metadata.h +88 -0
  1484. data/src/core/lib/transport/metadata_batch.cc +14 -7
  1485. data/src/core/lib/transport/metadata_batch.h +137 -30
  1486. data/src/core/lib/transport/metadata_compression_traits.h +3 -4
  1487. data/src/core/lib/transport/parsed_metadata.h +3 -5
  1488. data/src/core/lib/transport/simple_slice_based_metadata.h +1 -2
  1489. data/src/core/lib/transport/status_conversion.h +1 -1
  1490. data/src/core/lib/transport/timeout_encoding.cc +22 -23
  1491. data/src/core/lib/transport/timeout_encoding.h +4 -5
  1492. data/src/core/lib/transport/transport.cc +4 -7
  1493. data/src/core/lib/transport/transport.h +25 -24
  1494. data/src/core/lib/transport/transport_framing_endpoint_extension.h +47 -0
  1495. data/src/core/lib/transport/transport_op_string.cc +4 -6
  1496. data/src/core/load_balancing/address_filtering.cc +2 -4
  1497. data/src/core/load_balancing/address_filtering.h +4 -5
  1498. data/src/core/load_balancing/backend_metric_data.h +2 -2
  1499. data/src/core/load_balancing/backend_metric_parser.cc +22 -30
  1500. data/src/core/load_balancing/backend_metric_parser.h +1 -3
  1501. data/src/core/load_balancing/child_policy_handler.cc +5 -6
  1502. data/src/core/load_balancing/child_policy_handler.h +4 -5
  1503. data/src/core/load_balancing/delegating_helper.h +6 -7
  1504. data/src/core/load_balancing/endpoint_list.cc +18 -10
  1505. data/src/core/load_balancing/endpoint_list.h +26 -21
  1506. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +11 -10
  1507. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +5 -6
  1508. data/src/core/load_balancing/grpclb/grpclb.cc +96 -131
  1509. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -2
  1510. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -3
  1511. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +5 -7
  1512. data/src/core/load_balancing/grpclb/load_balancer_api.cc +4 -6
  1513. data/src/core/load_balancing/grpclb/load_balancer_api.h +4 -6
  1514. data/src/core/load_balancing/health_check_client.cc +67 -110
  1515. data/src/core/load_balancing/health_check_client.h +3 -3
  1516. data/src/core/load_balancing/health_check_client_internal.h +15 -16
  1517. data/src/core/load_balancing/lb_policy.cc +4 -6
  1518. data/src/core/load_balancing/lb_policy.h +17 -27
  1519. data/src/core/load_balancing/lb_policy_factory.h +4 -5
  1520. data/src/core/load_balancing/lb_policy_registry.cc +13 -12
  1521. data/src/core/load_balancing/lb_policy_registry.h +4 -5
  1522. data/src/core/load_balancing/oob_backend_metric.cc +16 -20
  1523. data/src/core/load_balancing/oob_backend_metric.h +3 -3
  1524. data/src/core/load_balancing/oob_backend_metric_internal.h +8 -9
  1525. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +176 -212
  1526. data/src/core/load_balancing/outlier_detection/outlier_detection.h +6 -7
  1527. data/src/core/load_balancing/pick_first/pick_first.cc +297 -321
  1528. data/src/core/load_balancing/priority/priority.cc +97 -133
  1529. data/src/core/load_balancing/ring_hash/ring_hash.cc +247 -211
  1530. data/src/core/load_balancing/ring_hash/ring_hash.h +7 -15
  1531. data/src/core/load_balancing/rls/rls.cc +268 -404
  1532. data/src/core/load_balancing/rls/rls.h +97 -1
  1533. data/src/core/load_balancing/round_robin/round_robin.cc +59 -89
  1534. data/src/core/load_balancing/subchannel_interface.h +13 -6
  1535. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +8 -9
  1536. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +4 -5
  1537. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +120 -158
  1538. data/src/core/load_balancing/weighted_target/weighted_target.cc +70 -103
  1539. data/src/core/load_balancing/xds/cds.cc +60 -78
  1540. data/src/core/load_balancing/xds/xds_cluster_impl.cc +114 -117
  1541. data/src/core/load_balancing/xds/xds_cluster_manager.cc +56 -80
  1542. data/src/core/load_balancing/xds/xds_override_host.cc +152 -237
  1543. data/src/core/load_balancing/xds/xds_override_host.h +3 -4
  1544. data/src/core/load_balancing/xds/xds_wrr_locality.cc +36 -47
  1545. data/src/core/plugin_registry/grpc_plugin_registry.cc +1 -7
  1546. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +6 -1
  1547. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +86 -71
  1548. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +2 -3
  1549. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -6
  1550. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -6
  1551. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +118 -100
  1552. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +147 -115
  1553. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -13
  1554. data/src/core/resolver/dns/dns_resolver_plugin.cc +4 -6
  1555. data/src/core/resolver/dns/dns_resolver_plugin.h +1 -1
  1556. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +59 -65
  1557. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +3 -4
  1558. data/src/core/resolver/dns/event_engine/service_config_helper.cc +3 -5
  1559. data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
  1560. data/src/core/resolver/dns/native/dns_resolver.cc +19 -26
  1561. data/src/core/resolver/dns/native/dns_resolver.h +1 -1
  1562. data/src/core/resolver/endpoint_addresses.cc +1 -4
  1563. data/src/core/resolver/endpoint_addresses.h +2 -3
  1564. data/src/core/resolver/fake/fake_resolver.cc +17 -20
  1565. data/src/core/resolver/fake/fake_resolver.h +9 -10
  1566. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +20 -24
  1567. data/src/core/resolver/polling_resolver.cc +14 -28
  1568. data/src/core/resolver/polling_resolver.h +11 -12
  1569. data/src/core/resolver/resolver.h +4 -5
  1570. data/src/core/resolver/resolver_factory.h +4 -5
  1571. data/src/core/resolver/resolver_registry.cc +6 -5
  1572. data/src/core/resolver/resolver_registry.h +4 -5
  1573. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +5 -6
  1574. data/src/core/resolver/xds/xds_config.cc +95 -0
  1575. data/src/core/resolver/xds/xds_config.h +108 -0
  1576. data/src/core/resolver/xds/xds_dependency_manager.cc +242 -333
  1577. data/src/core/resolver/xds/xds_dependency_manager.h +30 -89
  1578. data/src/core/resolver/xds/xds_resolver.cc +139 -186
  1579. data/src/core/resolver/xds/xds_resolver_attributes.h +2 -3
  1580. data/src/core/server/server.cc +372 -91
  1581. data/src/core/server/server.h +227 -81
  1582. data/src/core/server/server_call_tracer_filter.cc +14 -11
  1583. data/src/core/server/server_call_tracer_filter.h +1 -1
  1584. data/src/core/server/server_config_selector.h +5 -6
  1585. data/src/core/server/server_config_selector_filter.cc +16 -22
  1586. data/src/core/server/xds_channel_stack_modifier.cc +3 -3
  1587. data/src/core/server/xds_channel_stack_modifier.h +5 -6
  1588. data/src/core/server/xds_server_config_fetcher.cc +118 -187
  1589. data/src/core/service_config/service_config.h +3 -5
  1590. data/src/core/service_config/service_config_call_data.h +7 -9
  1591. data/src/core/service_config/service_config_channel_arg_filter.cc +15 -26
  1592. data/src/core/service_config/service_config_impl.cc +7 -9
  1593. data/src/core/service_config/service_config_impl.h +4 -7
  1594. data/src/core/service_config/service_config_parser.cc +1 -2
  1595. data/src/core/service_config/service_config_parser.h +2 -4
  1596. data/src/core/telemetry/call_tracer.cc +10 -12
  1597. data/src/core/telemetry/call_tracer.h +11 -11
  1598. data/src/core/telemetry/histogram_view.cc +3 -3
  1599. data/src/core/telemetry/histogram_view.h +1 -2
  1600. data/src/core/telemetry/metrics.cc +21 -19
  1601. data/src/core/telemetry/metrics.h +15 -19
  1602. data/src/core/telemetry/stats.cc +1 -2
  1603. data/src/core/telemetry/stats.h +2 -4
  1604. data/src/core/telemetry/stats_data.cc +181 -2
  1605. data/src/core/telemetry/stats_data.h +130 -4
  1606. data/src/core/telemetry/tcp_tracer.h +33 -34
  1607. data/src/core/tsi/alts/crypt/aes_gcm.cc +5 -8
  1608. data/src/core/tsi/alts/crypt/gsec.cc +2 -3
  1609. data/src/core/tsi/alts/crypt/gsec.h +3 -4
  1610. data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
  1611. data/src/core/tsi/alts/frame_protector/alts_counter.h +3 -4
  1612. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
  1613. data/src/core/tsi/alts/frame_protector/alts_crypter.h +2 -3
  1614. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +4 -5
  1615. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +1 -2
  1616. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -1
  1617. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  1618. data/src/core/tsi/alts/frame_protector/frame_handler.cc +4 -6
  1619. data/src/core/tsi/alts/frame_protector/frame_handler.h +1 -2
  1620. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +14 -15
  1621. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +2 -4
  1622. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
  1623. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +33 -31
  1624. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -3
  1625. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  1626. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +3 -4
  1627. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +3 -5
  1628. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +1 -2
  1629. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +2 -3
  1630. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +1 -2
  1631. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +3 -5
  1632. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +3 -5
  1633. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +1 -2
  1634. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +3 -5
  1635. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +1 -2
  1636. data/src/core/tsi/fake_transport_security.cc +14 -11
  1637. data/src/core/tsi/local_transport_security.cc +4 -6
  1638. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +4 -5
  1639. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +8 -10
  1640. data/src/core/tsi/ssl/session_cache/ssl_session.h +4 -5
  1641. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -6
  1642. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +7 -8
  1643. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -4
  1644. data/src/core/tsi/ssl_transport_security.cc +29 -17
  1645. data/src/core/tsi/ssl_transport_security.h +6 -8
  1646. data/src/core/tsi/ssl_transport_security_utils.cc +1 -3
  1647. data/src/core/tsi/ssl_transport_security_utils.h +3 -5
  1648. data/src/core/tsi/ssl_types.h +1 -2
  1649. data/src/core/tsi/transport_security.cc +2 -3
  1650. data/src/core/tsi/transport_security.h +1 -2
  1651. data/src/core/tsi/transport_security_interface.h +3 -4
  1652. data/src/core/util/alloc.cc +2 -6
  1653. data/src/core/util/atomic_utils.h +47 -0
  1654. data/src/core/util/avl.h +324 -0
  1655. data/src/core/util/backoff.cc +57 -0
  1656. data/src/core/util/backoff.h +86 -0
  1657. data/src/core/util/bitset.h +224 -0
  1658. data/src/core/util/chunked_vector.h +256 -0
  1659. data/src/core/util/construct_destruct.h +41 -0
  1660. data/src/core/util/cpp_impl_of.h +49 -0
  1661. data/src/core/util/crash.cc +40 -0
  1662. data/src/core/util/crash.h +36 -0
  1663. data/src/core/util/debug_location.h +106 -0
  1664. data/src/core/util/directory_reader.h +48 -0
  1665. data/src/core/util/down_cast.h +48 -0
  1666. data/src/core/util/dual_ref_counted.h +376 -0
  1667. data/src/core/util/dump_args.cc +54 -0
  1668. data/src/core/util/dump_args.h +114 -0
  1669. data/src/core/util/env.h +52 -0
  1670. data/src/core/util/event_log.cc +87 -0
  1671. data/src/core/util/event_log.h +79 -0
  1672. data/src/core/util/examine_stack.cc +43 -0
  1673. data/src/core/util/examine_stack.h +44 -0
  1674. data/src/core/util/fork.cc +241 -0
  1675. data/src/core/util/fork.h +98 -0
  1676. data/src/core/util/gcp_metadata_query.cc +8 -12
  1677. data/src/core/util/gcp_metadata_query.h +2 -3
  1678. data/src/core/util/gethostname.h +26 -0
  1679. data/src/core/util/gethostname_fallback.cc +30 -0
  1680. data/src/core/util/gethostname_host_name_max.cc +39 -0
  1681. data/src/core/util/gethostname_sysconf.cc +39 -0
  1682. data/src/core/util/glob.h +29 -0
  1683. data/src/core/util/gpr_time.cc +266 -0
  1684. data/src/core/util/grpc_if_nametoindex.h +29 -0
  1685. data/src/core/util/grpc_if_nametoindex_posix.cc +41 -0
  1686. data/src/core/util/grpc_if_nametoindex_unsupported.cc +36 -0
  1687. data/src/core/util/host_port.cc +114 -0
  1688. data/src/core/util/host_port.h +57 -0
  1689. data/src/core/util/http_client/format_request.cc +2 -5
  1690. data/src/core/util/http_client/format_request.h +1 -2
  1691. data/src/core/util/http_client/httpcli.cc +95 -47
  1692. data/src/core/util/http_client/httpcli.h +40 -28
  1693. data/src/core/util/http_client/httpcli_security_connector.cc +11 -14
  1694. data/src/core/util/http_client/httpcli_ssl_credentials.h +2 -3
  1695. data/src/core/util/http_client/parser.cc +5 -8
  1696. data/src/core/util/http_client/parser.h +1 -3
  1697. data/src/core/util/if_list.h +4530 -0
  1698. data/src/core/util/iphone/cpu.cc +1 -2
  1699. data/src/core/util/json/json.h +1 -2
  1700. data/src/core/util/json/json_channel_args.h +2 -2
  1701. data/src/core/util/json/json_object_loader.cc +7 -8
  1702. data/src/core/util/json/json_object_loader.h +20 -21
  1703. data/src/core/util/json/json_reader.cc +6 -10
  1704. data/src/core/util/json/json_reader.h +0 -1
  1705. data/src/core/util/json/json_util.cc +4 -4
  1706. data/src/core/util/json/json_util.h +1 -2
  1707. data/src/core/util/json/json_writer.cc +4 -6
  1708. data/src/core/util/latent_see.cc +112 -62
  1709. data/src/core/util/latent_see.h +157 -37
  1710. data/src/core/util/linux/cpu.cc +4 -6
  1711. data/src/core/util/linux/env.cc +61 -0
  1712. data/src/core/util/load_file.cc +75 -0
  1713. data/src/core/util/load_file.h +33 -0
  1714. data/src/core/util/log.cc +46 -68
  1715. data/src/core/util/lru_cache.h +122 -0
  1716. data/src/core/util/manual_constructor.h +145 -0
  1717. data/src/core/util/match.h +74 -0
  1718. data/src/core/util/matchers.cc +336 -0
  1719. data/src/core/util/matchers.h +162 -0
  1720. data/src/core/util/memory.h +52 -0
  1721. data/src/core/util/mpscq.cc +108 -0
  1722. data/src/core/util/mpscq.h +98 -0
  1723. data/src/core/util/msys/tmpfile.cc +3 -5
  1724. data/src/core/util/no_destruct.h +95 -0
  1725. data/src/core/util/notification.h +66 -0
  1726. data/src/core/util/orphanable.h +153 -0
  1727. data/src/core/util/overload.h +59 -0
  1728. data/src/core/util/packed_table.h +40 -0
  1729. data/src/core/util/per_cpu.cc +34 -0
  1730. data/src/core/util/per_cpu.h +102 -0
  1731. data/src/core/util/posix/cpu.cc +3 -5
  1732. data/src/core/util/posix/directory_reader.cc +82 -0
  1733. data/src/core/util/posix/env.cc +47 -0
  1734. data/src/core/util/posix/stat.cc +54 -0
  1735. data/src/core/util/posix/string.cc +2 -3
  1736. data/src/core/util/posix/sync.cc +2 -6
  1737. data/src/core/util/posix/thd.cc +243 -0
  1738. data/src/core/util/posix/time.cc +3 -6
  1739. data/src/core/util/posix/tmpfile.cc +4 -6
  1740. data/src/core/util/random_early_detection.cc +33 -0
  1741. data/src/core/util/random_early_detection.h +61 -0
  1742. data/src/core/util/ref_counted.h +403 -0
  1743. data/src/core/util/ref_counted_ptr.h +443 -0
  1744. data/src/core/util/ref_counted_string.cc +42 -0
  1745. data/src/core/util/ref_counted_string.h +159 -0
  1746. data/src/core/util/ring_buffer.h +122 -0
  1747. data/src/core/util/single_set_ptr.h +89 -0
  1748. data/src/core/util/sorted_pack.h +89 -0
  1749. data/src/core/util/spinlock.h +2 -4
  1750. data/src/core/util/stat.h +35 -0
  1751. data/src/core/util/status_helper.cc +427 -0
  1752. data/src/core/util/status_helper.h +160 -0
  1753. data/src/core/util/strerror.cc +40 -0
  1754. data/src/core/util/strerror.h +29 -0
  1755. data/src/core/util/string.cc +13 -16
  1756. data/src/core/util/string.h +1 -3
  1757. data/src/core/util/sync.cc +3 -6
  1758. data/src/core/util/sync.h +199 -0
  1759. data/src/core/util/sync_abseil.cc +4 -8
  1760. data/src/core/util/table.h +471 -0
  1761. data/src/core/util/tchar.cc +49 -0
  1762. data/src/core/util/tchar.h +33 -0
  1763. data/src/core/util/thd.h +193 -0
  1764. data/src/core/util/time.cc +174 -205
  1765. data/src/core/util/time.h +385 -0
  1766. data/src/core/util/time_averaged_stats.cc +60 -0
  1767. data/src/core/util/time_averaged_stats.h +79 -0
  1768. data/src/core/util/time_precise.cc +2 -4
  1769. data/src/core/util/time_precise.h +0 -1
  1770. data/src/core/util/time_util.cc +80 -0
  1771. data/src/core/util/time_util.h +41 -0
  1772. data/src/core/util/tmpfile.h +0 -1
  1773. data/src/core/util/type_list.h +88 -0
  1774. data/src/core/util/unique_ptr_with_bitset.h +86 -0
  1775. data/src/core/util/unique_type_name.h +123 -0
  1776. data/src/core/util/uri.cc +378 -0
  1777. data/src/core/util/uri.h +112 -0
  1778. data/src/core/util/useful.h +13 -39
  1779. data/src/core/util/uuid_v4.cc +37 -0
  1780. data/src/core/util/uuid_v4.h +35 -0
  1781. data/src/core/util/validation_errors.cc +73 -0
  1782. data/src/core/util/validation_errors.h +144 -0
  1783. data/src/core/util/wait_for_single_owner.h +62 -0
  1784. data/src/core/util/windows/cpu.cc +1 -2
  1785. data/src/core/util/windows/directory_reader.cc +79 -0
  1786. data/src/core/util/windows/env.cc +56 -0
  1787. data/src/core/util/windows/stat.cc +50 -0
  1788. data/src/core/util/windows/string.cc +2 -3
  1789. data/src/core/util/windows/string_util.cc +5 -7
  1790. data/src/core/util/windows/sync.cc +1 -4
  1791. data/src/core/util/windows/thd.cc +182 -0
  1792. data/src/core/util/windows/time.cc +1 -5
  1793. data/src/core/util/windows/tmpfile.cc +4 -6
  1794. data/src/core/util/work_serializer.cc +298 -0
  1795. data/src/core/util/work_serializer.h +81 -0
  1796. data/src/core/util/xxhash_inline.h +29 -0
  1797. data/src/core/xds/grpc/certificate_provider_store.cc +15 -21
  1798. data/src/core/xds/grpc/certificate_provider_store.h +9 -10
  1799. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +5 -6
  1800. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +6 -7
  1801. data/src/core/xds/grpc/xds_audit_logger_registry.cc +5 -6
  1802. data/src/core/xds/grpc/xds_audit_logger_registry.h +3 -4
  1803. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +13 -49
  1804. data/src/core/xds/grpc/xds_bootstrap_grpc.h +6 -11
  1805. data/src/core/xds/grpc/xds_certificate_provider.cc +17 -19
  1806. data/src/core/xds/grpc/xds_certificate_provider.h +8 -9
  1807. data/src/core/xds/grpc/xds_client_grpc.cc +80 -62
  1808. data/src/core/xds/grpc/xds_client_grpc.h +14 -8
  1809. data/src/core/xds/grpc/xds_cluster.cc +11 -12
  1810. data/src/core/xds/grpc/xds_cluster.h +38 -12
  1811. data/src/core/xds/grpc/xds_cluster_parser.cc +188 -146
  1812. data/src/core/xds/grpc/xds_cluster_parser.h +6 -2
  1813. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +9 -12
  1814. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +5 -6
  1815. data/src/core/xds/grpc/xds_common_types.cc +3 -4
  1816. data/src/core/xds/grpc/xds_common_types.h +6 -7
  1817. data/src/core/xds/grpc/xds_common_types_parser.cc +72 -38
  1818. data/src/core/xds/grpc/xds_common_types_parser.h +28 -5
  1819. data/src/core/xds/grpc/xds_endpoint.cc +3 -4
  1820. data/src/core/xds/grpc/xds_endpoint.h +7 -5
  1821. data/src/core/xds/grpc/xds_endpoint_parser.cc +106 -70
  1822. data/src/core/xds/grpc/xds_endpoint_parser.h +1 -2
  1823. data/src/core/xds/grpc/xds_health_status.cc +4 -4
  1824. data/src/core/xds/grpc/xds_health_status.h +4 -4
  1825. data/src/core/xds/grpc/xds_http_fault_filter.cc +38 -33
  1826. data/src/core/xds/grpc/xds_http_fault_filter.h +13 -9
  1827. data/src/core/xds/grpc/xds_http_filter.h +16 -7
  1828. data/src/core/xds/grpc/xds_http_filter_registry.cc +16 -11
  1829. data/src/core/xds/grpc/xds_http_filter_registry.h +13 -7
  1830. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +141 -0
  1831. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +61 -0
  1832. data/src/core/xds/grpc/xds_http_rbac_filter.cc +85 -67
  1833. data/src/core/xds/grpc/xds_http_rbac_filter.h +13 -9
  1834. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +24 -17
  1835. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +13 -9
  1836. data/src/core/xds/grpc/xds_lb_policy_registry.cc +23 -27
  1837. data/src/core/xds/grpc/xds_lb_policy_registry.h +4 -5
  1838. data/src/core/xds/grpc/xds_listener.cc +5 -8
  1839. data/src/core/xds/grpc/xds_listener.h +11 -12
  1840. data/src/core/xds/grpc/xds_listener_parser.cc +72 -69
  1841. data/src/core/xds/grpc/xds_listener_parser.h +3 -3
  1842. data/src/core/xds/grpc/xds_metadata.cc +62 -0
  1843. data/src/core/xds/grpc/xds_metadata.h +158 -0
  1844. data/src/core/xds/grpc/xds_metadata_parser.cc +197 -0
  1845. data/src/core/xds/grpc/xds_metadata_parser.h +35 -0
  1846. data/src/core/xds/grpc/xds_route_config.cc +12 -18
  1847. data/src/core/xds/grpc/xds_route_config.h +11 -12
  1848. data/src/core/xds/grpc/xds_route_config_parser.cc +135 -144
  1849. data/src/core/xds/grpc/xds_route_config_parser.h +7 -10
  1850. data/src/core/xds/grpc/xds_routing.cc +65 -32
  1851. data/src/core/xds/grpc/xds_routing.h +16 -10
  1852. data/src/core/xds/grpc/xds_server_grpc.cc +23 -3
  1853. data/src/core/xds/grpc/xds_server_grpc.h +7 -4
  1854. data/src/core/xds/grpc/xds_server_grpc_interface.h +33 -0
  1855. data/src/core/xds/grpc/xds_transport_grpc.cc +99 -56
  1856. data/src/core/xds/grpc/xds_transport_grpc.h +33 -22
  1857. data/src/core/xds/xds_client/lrs_client.cc +1280 -0
  1858. data/src/core/xds/xds_client/lrs_client.h +394 -0
  1859. data/src/core/xds/xds_client/xds_api.cc +28 -465
  1860. data/src/core/xds/xds_client/xds_api.h +6 -161
  1861. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +63 -0
  1862. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +59 -0
  1863. data/src/core/xds/xds_client/xds_bootstrap.cc +12 -3
  1864. data/src/core/xds/xds_client/xds_bootstrap.h +9 -2
  1865. data/src/core/xds/xds_client/xds_client.cc +1109 -1362
  1866. data/src/core/xds/xds_client/xds_client.h +167 -114
  1867. data/src/core/xds/xds_client/xds_locality.h +102 -0
  1868. data/src/core/xds/xds_client/xds_metrics.h +2 -2
  1869. data/src/core/xds/xds_client/xds_resource_type.h +6 -8
  1870. data/src/core/xds/xds_client/xds_resource_type_impl.h +15 -11
  1871. data/src/core/xds/xds_client/xds_transport.h +29 -14
  1872. data/src/ruby/ext/grpc/extconf.rb +2 -1
  1873. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -3
  1874. data/src/ruby/ext/grpc/rb_call.c +6 -6
  1875. data/src/ruby/ext/grpc/rb_call_credentials.c +39 -33
  1876. data/src/ruby/ext/grpc/rb_channel.c +28 -23
  1877. data/src/ruby/ext/grpc/rb_channel_args.c +3 -3
  1878. data/src/ruby/ext/grpc/rb_channel_credentials.c +5 -6
  1879. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -2
  1880. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -4
  1881. data/src/ruby/ext/grpc/rb_compression_options.c +6 -7
  1882. data/src/ruby/ext/grpc/rb_event_thread.c +7 -7
  1883. data/src/ruby/ext/grpc/rb_grpc.c +12 -12
  1884. data/src/ruby/ext/grpc/rb_grpc.h +2 -3
  1885. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -10
  1886. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -15
  1887. data/src/ruby/ext/grpc/rb_server.c +16 -14
  1888. data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
  1889. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -2
  1890. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +5 -6
  1891. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +1 -2
  1892. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +4 -4
  1893. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -2
  1894. data/src/ruby/lib/grpc/generic/active_call.rb +8 -5
  1895. data/src/ruby/lib/grpc/version.rb +1 -1
  1896. data/src/ruby/spec/call_spec.rb +53 -40
  1897. data/src/ruby/spec/channel_spec.rb +4 -2
  1898. data/src/ruby/spec/client_server_spec.rb +148 -507
  1899. data/src/ruby/spec/generic/active_call_spec.rb +64 -86
  1900. data/src/ruby/spec/generic/client_stub_spec.rb +20 -20
  1901. data/src/ruby/spec/support/services.rb +3 -0
  1902. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -18
  1903. data/third_party/abseil-cpp/absl/base/attributes.h +84 -0
  1904. data/third_party/abseil-cpp/absl/base/config.h +32 -51
  1905. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +0 -16
  1906. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +3 -1
  1907. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +13 -3
  1908. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -12
  1909. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +4 -4
  1910. data/third_party/abseil-cpp/absl/base/macros.h +48 -0
  1911. data/third_party/abseil-cpp/absl/base/no_destructor.h +35 -40
  1912. data/third_party/abseil-cpp/absl/base/nullability.h +33 -7
  1913. data/third_party/abseil-cpp/absl/base/optimization.h +11 -0
  1914. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1915. data/third_party/abseil-cpp/absl/base/prefetch.h +1 -1
  1916. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +68 -12
  1917. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +60 -6
  1918. data/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
  1919. data/third_party/abseil-cpp/absl/container/inlined_vector.h +13 -0
  1920. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +20 -11
  1921. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +15 -16
  1922. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +34 -1
  1923. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +68 -1
  1924. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +50 -0
  1925. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +22 -7
  1926. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +26 -8
  1927. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +39 -35
  1928. data/third_party/abseil-cpp/absl/container/internal/layout.h +190 -74
  1929. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +8 -6
  1930. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +334 -71
  1931. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1299 -458
  1932. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +19 -17
  1933. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +4 -3
  1934. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +2 -1
  1935. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +12 -8
  1936. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +1 -1
  1937. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +11 -7
  1938. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +18 -17
  1939. data/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
  1940. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
  1941. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
  1942. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1057 -86
  1943. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +3 -0
  1944. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
  1945. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +42 -0
  1946. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +43 -16
  1947. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +8 -7
  1948. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +10 -7
  1949. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
  1950. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
  1951. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +11 -0
  1952. data/third_party/abseil-cpp/absl/flags/flag.h +2 -0
  1953. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +117 -30
  1954. data/third_party/abseil-cpp/absl/flags/internal/flag.h +192 -30
  1955. data/third_party/abseil-cpp/absl/flags/reflection.cc +10 -0
  1956. data/third_party/abseil-cpp/absl/functional/any_invocable.h +13 -3
  1957. data/third_party/abseil-cpp/absl/functional/bind_front.h +3 -2
  1958. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +7 -7
  1959. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +9 -9
  1960. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -1
  1961. data/third_party/abseil-cpp/absl/hash/internal/hash.h +13 -3
  1962. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +60 -28
  1963. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +4 -0
  1964. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +3 -3
  1965. data/third_party/abseil-cpp/absl/log/globals.h +28 -15
  1966. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +20 -0
  1967. data/third_party/abseil-cpp/absl/log/internal/check_op.h +63 -21
  1968. data/third_party/abseil-cpp/absl/log/internal/conditions.h +2 -2
  1969. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +23 -23
  1970. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +104 -47
  1971. data/third_party/abseil-cpp/absl/log/internal/log_message.h +23 -4
  1972. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -10
  1973. data/third_party/abseil-cpp/absl/log/internal/strip.h +36 -0
  1974. data/third_party/abseil-cpp/absl/log/log.h +5 -1
  1975. data/third_party/abseil-cpp/absl/log/log_sink.h +11 -4
  1976. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +3 -3
  1977. data/third_party/abseil-cpp/absl/meta/type_traits.h +138 -42
  1978. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -3
  1979. data/third_party/abseil-cpp/absl/numeric/int128.h +35 -5
  1980. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +14 -0
  1981. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +18 -0
  1982. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +6 -2
  1983. data/third_party/abseil-cpp/absl/random/beta_distribution.h +8 -8
  1984. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +9 -7
  1985. data/third_party/abseil-cpp/absl/random/distributions.h +11 -11
  1986. data/third_party/abseil-cpp/absl/random/seed_sequences.h +2 -0
  1987. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +61 -2
  1988. data/third_party/abseil-cpp/absl/status/status.cc +0 -4
  1989. data/third_party/abseil-cpp/absl/status/status.h +4 -4
  1990. data/third_party/abseil-cpp/absl/status/statusor.h +108 -142
  1991. data/third_party/abseil-cpp/absl/strings/ascii.cc +32 -71
  1992. data/third_party/abseil-cpp/absl/strings/cord.cc +20 -15
  1993. data/third_party/abseil-cpp/absl/strings/cord.h +68 -7
  1994. data/third_party/abseil-cpp/absl/strings/escaping.cc +96 -21
  1995. data/third_party/abseil-cpp/absl/strings/escaping.h +25 -8
  1996. data/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +1 -0
  1997. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +10 -0
  1998. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +29 -9
  1999. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +2 -2
  2000. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +19 -13
  2001. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +23 -13
  2002. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +24 -24
  2003. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +12 -7
  2004. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +9 -4
  2005. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +5 -2
  2006. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +23 -2
  2007. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +5 -1
  2008. data/third_party/abseil-cpp/absl/strings/numbers.cc +107 -333
  2009. data/third_party/abseil-cpp/absl/strings/numbers.h +12 -151
  2010. data/third_party/abseil-cpp/absl/strings/str_cat.cc +49 -142
  2011. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -85
  2012. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -1
  2013. data/third_party/abseil-cpp/absl/strings/str_join.h +19 -5
  2014. data/third_party/abseil-cpp/absl/strings/str_split.h +2 -2
  2015. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  2016. data/third_party/abseil-cpp/absl/strings/substitute.cc +4 -0
  2017. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -2
  2018. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +5 -0
  2019. data/third_party/abseil-cpp/absl/synchronization/mutex.h +5 -4
  2020. data/third_party/abseil-cpp/absl/time/civil_time.h +2 -2
  2021. data/third_party/abseil-cpp/absl/time/clock.cc +15 -1
  2022. data/third_party/abseil-cpp/absl/time/duration.cc +58 -53
  2023. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  2024. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  2025. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +0 -29
  2026. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  2027. data/third_party/abseil-cpp/absl/time/time.h +73 -29
  2028. data/third_party/abseil-cpp/absl/types/compare.h +505 -0
  2029. data/third_party/abseil-cpp/absl/types/internal/optional.h +2 -2
  2030. data/third_party/abseil-cpp/absl/types/internal/variant.h +55 -67
  2031. data/third_party/abseil-cpp/absl/types/optional.h +15 -18
  2032. data/third_party/abseil-cpp/absl/types/span.h +3 -2
  2033. data/third_party/abseil-cpp/absl/types/variant.h +19 -24
  2034. data/third_party/abseil-cpp/absl/utility/utility.h +3 -41
  2035. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +243 -0
  2036. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.cc +53 -0
  2037. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.cc +47 -0
  2038. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.cc +42 -0
  2039. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.cc +109 -0
  2040. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.cc +43 -0
  2041. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +424 -0
  2042. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.cc +239 -0
  2043. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.cc +193 -0
  2044. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.cc +32 -0
  2045. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.cc +415 -0
  2046. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.cc +206 -0
  2047. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.cc +224 -0
  2048. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.cc +172 -0
  2049. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.cc +109 -0
  2050. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.cc +355 -0
  2051. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.cc +61 -0
  2052. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.cc +56 -0
  2053. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.cc +63 -0
  2054. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.cc +52 -0
  2055. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -57
  2056. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.cc +241 -0
  2057. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +932 -0
  2058. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +669 -0
  2059. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.cc +164 -0
  2060. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.cc +276 -0
  2061. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +84 -0
  2062. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.cc +229 -0
  2063. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.cc +434 -0
  2064. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +119 -0
  2065. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.cc +658 -0
  2066. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.cc +268 -0
  2067. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +511 -0
  2068. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.cc +50 -0
  2069. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.cc +193 -0
  2070. data/third_party/boringssl-with-bazel/src/crypto/bio/file.cc +292 -0
  2071. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.cc +152 -0
  2072. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +13 -55
  2073. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.cc +446 -0
  2074. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.cc +59 -0
  2075. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +147 -0
  2076. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +133 -0
  2077. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.cc +169 -0
  2078. data/third_party/boringssl-with-bazel/src/crypto/bn/bn_asn1.cc +57 -0
  2079. data/third_party/boringssl-with-bazel/src/crypto/bn/convert.cc +423 -0
  2080. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.cc +118 -0
  2081. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.cc +53 -0
  2082. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.cc +266 -0
  2083. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +702 -0
  2084. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +912 -0
  2085. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +13 -13
  2086. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.cc +156 -0
  2087. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.cc +224 -0
  2088. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +18 -18
  2089. data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +110 -0
  2090. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesctrhmac.cc +279 -0
  2091. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesgcmsiv.cc +845 -0
  2092. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_chacha20poly1305.cc +341 -0
  2093. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_des.cc +198 -0
  2094. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_null.cc +51 -0
  2095. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc2.cc +417 -0
  2096. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc4.cc +54 -0
  2097. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_tls.cc +599 -0
  2098. data/third_party/boringssl-with-bazel/src/crypto/cipher/get_cipher.cc +85 -0
  2099. data/third_party/boringssl-with-bazel/src/crypto/cipher/internal.h +240 -0
  2100. data/third_party/boringssl-with-bazel/src/crypto/cipher/tls_cbc.cc +476 -0
  2101. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.cc +631 -0
  2102. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +13 -13
  2103. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +75 -0
  2104. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +55 -0
  2105. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +62 -0
  2106. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +61 -0
  2107. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +94 -0
  2108. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +41 -0
  2109. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +54 -0
  2110. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +151 -0
  2111. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +13 -13
  2112. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +287 -0
  2113. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +183 -0
  2114. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.cc +2154 -0
  2115. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.cc +18 -0
  2116. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +13 -13
  2117. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +13 -13
  2118. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.cc +529 -0
  2119. data/third_party/boringssl-with-bazel/src/crypto/des/des.cc +829 -0
  2120. data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +27 -69
  2121. data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +124 -0
  2122. data/third_party/boringssl-with-bazel/src/crypto/dh/params.cc +442 -0
  2123. data/third_party/boringssl-with-bazel/src/crypto/digest/digest_extra.cc +306 -0
  2124. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +951 -0
  2125. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +379 -0
  2126. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +13 -15
  2127. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_asn1.cc +570 -0
  2128. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_derive.cc +96 -0
  2129. data/third_party/boringssl-with-bazel/src/crypto/ec/hash_to_curve.cc +510 -0
  2130. data/third_party/boringssl-with-bazel/src/crypto/ec/internal.h +78 -0
  2131. data/third_party/boringssl-with-bazel/src/crypto/ecdh/ecdh.cc +73 -0
  2132. data/third_party/boringssl-with-bazel/src/crypto/ecdsa/ecdsa_asn1.cc +357 -0
  2133. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.cc +95 -0
  2134. data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +810 -0
  2135. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +13 -13
  2136. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.cc +379 -0
  2137. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.cc +471 -0
  2138. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +440 -0
  2139. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +13 -55
  2140. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.cc +153 -0
  2141. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.cc +142 -0
  2142. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +279 -0
  2143. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.cc +230 -0
  2144. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +286 -0
  2145. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.cc +103 -0
  2146. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +225 -0
  2147. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.cc +236 -0
  2148. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.cc +609 -0
  2149. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +198 -0
  2150. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.cc +109 -0
  2151. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +237 -0
  2152. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.cc +98 -0
  2153. data/third_party/boringssl-with-bazel/src/crypto/evp/print.cc +342 -0
  2154. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.cc +216 -0
  2155. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +114 -0
  2156. data/third_party/boringssl-with-bazel/src/crypto/ex_data.cc +141 -0
  2157. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +191 -0
  2158. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.cc.inc +1281 -0
  2159. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/cbc.cc.inc +130 -0
  2160. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/cfb.cc.inc +166 -0
  2161. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ctr.cc.inc +100 -0
  2162. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm.cc.inc +604 -0
  2163. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm_nohw.cc.inc +302 -0
  2164. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +421 -70
  2165. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +208 -0
  2166. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +84 -0
  2167. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ofb.cc.inc +53 -0
  2168. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/polyval.cc.inc +89 -0
  2169. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +282 -0
  2170. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +729 -0
  2171. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.cc.inc +269 -0
  2172. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +554 -0
  2173. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.cc.inc +374 -0
  2174. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.cc.inc +225 -0
  2175. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.cc.inc +159 -0
  2176. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.cc.inc +191 -0
  2177. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +825 -0
  2178. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.cc.inc +87 -0
  2179. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +1227 -0
  2180. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +300 -0
  2181. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +339 -0
  2182. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.cc.inc +582 -0
  2183. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +25 -134
  2184. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +108 -0
  2185. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +430 -0
  2186. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.cc.inc +222 -0
  2187. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +698 -0
  2188. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +980 -0
  2189. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.cc.inc +260 -0
  2190. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.cc.inc +142 -0
  2191. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +20 -17
  2192. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +320 -0
  2193. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +459 -0
  2194. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.cc.inc +295 -0
  2195. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.cc.inc +672 -0
  2196. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +1242 -0
  2197. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.cc.inc +409 -0
  2198. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +14 -65
  2199. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.cc.inc +288 -0
  2200. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +26 -22
  2201. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.cc.inc +203 -0
  2202. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +443 -0
  2203. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +13 -15
  2204. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +250 -0
  2205. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.cc.inc +178 -0
  2206. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +13 -55
  2207. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +13 -47
  2208. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.cc.inc +226 -0
  2209. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +91 -91
  2210. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +986 -0
  2211. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +501 -0
  2212. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.cc.inc +439 -0
  2213. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.cc.inc +104 -0
  2214. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +19 -66
  2215. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +306 -0
  2216. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.cc.inc +1163 -0
  2217. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +15 -10
  2218. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.cc.inc +741 -0
  2219. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +87 -25
  2220. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.cc.inc +749 -0
  2221. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +13 -13
  2222. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.cc.inc +179 -0
  2223. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.cc.inc +284 -0
  2224. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.cc.inc +269 -0
  2225. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.cc.inc +255 -0
  2226. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.cc.inc +221 -0
  2227. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.cc.inc +88 -0
  2228. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +278 -0
  2229. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +41 -24
  2230. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.cc +28 -0
  2231. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.cc.inc +112 -0
  2232. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.cc.inc +215 -0
  2233. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/internal.h +70 -0
  2234. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/keccak.cc.inc +279 -0
  2235. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +1993 -0
  2236. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +1165 -0
  2237. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.cc.inc +214 -0
  2238. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +19 -104
  2239. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +483 -0
  2240. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.cc.inc +147 -0
  2241. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +13 -56
  2242. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +379 -0
  2243. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +983 -0
  2244. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1296 -0
  2245. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  2246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +1042 -0
  2247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +36 -36
  2248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +327 -0
  2249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +43 -57
  2250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.cc.inc +390 -0
  2251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.cc.inc +299 -0
  2252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  2253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/address.h +119 -0
  2254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.cc.inc +169 -0
  2255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.h +58 -0
  2256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.cc.inc +161 -0
  2257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.h +70 -0
  2258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/params.h +78 -0
  2259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +329 -0
  2260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.cc.inc +173 -0
  2261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.h +85 -0
  2262. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.cc.inc +171 -0
  2263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.h +50 -0
  2264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +13 -13
  2265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  2266. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.cc +1095 -0
  2267. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.cc +2185 -0
  2268. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +13 -13
  2269. data/third_party/boringssl-with-bazel/src/crypto/internal.h +302 -447
  2270. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +13 -13
  2271. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.cc +869 -0
  2272. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +31 -75
  2273. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.cc +309 -0
  2274. data/third_party/boringssl-with-bazel/src/crypto/md4/md4.cc +194 -0
  2275. data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +37 -0
  2276. data/third_party/boringssl-with-bazel/src/crypto/md5/md5.cc +243 -0
  2277. data/third_party/boringssl-with-bazel/src/crypto/mem.cc +583 -0
  2278. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.cc +90 -0
  2279. data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +152 -0
  2280. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +519 -0
  2281. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +18 -57
  2282. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.cc +80 -0
  2283. data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +44 -0
  2284. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.cc +149 -0
  2285. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.cc +254 -0
  2286. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +741 -0
  2287. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.cc +45 -0
  2288. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.cc +208 -0
  2289. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.cc +141 -0
  2290. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.cc +22 -0
  2291. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.cc +22 -0
  2292. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +13 -13
  2293. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +193 -0
  2294. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +526 -0
  2295. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +14 -54
  2296. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +275 -0
  2297. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +487 -0
  2298. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +1304 -0
  2299. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +13 -13
  2300. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.cc +314 -0
  2301. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.cc +310 -0
  2302. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.cc +850 -0
  2303. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +13 -13
  2304. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.cc +262 -0
  2305. data/third_party/boringssl-with-bazel/src/crypto/rand/deterministic.cc +65 -0
  2306. data/third_party/boringssl-with-bazel/src/crypto/rand/fork_detect.cc +194 -0
  2307. data/third_party/boringssl-with-bazel/src/crypto/rand/forkunsafe.cc +44 -0
  2308. data/third_party/boringssl-with-bazel/src/crypto/rand/getentropy.cc +60 -0
  2309. data/third_party/boringssl-with-bazel/src/crypto/rand/getrandom_fillin.h +64 -0
  2310. data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +42 -0
  2311. data/third_party/boringssl-with-bazel/src/crypto/rand/passive.cc +178 -0
  2312. data/third_party/boringssl-with-bazel/src/crypto/rand/rand.cc +77 -0
  2313. data/third_party/boringssl-with-bazel/src/crypto/rand/sysrand_internal.h +37 -0
  2314. data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +46 -0
  2315. data/third_party/boringssl-with-bazel/src/crypto/rand/urandom.cc +328 -0
  2316. data/third_party/boringssl-with-bazel/src/crypto/rand/windows.cc +102 -0
  2317. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.cc +56 -0
  2318. data/third_party/boringssl-with-bazel/src/crypto/refcount.cc +59 -0
  2319. data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +36 -0
  2320. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_asn1.cc +283 -0
  2321. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_crypt.cc +531 -0
  2322. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_extra.cc +19 -0
  2323. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_print.cc +27 -0
  2324. data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +52 -0
  2325. data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +87 -0
  2326. data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +104 -0
  2327. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.cc +79 -0
  2328. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +113 -0
  2329. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +204 -0
  2330. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/spake2plus.cc +501 -0
  2331. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.cc +496 -0
  2332. data/third_party/boringssl-with-bazel/src/crypto/thread.cc +68 -0
  2333. data/third_party/boringssl-with-bazel/src/crypto/thread_none.cc +51 -0
  2334. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.cc +151 -0
  2335. data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +240 -0
  2336. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +13 -13
  2337. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.cc +1656 -0
  2338. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.cc +685 -0
  2339. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.cc +1263 -0
  2340. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.cc +52 -0
  2341. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +97 -0
  2342. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.cc +74 -0
  2343. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.cc +136 -0
  2344. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +542 -0
  2345. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.cc +355 -0
  2346. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.cc +227 -0
  2347. data/third_party/boringssl-with-bazel/src/crypto/x509/ext_dat.h +13 -55
  2348. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.cc +37 -0
  2349. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +13 -57
  2350. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.cc +185 -0
  2351. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.cc +796 -0
  2352. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.cc +364 -0
  2353. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.cc +103 -0
  2354. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.cc +203 -0
  2355. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.cc +287 -0
  2356. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.cc +79 -0
  2357. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.cc +181 -0
  2358. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.cc +31 -0
  2359. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.cc +593 -0
  2360. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.cc +95 -0
  2361. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.cc +102 -0
  2362. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +374 -0
  2363. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.cc +444 -0
  2364. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.cc +557 -0
  2365. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.cc +73 -0
  2366. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.cc +114 -0
  2367. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.cc +228 -0
  2368. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.cc +79 -0
  2369. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +164 -0
  2370. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.cc +81 -0
  2371. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.cc +304 -0
  2372. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.cc +514 -0
  2373. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.cc +89 -0
  2374. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.cc +101 -0
  2375. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.cc +109 -0
  2376. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.cc +183 -0
  2377. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.cc +590 -0
  2378. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.cc +131 -0
  2379. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.cc +1342 -0
  2380. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.cc +47 -0
  2381. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.cc +186 -0
  2382. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.cc +238 -0
  2383. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.cc +66 -0
  2384. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.cc +44 -0
  2385. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.cc +139 -0
  2386. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.cc +554 -0
  2387. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.cc +164 -0
  2388. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.cc +257 -0
  2389. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.cc +198 -0
  2390. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.cc +118 -0
  2391. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.cc +147 -0
  2392. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.cc +249 -0
  2393. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +1600 -0
  2394. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.cc +440 -0
  2395. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.cc +235 -0
  2396. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.cc +365 -0
  2397. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.cc +67 -0
  2398. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.cc +91 -0
  2399. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +107 -0
  2400. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.cc +318 -0
  2401. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.cc +55 -0
  2402. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.cc +342 -0
  2403. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.cc +36 -0
  2404. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +492 -0
  2405. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.cc +170 -0
  2406. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.cc +74 -0
  2407. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.cc +51 -0
  2408. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.cc +34 -0
  2409. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.cc +28 -0
  2410. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +506 -0
  2411. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +169 -0
  2412. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +1529 -0
  2413. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +13 -13
  2414. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +13 -47
  2415. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +13 -51
  2416. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +14 -14
  2417. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +37 -63
  2418. data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +13 -13
  2419. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +248 -328
  2420. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +24 -55
  2421. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +13 -55
  2422. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
  2423. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +13 -55
  2424. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +13 -13
  2425. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +13 -55
  2426. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +28 -130
  2427. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +13 -55
  2428. data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +13 -13
  2429. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +31 -16
  2430. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +13 -55
  2431. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +13 -13
  2432. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +31 -59
  2433. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +13 -13
  2434. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +13 -55
  2435. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +13 -13
  2436. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -14
  2437. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +13 -13
  2438. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +13 -13
  2439. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +13 -55
  2440. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -55
  2441. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -56
  2442. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -58
  2443. data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +13 -13
  2444. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +13 -13
  2445. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +14 -66
  2446. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +31 -72
  2447. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +14 -65
  2448. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +13 -51
  2449. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +13 -13
  2450. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -107
  2451. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +14 -56
  2452. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +13 -55
  2453. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +13 -107
  2454. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +13 -13
  2455. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +13 -13
  2456. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +13 -55
  2457. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +21 -19
  2458. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +13 -13
  2459. data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +13 -13
  2460. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +13 -13
  2461. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +13 -55
  2462. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +13 -55
  2463. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +13 -55
  2464. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +13 -55
  2465. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +130 -0
  2466. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +222 -0
  2467. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +30 -69
  2468. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +13 -55
  2469. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +13 -13
  2470. data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +13 -13
  2471. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +13 -13
  2472. data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +13 -13
  2473. data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +13 -13
  2474. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +25 -64
  2475. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +13 -13
  2476. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +13 -13
  2477. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +13 -55
  2478. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +13 -13
  2479. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +13 -13
  2480. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +13 -13
  2481. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -13
  2482. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +13 -55
  2483. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +13 -55
  2484. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +23 -63
  2485. data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +13 -13
  2486. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +15 -15
  2487. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +15 -95
  2488. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +13 -13
  2489. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +174 -0
  2490. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +42 -28
  2491. data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +13 -13
  2492. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +382 -284
  2493. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +15 -114
  2494. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +13 -55
  2495. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +23 -13
  2496. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +15 -57
  2497. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +13 -13
  2498. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -156
  2499. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +15 -15
  2500. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +13 -55
  2501. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +14 -61
  2502. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +13 -13
  2503. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +13 -13
  2504. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +13 -53
  2505. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +15 -14
  2506. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +684 -439
  2507. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +129 -168
  2508. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +176 -126
  2509. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +21 -127
  2510. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +112 -97
  2511. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +454 -221
  2512. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +54 -47
  2513. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +679 -475
  2514. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +66 -73
  2515. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +61 -153
  2516. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +232 -334
  2517. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +102 -215
  2518. data/third_party/boringssl-with-bazel/src/ssl/internal.h +993 -482
  2519. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +87 -169
  2520. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +29 -159
  2521. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +39 -113
  2522. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +103 -111
  2523. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +52 -145
  2524. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +22 -24
  2525. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +117 -157
  2526. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +229 -365
  2527. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +216 -31
  2528. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +13 -109
  2529. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +127 -32
  2530. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +209 -336
  2531. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +38 -83
  2532. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +101 -236
  2533. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +17 -91
  2534. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +109 -157
  2535. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +47 -27
  2536. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +66 -195
  2537. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -176
  2538. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +58 -42
  2539. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +152 -86
  2540. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +296 -163
  2541. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +247 -108
  2542. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +64 -117
  2543. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +55 -157
  2544. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +6 -0
  2545. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +6 -0
  2546. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +4 -1
  2547. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1 -1
  2548. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +3 -0
  2549. data/third_party/upb/upb/json/decode.c +59 -13
  2550. data/third_party/upb/upb/json/decode.h +26 -3
  2551. data/third_party/upb/upb/json/encode.c +2 -2
  2552. data/third_party/upb/upb/lex/round_trip.c +10 -0
  2553. data/third_party/upb/upb/mem/arena.c +13 -2
  2554. data/third_party/upb/upb/mem/arena.h +9 -0
  2555. data/third_party/upb/upb/mem/arena.hpp +5 -1
  2556. data/third_party/upb/upb/message/accessors.c +2 -4
  2557. data/third_party/upb/upb/message/accessors.h +178 -379
  2558. data/third_party/upb/upb/message/copy.c +11 -7
  2559. data/third_party/upb/upb/message/internal/accessors.h +578 -26
  2560. data/third_party/upb/upb/message/internal/extension.c +1 -0
  2561. data/third_party/upb/upb/message/internal/message.c +13 -14
  2562. data/third_party/upb/upb/message/internal/message.h +8 -7
  2563. data/third_party/upb/upb/message/merge.c +38 -0
  2564. data/third_party/upb/upb/message/merge.h +26 -0
  2565. data/third_party/upb/upb/message/message.h +6 -10
  2566. data/third_party/upb/upb/message/value.h +26 -0
  2567. data/third_party/upb/upb/mini_descriptor/decode.c +7 -2
  2568. data/third_party/upb/upb/mini_descriptor/link.c +7 -3
  2569. data/third_party/upb/upb/mini_table/extension_registry.c +18 -0
  2570. data/third_party/upb/upb/mini_table/extension_registry.h +17 -0
  2571. data/third_party/upb/upb/mini_table/internal/extension.h +9 -0
  2572. data/third_party/upb/upb/mini_table/internal/message.c +21 -1
  2573. data/third_party/upb/upb/mini_table/internal/message.h +40 -20
  2574. data/third_party/upb/upb/mini_table/internal/sub.h +5 -0
  2575. data/third_party/upb/upb/mini_table/message.h +11 -1
  2576. data/third_party/upb/upb/port/def.inc +99 -9
  2577. data/third_party/upb/upb/port/undef.inc +7 -0
  2578. data/third_party/upb/upb/reflection/common.h +1 -11
  2579. data/third_party/upb/upb/reflection/def.hpp +8 -0
  2580. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +19 -0
  2581. data/third_party/upb/upb/reflection/field_def.c +11 -22
  2582. data/third_party/upb/upb/reflection/field_def.h +1 -0
  2583. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  2584. data/third_party/upb/upb/reflection/message.c +8 -3
  2585. data/third_party/upb/upb/reflection/message.h +2 -2
  2586. data/third_party/upb/upb/text/encode.c +51 -394
  2587. data/third_party/upb/upb/text/encode.h +1 -11
  2588. data/third_party/upb/upb/text/internal/encode.c +180 -0
  2589. data/third_party/upb/upb/text/internal/encode.h +240 -0
  2590. data/third_party/upb/upb/text/options.h +22 -0
  2591. data/third_party/upb/upb/wire/decode.c +71 -39
  2592. data/third_party/upb/upb/wire/decode.h +4 -1
  2593. data/third_party/upb/upb/wire/encode.c +41 -18
  2594. data/third_party/upb/upb/wire/encode.h +3 -0
  2595. data/third_party/upb/upb/wire/internal/decode_fast.c +3 -0
  2596. metadata +525 -460
  2597. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +0 -45
  2598. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +0 -67
  2599. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +0 -419
  2600. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +0 -84
  2601. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +0 -30
  2602. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +0 -400
  2603. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +0 -118
  2604. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +0 -33
  2605. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +0 -107
  2606. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +0 -32
  2607. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -66
  2608. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -47
  2609. data/src/core/lib/avl/avl.h +0 -325
  2610. data/src/core/lib/backoff/backoff.cc +0 -47
  2611. data/src/core/lib/backoff/backoff.h +0 -89
  2612. data/src/core/lib/backoff/random_early_detection.cc +0 -33
  2613. data/src/core/lib/backoff/random_early_detection.h +0 -62
  2614. data/src/core/lib/config/config_vars.cc +0 -142
  2615. data/src/core/lib/config/config_vars.h +0 -121
  2616. data/src/core/lib/config/config_vars_non_generated.cc +0 -49
  2617. data/src/core/lib/config/core_configuration.cc +0 -112
  2618. data/src/core/lib/config/core_configuration.h +0 -244
  2619. data/src/core/lib/config/load_config.cc +0 -79
  2620. data/src/core/lib/config/load_config.h +0 -55
  2621. data/src/core/lib/debug/event_log.cc +0 -88
  2622. data/src/core/lib/debug/event_log.h +0 -81
  2623. data/src/core/lib/gprpp/atomic_utils.h +0 -47
  2624. data/src/core/lib/gprpp/bitset.h +0 -225
  2625. data/src/core/lib/gprpp/chunked_vector.h +0 -258
  2626. data/src/core/lib/gprpp/construct_destruct.h +0 -40
  2627. data/src/core/lib/gprpp/cpp_impl_of.h +0 -49
  2628. data/src/core/lib/gprpp/crash.cc +0 -41
  2629. data/src/core/lib/gprpp/crash.h +0 -37
  2630. data/src/core/lib/gprpp/debug_location.h +0 -106
  2631. data/src/core/lib/gprpp/directory_reader.h +0 -48
  2632. data/src/core/lib/gprpp/down_cast.h +0 -49
  2633. data/src/core/lib/gprpp/dual_ref_counted.h +0 -377
  2634. data/src/core/lib/gprpp/dump_args.cc +0 -54
  2635. data/src/core/lib/gprpp/dump_args.h +0 -117
  2636. data/src/core/lib/gprpp/env.h +0 -53
  2637. data/src/core/lib/gprpp/examine_stack.cc +0 -43
  2638. data/src/core/lib/gprpp/examine_stack.h +0 -45
  2639. data/src/core/lib/gprpp/fork.cc +0 -241
  2640. data/src/core/lib/gprpp/fork.h +0 -98
  2641. data/src/core/lib/gprpp/glob.h +0 -29
  2642. data/src/core/lib/gprpp/host_port.cc +0 -116
  2643. data/src/core/lib/gprpp/host_port.h +0 -57
  2644. data/src/core/lib/gprpp/if_list.h +0 -4530
  2645. data/src/core/lib/gprpp/linux/env.cc +0 -62
  2646. data/src/core/lib/gprpp/load_file.cc +0 -77
  2647. data/src/core/lib/gprpp/load_file.h +0 -34
  2648. data/src/core/lib/gprpp/manual_constructor.h +0 -146
  2649. data/src/core/lib/gprpp/match.h +0 -75
  2650. data/src/core/lib/gprpp/memory.h +0 -52
  2651. data/src/core/lib/gprpp/mpscq.cc +0 -108
  2652. data/src/core/lib/gprpp/mpscq.h +0 -100
  2653. data/src/core/lib/gprpp/no_destruct.h +0 -95
  2654. data/src/core/lib/gprpp/notification.h +0 -67
  2655. data/src/core/lib/gprpp/orphanable.h +0 -153
  2656. data/src/core/lib/gprpp/overload.h +0 -59
  2657. data/src/core/lib/gprpp/packed_table.h +0 -40
  2658. data/src/core/lib/gprpp/per_cpu.cc +0 -34
  2659. data/src/core/lib/gprpp/per_cpu.h +0 -103
  2660. data/src/core/lib/gprpp/posix/directory_reader.cc +0 -82
  2661. data/src/core/lib/gprpp/posix/env.cc +0 -47
  2662. data/src/core/lib/gprpp/posix/stat.cc +0 -55
  2663. data/src/core/lib/gprpp/posix/thd.cc +0 -246
  2664. data/src/core/lib/gprpp/ref_counted.h +0 -403
  2665. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -445
  2666. data/src/core/lib/gprpp/ref_counted_string.cc +0 -43
  2667. data/src/core/lib/gprpp/ref_counted_string.h +0 -161
  2668. data/src/core/lib/gprpp/single_set_ptr.h +0 -90
  2669. data/src/core/lib/gprpp/sorted_pack.h +0 -89
  2670. data/src/core/lib/gprpp/stat.h +0 -36
  2671. data/src/core/lib/gprpp/status_helper.cc +0 -434
  2672. data/src/core/lib/gprpp/status_helper.h +0 -162
  2673. data/src/core/lib/gprpp/strerror.cc +0 -41
  2674. data/src/core/lib/gprpp/strerror.h +0 -29
  2675. data/src/core/lib/gprpp/sync.h +0 -200
  2676. data/src/core/lib/gprpp/table.h +0 -460
  2677. data/src/core/lib/gprpp/tchar.cc +0 -49
  2678. data/src/core/lib/gprpp/tchar.h +0 -33
  2679. data/src/core/lib/gprpp/thd.h +0 -195
  2680. data/src/core/lib/gprpp/time.cc +0 -241
  2681. data/src/core/lib/gprpp/time.h +0 -380
  2682. data/src/core/lib/gprpp/time_averaged_stats.cc +0 -60
  2683. data/src/core/lib/gprpp/time_averaged_stats.h +0 -79
  2684. data/src/core/lib/gprpp/time_util.cc +0 -82
  2685. data/src/core/lib/gprpp/time_util.h +0 -41
  2686. data/src/core/lib/gprpp/type_list.h +0 -32
  2687. data/src/core/lib/gprpp/unique_type_name.h +0 -124
  2688. data/src/core/lib/gprpp/uuid_v4.cc +0 -37
  2689. data/src/core/lib/gprpp/uuid_v4.h +0 -36
  2690. data/src/core/lib/gprpp/validation_errors.cc +0 -74
  2691. data/src/core/lib/gprpp/validation_errors.h +0 -145
  2692. data/src/core/lib/gprpp/windows/directory_reader.cc +0 -81
  2693. data/src/core/lib/gprpp/windows/env.cc +0 -56
  2694. data/src/core/lib/gprpp/windows/stat.cc +0 -51
  2695. data/src/core/lib/gprpp/windows/thd.cc +0 -185
  2696. data/src/core/lib/gprpp/work_serializer.cc +0 -554
  2697. data/src/core/lib/gprpp/work_serializer.h +0 -106
  2698. data/src/core/lib/gprpp/xxhash_inline.h +0 -29
  2699. data/src/core/lib/iomgr/gethostname.h +0 -26
  2700. data/src/core/lib/iomgr/gethostname_fallback.cc +0 -30
  2701. data/src/core/lib/iomgr/gethostname_host_name_max.cc +0 -40
  2702. data/src/core/lib/iomgr/gethostname_sysconf.cc +0 -40
  2703. data/src/core/lib/iomgr/grpc_if_nametoindex.h +0 -30
  2704. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +0 -42
  2705. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +0 -37
  2706. data/src/core/lib/matchers/matchers.cc +0 -330
  2707. data/src/core/lib/matchers/matchers.h +0 -163
  2708. data/src/core/lib/uri/uri_parser.cc +0 -372
  2709. data/src/core/lib/uri/uri_parser.h +0 -101
  2710. data/src/core/resolver/binder/binder_resolver.cc +0 -155
  2711. data/src/core/util/android/log.cc +0 -48
  2712. data/src/core/util/atm.cc +0 -35
  2713. data/src/core/util/linux/log.cc +0 -69
  2714. data/src/core/util/posix/log.cc +0 -69
  2715. data/src/core/util/windows/log.cc +0 -73
  2716. data/src/core/xds/xds_client/xds_client_stats.cc +0 -171
  2717. data/src/core/xds/xds_client/xds_client_stats.h +0 -258
  2718. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +0 -44
  2719. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +0 -284
  2720. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +0 -95
  2721. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -89
  2722. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +0 -84
  2723. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +0 -151
  2724. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +0 -85
  2725. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +0 -465
  2726. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +0 -279
  2727. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +0 -235
  2728. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +0 -74
  2729. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +0 -457
  2730. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +0 -245
  2731. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +0 -259
  2732. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +0 -214
  2733. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -183
  2734. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -397
  2735. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +0 -103
  2736. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +0 -98
  2737. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +0 -105
  2738. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +0 -94
  2739. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +0 -241
  2740. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +0 -973
  2741. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +0 -708
  2742. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +0 -212
  2743. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +0 -317
  2744. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -126
  2745. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +0 -268
  2746. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +0 -479
  2747. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +0 -726
  2748. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +0 -309
  2749. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +0 -544
  2750. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +0 -92
  2751. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -235
  2752. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +0 -334
  2753. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c +0 -192
  2754. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +0 -480
  2755. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -102
  2756. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +0 -189
  2757. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +0 -133
  2758. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +0 -169
  2759. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +0 -57
  2760. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +0 -465
  2761. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +0 -158
  2762. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +0 -53
  2763. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +0 -266
  2764. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +0 -718
  2765. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +0 -911
  2766. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +0 -156
  2767. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -224
  2768. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +0 -127
  2769. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +0 -152
  2770. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +0 -284
  2771. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +0 -841
  2772. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +0 -348
  2773. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +0 -228
  2774. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +0 -90
  2775. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +0 -455
  2776. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +0 -94
  2777. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +0 -598
  2778. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +0 -237
  2779. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +0 -514
  2780. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +0 -672
  2781. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +0 -75
  2782. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -55
  2783. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -62
  2784. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +0 -61
  2785. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +0 -93
  2786. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +0 -41
  2787. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -54
  2788. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -151
  2789. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -277
  2790. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +0 -188
  2791. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +0 -2157
  2792. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +0 -18
  2793. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +0 -523
  2794. data/third_party/boringssl-with-bazel/src/crypto/des/des.c +0 -871
  2795. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +0 -165
  2796. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +0 -480
  2797. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -266
  2798. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +0 -1539
  2799. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +0 -58
  2800. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +0 -997
  2801. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -419
  2802. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +0 -572
  2803. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +0 -96
  2804. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +0 -508
  2805. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -78
  2806. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +0 -124
  2807. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +0 -265
  2808. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +0 -91
  2809. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +0 -903
  2810. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +0 -430
  2811. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +0 -547
  2812. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +0 -483
  2813. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +0 -137
  2814. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +0 -120
  2815. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +0 -338
  2816. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +0 -274
  2817. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +0 -332
  2818. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +0 -100
  2819. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +0 -224
  2820. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +0 -232
  2821. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +0 -646
  2822. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +0 -241
  2823. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +0 -106
  2824. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +0 -236
  2825. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +0 -146
  2826. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +0 -381
  2827. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +0 -209
  2828. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +0 -156
  2829. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +0 -236
  2830. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -127
  2831. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +0 -1281
  2832. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +0 -242
  2833. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +0 -124
  2834. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +0 -278
  2835. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.c +0 -310
  2836. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -541
  2837. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +0 -428
  2838. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +0 -267
  2839. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +0 -201
  2840. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -234
  2841. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +0 -909
  2842. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +0 -87
  2843. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +0 -1320
  2844. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -397
  2845. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +0 -331
  2846. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +0 -624
  2847. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.c +0 -146
  2848. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +0 -532
  2849. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +0 -222
  2850. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +0 -744
  2851. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -1077
  2852. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +0 -356
  2853. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +0 -137
  2854. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +0 -363
  2855. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +0 -499
  2856. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +0 -287
  2857. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +0 -717
  2858. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +0 -1463
  2859. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.c +0 -446
  2860. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.c +0 -322
  2861. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +0 -245
  2862. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +0 -489
  2863. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +0 -288
  2864. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +0 -304
  2865. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.c +0 -267
  2866. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +0 -1043
  2867. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -557
  2868. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +0 -491
  2869. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +0 -104
  2870. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +0 -359
  2871. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +0 -1163
  2872. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +0 -642
  2873. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +0 -749
  2874. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +0 -173
  2875. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +0 -336
  2876. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +0 -269
  2877. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +0 -255
  2878. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -264
  2879. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +0 -130
  2880. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +0 -372
  2881. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +0 -29
  2882. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +0 -112
  2883. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +0 -256
  2884. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +0 -240
  2885. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +0 -37
  2886. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +0 -284
  2887. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +0 -164
  2888. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +0 -200
  2889. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +0 -196
  2890. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +0 -743
  2891. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +0 -302
  2892. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +0 -428
  2893. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +0 -87
  2894. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +0 -90
  2895. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +0 -220
  2896. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +0 -197
  2897. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +0 -68
  2898. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +0 -64
  2899. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -493
  2900. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -328
  2901. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -241
  2902. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +0 -423
  2903. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +0 -1038
  2904. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +0 -1351
  2905. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +0 -121
  2906. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +0 -1064
  2907. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +0 -328
  2908. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +0 -439
  2909. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +0 -359
  2910. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +0 -543
  2911. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +0 -218
  2912. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +0 -801
  2913. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +0 -2234
  2914. data/third_party/boringssl-with-bazel/src/crypto/keccak/internal.h +0 -70
  2915. data/third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c +0 -279
  2916. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +0 -845
  2917. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +0 -350
  2918. data/third_party/boringssl-with-bazel/src/crypto/mem.c +0 -609
  2919. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +0 -564
  2920. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c +0 -122
  2921. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -243
  2922. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -294
  2923. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -790
  2924. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +0 -87
  2925. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -251
  2926. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -183
  2927. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -64
  2928. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -64
  2929. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +0 -193
  2930. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -523
  2931. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +0 -316
  2932. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -527
  2933. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +0 -1352
  2934. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +0 -314
  2935. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +0 -308
  2936. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +0 -847
  2937. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +0 -261
  2938. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +0 -57
  2939. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +0 -44
  2940. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +0 -52
  2941. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +0 -34
  2942. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +0 -158
  2943. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +0 -74
  2944. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +0 -38
  2945. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +0 -95
  2946. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c +0 -98
  2947. data/third_party/boringssl-with-bazel/src/crypto/refcount.c +0 -59
  2948. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +0 -77
  2949. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +0 -324
  2950. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +0 -570
  2951. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +0 -22
  2952. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +0 -79
  2953. data/third_party/boringssl-with-bazel/src/crypto/spx/address.c +0 -101
  2954. data/third_party/boringssl-with-bazel/src/crypto/spx/address.h +0 -50
  2955. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.c +0 -133
  2956. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.h +0 -54
  2957. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.c +0 -150
  2958. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.h +0 -61
  2959. data/third_party/boringssl-with-bazel/src/crypto/spx/params.h +0 -71
  2960. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +0 -140
  2961. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c +0 -53
  2962. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h +0 -44
  2963. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.c +0 -136
  2964. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.h +0 -70
  2965. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.c +0 -135
  2966. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.h +0 -45
  2967. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +0 -534
  2968. data/third_party/boringssl-with-bazel/src/crypto/thread.c +0 -110
  2969. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -51
  2970. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -150
  2971. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +0 -236
  2972. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +0 -1668
  2973. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +0 -687
  2974. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +0 -1267
  2975. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +0 -94
  2976. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +0 -136
  2977. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +0 -116
  2978. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -178
  2979. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +0 -585
  2980. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +0 -400
  2981. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -269
  2982. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +0 -79
  2983. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +0 -227
  2984. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +0 -786
  2985. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +0 -401
  2986. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -145
  2987. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +0 -245
  2988. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -329
  2989. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +0 -121
  2990. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c +0 -221
  2991. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c +0 -73
  2992. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c +0 -634
  2993. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c +0 -135
  2994. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c +0 -141
  2995. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c +0 -416
  2996. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +0 -482
  2997. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +0 -598
  2998. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c +0 -112
  2999. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c +0 -154
  3000. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c +0 -270
  3001. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c +0 -122
  3002. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +0 -211
  3003. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c +0 -121
  3004. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +0 -344
  3005. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c +0 -555
  3006. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c +0 -81
  3007. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c +0 -142
  3008. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c +0 -150
  3009. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c +0 -224
  3010. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c +0 -624
  3011. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c +0 -170
  3012. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +0 -1390
  3013. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -89
  3014. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -227
  3015. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +0 -280
  3016. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +0 -108
  3017. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +0 -86
  3018. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +0 -181
  3019. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -599
  3020. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +0 -206
  3021. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +0 -299
  3022. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +0 -240
  3023. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +0 -160
  3024. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +0 -189
  3025. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +0 -291
  3026. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +0 -1638
  3027. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +0 -440
  3028. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +0 -277
  3029. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +0 -407
  3030. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +0 -109
  3031. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +0 -133
  3032. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +0 -149
  3033. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -356
  3034. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +0 -97
  3035. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +0 -384
  3036. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +0 -78
  3037. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +0 -527
  3038. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -210
  3039. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +0 -116
  3040. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +0 -93
  3041. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +0 -79
  3042. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +0 -70
  3043. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +0 -544
  3044. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +0 -209
  3045. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.c +0 -1514
  3046. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +0 -131
  3047. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h +0 -90
  3048. /data/src/core/{lib/gprpp → util}/glob.cc +0 -0
@@ -16,12 +16,15 @@
16
16
 
17
17
  #include "src/core/xds/xds_client/xds_client.h"
18
18
 
19
+ #include <grpc/event_engine/event_engine.h>
20
+ #include <grpc/support/port_platform.h>
19
21
  #include <inttypes.h>
20
22
  #include <string.h>
21
23
 
22
24
  #include <algorithm>
23
25
  #include <functional>
24
26
  #include <memory>
27
+ #include <optional>
25
28
  #include <string>
26
29
  #include <type_traits>
27
30
  #include <vector>
@@ -35,28 +38,27 @@
35
38
  #include "absl/strings/str_split.h"
36
39
  #include "absl/strings/string_view.h"
37
40
  #include "absl/strings/strip.h"
38
- #include "absl/types/optional.h"
39
41
  #include "envoy/config/core/v3/base.upb.h"
40
- #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"
41
44
  #include "google/protobuf/any.upb.h"
42
45
  #include "google/protobuf/timestamp.upb.h"
43
- #include "upb/base/string_view.h"
44
- #include "upb/mem/arena.h"
45
-
46
- #include <grpc/event_engine/event_engine.h>
47
- #include <grpc/support/port_platform.h>
48
-
49
- #include "src/core/lib/backoff/backoff.h"
50
- #include "src/core/lib/gprpp/debug_location.h"
51
- #include "src/core/lib/gprpp/orphanable.h"
52
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
53
- #include "src/core/lib/gprpp/sync.h"
46
+ #include "google/rpc/status.upb.h"
54
47
  #include "src/core/lib/iomgr/exec_ctx.h"
55
- #include "src/core/lib/uri/uri_parser.h"
48
+ #include "src/core/util/backoff.h"
49
+ #include "src/core/util/debug_location.h"
50
+ #include "src/core/util/orphanable.h"
51
+ #include "src/core/util/ref_counted_ptr.h"
52
+ #include "src/core/util/sync.h"
56
53
  #include "src/core/util/upb_utils.h"
54
+ #include "src/core/util/uri.h"
57
55
  #include "src/core/xds/xds_client/xds_api.h"
58
56
  #include "src/core/xds/xds_client/xds_bootstrap.h"
59
- #include "src/core/xds/xds_client/xds_client_stats.h"
57
+ #include "src/core/xds/xds_client/xds_locality.h"
58
+ #include "upb/base/string_view.h"
59
+ #include "upb/mem/arena.h"
60
+ #include "upb/reflection/def.h"
61
+ #include "upb/text/encode.h"
60
62
 
61
63
  #define GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS 1
62
64
  #define GRPC_XDS_RECONNECT_BACKOFF_MULTIPLIER 1.6
@@ -74,6 +76,9 @@ using ::grpc_event_engine::experimental::EventEngine;
74
76
 
75
77
  // An xds call wrapper that can restart a call upon failure. Holds a ref to
76
78
  // the xds channel. The template parameter is the kind of wrapped xds call.
79
+ // TODO(roth): This is basically the same code as in LrsClient, and
80
+ // probably very similar to many other places in the codebase.
81
+ // Consider refactoring this into a common utility library somehow.
77
82
  template <typename T>
78
83
  class XdsClient::XdsChannel::RetryableCall final
79
84
  : public InternallyRefCounted<RetryableCall<T>> {
@@ -106,7 +111,7 @@ class XdsClient::XdsChannel::RetryableCall final
106
111
 
107
112
  // Retry state.
108
113
  BackOff backoff_;
109
- absl::optional<EventEngine::TaskHandle> timer_handle_
114
+ std::optional<EventEngine::TaskHandle> timer_handle_
110
115
  ABSL_GUARDED_BY(&XdsClient::mu_);
111
116
 
112
117
  bool shutting_down_ = false;
@@ -119,7 +124,10 @@ class XdsClient::XdsChannel::AdsCall final
119
124
  // The ctor and dtor should not be used directly.
120
125
  explicit AdsCall(RefCountedPtr<RetryableCall<AdsCall>> retryable_call);
121
126
 
122
- void Orphan() override;
127
+ // Disable thread-safety analysis because this method is called via
128
+ // OrphanablePtr<>, but there's no way to pass the lock annotation
129
+ // through there.
130
+ void Orphan() override ABSL_NO_THREAD_SAFETY_ANALYSIS;
123
131
 
124
132
  RetryableCall<AdsCall>* retryable_call() const {
125
133
  return retryable_call_.get();
@@ -140,44 +148,6 @@ class XdsClient::XdsChannel::AdsCall final
140
148
  private:
141
149
  class AdsReadDelayHandle;
142
150
 
143
- class AdsResponseParser final : public XdsApi::AdsResponseParserInterface {
144
- public:
145
- struct Result {
146
- const XdsResourceType* type;
147
- std::string type_url;
148
- std::string version;
149
- std::string nonce;
150
- std::vector<std::string> errors;
151
- std::map<std::string /*authority*/, std::set<XdsResourceKey>>
152
- resources_seen;
153
- uint64_t num_valid_resources = 0;
154
- uint64_t num_invalid_resources = 0;
155
- RefCountedPtr<ReadDelayHandle> read_delay_handle;
156
- };
157
-
158
- explicit AdsResponseParser(AdsCall* ads_call) : ads_call_(ads_call) {}
159
-
160
- absl::Status ProcessAdsResponseFields(AdsResponseFields fields) override
161
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
162
-
163
- void ParseResource(upb_Arena* arena, size_t idx, absl::string_view type_url,
164
- absl::string_view resource_name,
165
- absl::string_view serialized_resource) override
166
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
167
-
168
- void ResourceWrapperParsingFailed(size_t idx,
169
- absl::string_view message) override;
170
-
171
- Result TakeResult() { return std::move(result_); }
172
-
173
- private:
174
- XdsClient* xds_client() const { return ads_call_->xds_client(); }
175
-
176
- AdsCall* ads_call_;
177
- const Timestamp update_time_ = Timestamp::Now();
178
- Result result_;
179
- };
180
-
181
151
  class ResourceTimer final : public InternallyRefCounted<ResourceTimer> {
182
152
  public:
183
153
  ResourceTimer(const XdsResourceType* type, const XdsResourceName& name)
@@ -210,6 +180,7 @@ class XdsClient::XdsChannel::AdsCall final
210
180
  if (timer_handle_.has_value() &&
211
181
  ads_call_->xds_client()->engine()->Cancel(*timer_handle_)) {
212
182
  timer_handle_.reset();
183
+ ads_call_.reset();
213
184
  }
214
185
  }
215
186
 
@@ -236,42 +207,58 @@ class XdsClient::XdsChannel::AdsCall final
236
207
  // optimize by not resending the resource that we already have.
237
208
  auto& authority_state =
238
209
  ads_call->xds_client()->authority_state_map_[name_.authority];
239
- ResourceState& state = authority_state.resource_map[type_][name_.key];
240
- if (state.resource != nullptr) return;
210
+ ResourceState& state = authority_state.type_map[type_][name_.key];
211
+ if (state.HasResource()) return;
241
212
  // Start timer.
242
213
  ads_call_ = std::move(ads_call);
214
+ Duration timeout = ads_call_->xds_client()->request_timeout_;
215
+ if (timeout == Duration::Zero()) {
216
+ timeout = XdsDataErrorHandlingEnabled() &&
217
+ ads_call_->xds_channel()
218
+ ->server_.ResourceTimerIsTransientFailure()
219
+ ? Duration::Seconds(30)
220
+ : Duration::Seconds(15);
221
+ }
243
222
  timer_handle_ = ads_call_->xds_client()->engine()->RunAfter(
244
- ads_call_->xds_client()->request_timeout_,
245
- [self = Ref(DEBUG_LOCATION, "timer")]() {
246
- ApplicationCallbackExecCtx callback_exec_ctx;
223
+ timeout, [self = Ref(DEBUG_LOCATION, "timer")]() {
247
224
  ExecCtx exec_ctx;
248
225
  self->OnTimer();
249
226
  });
250
227
  }
251
228
 
252
229
  void OnTimer() {
253
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
254
- LOG(INFO) << "[xds_client " << ads_call_->xds_client()
255
- << "] xds server "
256
- << ads_call_->xds_channel()->server_.server_uri()
257
- << ": timeout obtaining resource {type=" << type_->type_url()
258
- << " name="
259
- << XdsClient::ConstructFullXdsResourceName(
260
- name_.authority, type_->type_url(), name_.key)
261
- << "} from xds server";
262
- }
263
230
  {
264
231
  MutexLock lock(&ads_call_->xds_client()->mu_);
265
232
  timer_handle_.reset();
266
- resource_seen_ = true;
267
233
  auto& authority_state =
268
234
  ads_call_->xds_client()->authority_state_map_[name_.authority];
269
- ResourceState& state = authority_state.resource_map[type_][name_.key];
270
- state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
271
- ads_call_->xds_client()->NotifyWatchersOnResourceDoesNotExist(
272
- state.watchers, ReadDelayHandle::NoWait());
235
+ ResourceState& state = authority_state.type_map[type_][name_.key];
236
+ // We might have received the resource after the timer fired but before
237
+ // the callback ran.
238
+ if (!state.HasResource()) {
239
+ GRPC_TRACE_LOG(xds_client, INFO)
240
+ << "[xds_client " << ads_call_->xds_client() << "] xds server "
241
+ << ads_call_->xds_channel()->server_.server_uri()
242
+ << ": timeout obtaining resource {type=" << type_->type_url()
243
+ << " name="
244
+ << XdsClient::ConstructFullXdsResourceName(
245
+ name_.authority, type_->type_url(), name_.key)
246
+ << "} from xds server";
247
+ resource_seen_ = true;
248
+ if (XdsDataErrorHandlingEnabled() &&
249
+ ads_call_->xds_channel()
250
+ ->server_.ResourceTimerIsTransientFailure()) {
251
+ state.SetTimeout(
252
+ absl::StrCat("timeout obtaining resource from xDS server ",
253
+ ads_call_->xds_channel()->server_uri()));
254
+ } else {
255
+ state.SetDoesNotExistOnTimeout();
256
+ }
257
+ ads_call_->xds_client()->NotifyWatchersOnResourceChanged(
258
+ state.failed_status(), state.watchers(),
259
+ ReadDelayHandle::NoWait());
260
+ }
273
261
  }
274
- ads_call_->xds_client()->work_serializer_.DrainQueue();
275
262
  ads_call_.reset();
276
263
  }
277
264
 
@@ -286,7 +273,7 @@ class XdsClient::XdsChannel::AdsCall final
286
273
  // stream or (b) declared the resource to not exist due to the timer
287
274
  // firing.
288
275
  bool resource_seen_ ABSL_GUARDED_BY(&XdsClient::mu_) = false;
289
- absl::optional<EventEngine::TaskHandle> timer_handle_
276
+ std::optional<EventEngine::TaskHandle> timer_handle_
290
277
  ABSL_GUARDED_BY(&XdsClient::mu_);
291
278
  };
292
279
 
@@ -319,9 +306,44 @@ class XdsClient::XdsChannel::AdsCall final
319
306
  subscribed_resources;
320
307
  };
321
308
 
309
+ std::string CreateAdsRequest(absl::string_view type_url,
310
+ absl::string_view version,
311
+ absl::string_view nonce,
312
+ const std::vector<std::string>& resource_names,
313
+ absl::Status status) const
314
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
315
+
322
316
  void SendMessageLocked(const XdsResourceType* type)
323
317
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
324
318
 
319
+ struct DecodeContext {
320
+ upb::Arena arena;
321
+ const XdsResourceType* type;
322
+ std::string type_url;
323
+ std::string version;
324
+ std::string nonce;
325
+ std::vector<std::string> errors;
326
+ std::map<std::string /*authority*/, std::set<XdsResourceKey>>
327
+ resources_seen;
328
+ uint64_t num_valid_resources = 0;
329
+ uint64_t num_invalid_resources = 0;
330
+ Timestamp update_time = Timestamp::Now();
331
+ RefCountedPtr<ReadDelayHandle> read_delay_handle;
332
+ };
333
+ void ParseResource(size_t idx, absl::string_view type_url,
334
+ absl::string_view resource_name,
335
+ absl::string_view serialized_resource,
336
+ DecodeContext* context)
337
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
338
+ void HandleServerReportedResourceError(size_t idx,
339
+ absl::string_view resource_name,
340
+ absl::Status status,
341
+ DecodeContext* context)
342
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
343
+ absl::Status DecodeAdsResponse(absl::string_view encoded_response,
344
+ DecodeContext* context)
345
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
346
+
325
347
  void OnRequestSent(bool ok);
326
348
  void OnRecvMessage(absl::string_view payload);
327
349
  void OnStatusReceived(absl::Status status);
@@ -352,98 +374,22 @@ class XdsClient::XdsChannel::AdsCall final
352
374
  std::map<const XdsResourceType*, ResourceTypeState> state_map_;
353
375
  };
354
376
 
355
- // Contains an LRS call to the xds server.
356
- class XdsClient::XdsChannel::LrsCall final
357
- : public InternallyRefCounted<LrsCall> {
358
- public:
359
- // The ctor and dtor should not be used directly.
360
- explicit LrsCall(RefCountedPtr<RetryableCall<LrsCall>> retryable_call);
377
+ //
378
+ // XdsClient::XdsChannel::ConnectivityFailureWatcher
379
+ //
361
380
 
362
- void Orphan() override;
381
+ class XdsClient::XdsChannel::ConnectivityFailureWatcher
382
+ : public XdsTransportFactory::XdsTransport::ConnectivityFailureWatcher {
383
+ public:
384
+ explicit ConnectivityFailureWatcher(WeakRefCountedPtr<XdsChannel> xds_channel)
385
+ : xds_channel_(std::move(xds_channel)) {}
363
386
 
364
- RetryableCall<LrsCall>* retryable_call() { return retryable_call_.get(); }
365
- XdsChannel* xds_channel() const { return retryable_call_->xds_channel(); }
366
- XdsClient* xds_client() const { return xds_channel()->xds_client(); }
367
- bool seen_response() const { return seen_response_; }
387
+ void OnConnectivityFailure(absl::Status status) override {
388
+ xds_channel_->OnConnectivityFailure(std::move(status));
389
+ }
368
390
 
369
391
  private:
370
- class StreamEventHandler final
371
- : public XdsTransportFactory::XdsTransport::StreamingCall::EventHandler {
372
- public:
373
- explicit StreamEventHandler(RefCountedPtr<LrsCall> lrs_call)
374
- : lrs_call_(std::move(lrs_call)) {}
375
-
376
- void OnRequestSent(bool /*ok*/) override { lrs_call_->OnRequestSent(); }
377
- void OnRecvMessage(absl::string_view payload) override {
378
- lrs_call_->OnRecvMessage(payload);
379
- }
380
- void OnStatusReceived(absl::Status status) override {
381
- lrs_call_->OnStatusReceived(std::move(status));
382
- }
383
-
384
- private:
385
- RefCountedPtr<LrsCall> lrs_call_;
386
- };
387
-
388
- // A repeating timer for a particular duration.
389
- class Timer final : public InternallyRefCounted<Timer> {
390
- public:
391
- explicit Timer(RefCountedPtr<LrsCall> lrs_call)
392
- : lrs_call_(std::move(lrs_call)) {}
393
- ~Timer() override { lrs_call_.reset(DEBUG_LOCATION, "LRS timer"); }
394
-
395
- // Disable thread-safety analysis because this method is called via
396
- // OrphanablePtr<>, but there's no way to pass the lock annotation
397
- // through there.
398
- void Orphan() override ABSL_NO_THREAD_SAFETY_ANALYSIS;
399
-
400
- void ScheduleNextReportLocked()
401
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
402
-
403
- private:
404
- bool IsCurrentTimerOnCall() const {
405
- return this == lrs_call_->timer_.get();
406
- }
407
- XdsClient* xds_client() const { return lrs_call_->xds_client(); }
408
-
409
- void OnNextReportTimer();
410
-
411
- // The owning LRS call.
412
- RefCountedPtr<LrsCall> lrs_call_;
413
-
414
- absl::optional<EventEngine::TaskHandle> timer_handle_
415
- ABSL_GUARDED_BY(&XdsClient::mu_);
416
- };
417
-
418
- void MaybeScheduleNextReportLocked()
419
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
420
-
421
- void SendReportLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
422
-
423
- void SendMessageLocked(std::string payload)
424
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
425
-
426
- void OnRequestSent();
427
- void OnRecvMessage(absl::string_view payload);
428
- void OnStatusReceived(absl::Status status);
429
-
430
- bool IsCurrentCallOnChannel() const;
431
-
432
- // The owning RetryableCall<>.
433
- RefCountedPtr<RetryableCall<LrsCall>> retryable_call_;
434
-
435
- OrphanablePtr<XdsTransportFactory::XdsTransport::StreamingCall>
436
- streaming_call_;
437
-
438
- bool seen_response_ = false;
439
- bool send_message_pending_ ABSL_GUARDED_BY(&XdsClient::mu_) = false;
440
-
441
- // Load reporting state.
442
- bool send_all_clusters_ = false;
443
- std::set<std::string> cluster_names_; // Asked for by the LRS server.
444
- Duration load_reporting_interval_;
445
- bool last_report_counters_were_zero_ = false;
446
- OrphanablePtr<Timer> timer_;
392
+ WeakRefCountedPtr<XdsChannel> xds_channel_;
447
393
  };
448
394
 
449
395
  //
@@ -457,27 +403,25 @@ XdsClient::XdsChannel::XdsChannel(WeakRefCountedPtr<XdsClient> xds_client,
457
403
  : nullptr),
458
404
  xds_client_(std::move(xds_client)),
459
405
  server_(server) {
460
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
461
- LOG(INFO) << "[xds_client " << xds_client_.get() << "] creating channel "
462
- << this << " for server " << server.server_uri();
463
- }
406
+ GRPC_TRACE_LOG(xds_client, INFO)
407
+ << "[xds_client " << xds_client_.get() << "] creating channel " << this
408
+ << " for server " << server.server_uri();
464
409
  absl::Status status;
465
- transport_ = xds_client_->transport_factory_->Create(
466
- server,
467
- [self = WeakRef(DEBUG_LOCATION, "OnConnectivityFailure")](
468
- absl::Status status) {
469
- self->OnConnectivityFailure(std::move(status));
470
- },
471
- &status);
410
+ transport_ = xds_client_->transport_factory_->GetTransport(server, &status);
472
411
  CHECK(transport_ != nullptr);
473
- if (!status.ok()) SetChannelStatusLocked(std::move(status));
412
+ if (!status.ok()) {
413
+ SetChannelStatusLocked(std::move(status));
414
+ } else {
415
+ failure_watcher_ = MakeRefCounted<ConnectivityFailureWatcher>(
416
+ WeakRef(DEBUG_LOCATION, "OnConnectivityFailure"));
417
+ transport_->StartConnectivityFailureWatch(failure_watcher_);
418
+ }
474
419
  }
475
420
 
476
421
  XdsClient::XdsChannel::~XdsChannel() {
477
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
478
- LOG(INFO) << "[xds_client " << xds_client() << "] destroying xds channel "
479
- << this << " for server " << server_.server_uri();
480
- }
422
+ GRPC_TRACE_LOG(xds_client, INFO)
423
+ << "[xds_client " << xds_client() << "] destroying xds channel " << this
424
+ << " for server " << server_.server_uri();
481
425
  xds_client_.reset(DEBUG_LOCATION, "XdsChannel");
482
426
  }
483
427
 
@@ -486,47 +430,30 @@ XdsClient::XdsChannel::~XdsChannel() {
486
430
  // called from DualRefCounted::Unref, which cannot have a lock annotation for
487
431
  // a lock in this subclass.
488
432
  void XdsClient::XdsChannel::Orphaned() ABSL_NO_THREAD_SAFETY_ANALYSIS {
489
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
490
- LOG(INFO) << "[xds_client " << xds_client() << "] orphaning xds channel "
491
- << this << " for server " << server_.server_uri();
492
- }
433
+ GRPC_TRACE_LOG(xds_client, INFO)
434
+ << "[xds_client " << xds_client() << "] orphaning xds channel " << this
435
+ << " for server " << server_.server_uri();
493
436
  shutting_down_ = true;
437
+ if (failure_watcher_ != nullptr) {
438
+ transport_->StopConnectivityFailureWatch(failure_watcher_);
439
+ failure_watcher_.reset();
440
+ }
494
441
  transport_.reset();
495
442
  // At this time, all strong refs are removed, remove from channel map to
496
443
  // prevent subsequent subscription from trying to use this XdsChannel as
497
444
  // it is shutting down.
498
445
  xds_client_->xds_channel_map_.erase(server_.Key());
499
446
  ads_call_.reset();
500
- lrs_call_.reset();
501
447
  }
502
448
 
503
449
  void XdsClient::XdsChannel::ResetBackoff() { transport_->ResetBackoff(); }
504
450
 
505
- XdsClient::XdsChannel::AdsCall* XdsClient::XdsChannel::ads_call() const {
506
- return ads_call_->call();
507
- }
508
-
509
- XdsClient::XdsChannel::LrsCall* XdsClient::XdsChannel::lrs_call() const {
510
- return lrs_call_->call();
511
- }
512
-
513
- void XdsClient::XdsChannel::MaybeStartLrsCall() {
514
- if (lrs_call_ != nullptr) return;
515
- lrs_call_.reset(
516
- new RetryableCall<LrsCall>(WeakRef(DEBUG_LOCATION, "XdsChannel+lrs")));
517
- }
518
-
519
- void XdsClient::XdsChannel::StopLrsCallLocked() {
520
- xds_client_->xds_load_report_server_map_.erase(server_.Key());
521
- lrs_call_.reset();
522
- }
523
-
524
451
  void XdsClient::XdsChannel::SubscribeLocked(const XdsResourceType* type,
525
452
  const XdsResourceName& name) {
526
453
  if (ads_call_ == nullptr) {
527
454
  // Start the ADS call if this is the first request.
528
- ads_call_.reset(
529
- new RetryableCall<AdsCall>(WeakRef(DEBUG_LOCATION, "XdsChannel+ads")));
455
+ ads_call_ = MakeOrphanable<RetryableCall<AdsCall>>(
456
+ WeakRef(DEBUG_LOCATION, "XdsChannel+ads"));
530
457
  // Note: AdsCall's ctor will automatically subscribe to all
531
458
  // resources that the XdsClient already has watchers for, so we can
532
459
  // return here.
@@ -534,9 +461,9 @@ void XdsClient::XdsChannel::SubscribeLocked(const XdsResourceType* type,
534
461
  }
535
462
  // If the ADS call is in backoff state, we don't need to do anything now
536
463
  // because when the call is restarted it will resend all necessary requests.
537
- if (ads_call() == nullptr) return;
464
+ if (ads_call_->call() == nullptr) return;
538
465
  // Subscribe to this resource if the ADS call is active.
539
- ads_call()->SubscribeLocked(type, name, /*delay_send=*/false);
466
+ ads_call_->call()->SubscribeLocked(type, name, /*delay_send=*/false);
540
467
  }
541
468
 
542
469
  void XdsClient::XdsChannel::UnsubscribeLocked(const XdsResourceType* type,
@@ -549,6 +476,12 @@ void XdsClient::XdsChannel::UnsubscribeLocked(const XdsResourceType* type,
549
476
  if (!call->HasSubscribedResources()) {
550
477
  ads_call_.reset();
551
478
  }
479
+ } else {
480
+ // If there is currently no ADS call because we're in retry backoff,
481
+ // then we immediately trigger deletion of unsubscribed cache entries.
482
+ // This may orphan the XdsChannel, which would stop the retry
483
+ // timer, since we would no longer need to restart the ADS call.
484
+ xds_client_->MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(this, type);
552
485
  }
553
486
  }
554
487
  }
@@ -568,25 +501,23 @@ bool XdsClient::XdsChannel::MaybeFallbackLocked(
568
501
  ++i) {
569
502
  authority_state.xds_channels.emplace_back(
570
503
  xds_client_->GetOrCreateXdsChannelLocked(*xds_servers[i], "fallback"));
571
- for (const auto& type_resource : authority_state.resource_map) {
572
- for (const auto& key_state : type_resource.second) {
573
- authority_state.xds_channels.back()->SubscribeLocked(
574
- type_resource.first, {authority, key_state.first});
504
+ for (const auto& [type, resource_map] : authority_state.type_map) {
505
+ for (const auto& [key, resource_state] : resource_map) {
506
+ if (resource_state.HasWatchers()) {
507
+ authority_state.xds_channels.back()->SubscribeLocked(
508
+ type, {authority, key});
509
+ }
575
510
  }
576
511
  }
577
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
578
- LOG(INFO) << "[xds_client " << xds_client_.get() << "] authority "
579
- << authority << ": added fallback server "
580
- << xds_servers[i]->server_uri() << " ("
581
- << authority_state.xds_channels.back()->status().ToString()
582
- << ")";
583
- }
512
+ GRPC_TRACE_LOG(xds_client, INFO)
513
+ << "[xds_client " << xds_client_.get() << "] authority " << authority
514
+ << ": added fallback server " << xds_servers[i]->server_uri() << " ("
515
+ << authority_state.xds_channels.back()->status().ToString() << ")";
584
516
  if (authority_state.xds_channels.back()->status().ok()) return true;
585
517
  }
586
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
587
- LOG(INFO) << "[xds_client " << xds_client_.get() << "] authority "
588
- << authority << ": No fallback server";
589
- }
518
+ GRPC_TRACE_LOG(xds_client, INFO)
519
+ << "[xds_client " << xds_client_.get() << "] authority " << authority
520
+ << ": No fallback server";
590
521
  return false;
591
522
  }
592
523
 
@@ -596,30 +527,32 @@ void XdsClient::XdsChannel::SetHealthyLocked() {
596
527
  // 1. Channel is on the list of authority channels
597
528
  // 2. Channel is not the last channel on the list (i.e. not the active
598
529
  // channel)
599
- for (auto& authority : xds_client_->authority_state_map_) {
600
- auto& channels = authority.second.xds_channels;
530
+ for (auto& [authority, authority_state] : xds_client_->authority_state_map_) {
531
+ auto& channels = authority_state.xds_channels;
601
532
  // Skip if channel is active.
602
533
  if (channels.back() == this) continue;
603
534
  auto channel_it = std::find(channels.begin(), channels.end(), this);
604
535
  // Skip if this is not on the list
605
536
  if (channel_it != channels.end()) {
606
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
607
- LOG(INFO) << "[xds_client " << xds_client_.get() << "] authority "
608
- << authority.first << ": Falling forward to "
609
- << server_.server_uri();
610
- }
537
+ GRPC_TRACE_LOG(xds_client, INFO)
538
+ << "[xds_client " << xds_client_.get() << "] authority " << authority
539
+ << ": Falling forward to " << server_.server_uri();
611
540
  // Lower priority channels are no longer needed, connection is back!
541
+ // Note that we move the lower priority channels out of the vector
542
+ // before we unref them, or else
543
+ // MaybeRemoveUnsubscribedCacheEntriesForTypeLocked() will try to
544
+ // access the vector while we are modifying it.
545
+ std::vector<RefCountedPtr<XdsChannel>> channels_to_unref(
546
+ std::make_move_iterator(channel_it + 1),
547
+ std::make_move_iterator(channels.end()));
612
548
  channels.erase(channel_it + 1, channels.end());
613
549
  }
614
550
  }
615
551
  }
616
552
 
617
553
  void XdsClient::XdsChannel::OnConnectivityFailure(absl::Status status) {
618
- {
619
- MutexLock lock(&xds_client_->mu_);
620
- SetChannelStatusLocked(std::move(status));
621
- }
622
- xds_client_->work_serializer_.DrainQueue();
554
+ MutexLock lock(&xds_client_->mu_);
555
+ SetChannelStatusLocked(std::move(status));
623
556
  }
624
557
 
625
558
  void XdsClient::XdsChannel::SetChannelStatusLocked(absl::Status status) {
@@ -628,15 +561,6 @@ void XdsClient::XdsChannel::SetChannelStatusLocked(absl::Status status) {
628
561
  server_.server_uri(), ": ",
629
562
  status.message()));
630
563
  LOG(INFO) << "[xds_client " << xds_client() << "] " << status;
631
- // If the node ID is set, append that to the status message that we send to
632
- // the watchers, so that it will appear in log messages visible to users.
633
- const auto* node = xds_client_->bootstrap_->node();
634
- if (node != nullptr) {
635
- status = absl::Status(
636
- status.code(),
637
- absl::StrCat(status.message(),
638
- " (node ID:", xds_client_->bootstrap_->node()->id(), ")"));
639
- }
640
564
  // If status was previously OK, report that the channel has gone unhealthy.
641
565
  if (status_.ok() && xds_client_->metrics_reporter_ != nullptr) {
642
566
  xds_client_->metrics_reporter_->ReportServerFailure(server_.server_uri());
@@ -645,30 +569,32 @@ void XdsClient::XdsChannel::SetChannelStatusLocked(absl::Status status) {
645
569
  // error for any new watchers that may be started.
646
570
  status_ = status;
647
571
  // Find all watchers for this channel.
648
- std::set<RefCountedPtr<ResourceWatcherInterface>> watchers;
649
- for (auto& a : xds_client_->authority_state_map_) { // authority
650
- if (a.second.xds_channels.empty() || a.second.xds_channels.back() != this ||
651
- MaybeFallbackLocked(a.first, a.second)) {
572
+ WatcherSet watchers_cached;
573
+ WatcherSet watchers_uncached;
574
+ for (auto& [authority, authority_state] : xds_client_->authority_state_map_) {
575
+ if (authority_state.xds_channels.empty() ||
576
+ authority_state.xds_channels.back() != this ||
577
+ MaybeFallbackLocked(authority, authority_state)) {
652
578
  continue;
653
579
  }
654
- for (const auto& t : a.second.resource_map) { // type
655
- for (const auto& r : t.second) { // resource id
656
- for (const auto& w : r.second.watchers) { // watchers
657
- watchers.insert(w.second);
580
+ for (const auto& [_, resource_map] : authority_state.type_map) {
581
+ for (const auto& [_, resource_state] : resource_map) {
582
+ auto& watchers =
583
+ resource_state.HasResource() ? watchers_cached : watchers_uncached;
584
+ for (const auto& watcher : resource_state.watchers()) {
585
+ watchers.insert(watcher);
658
586
  }
659
587
  }
660
588
  }
661
589
  }
662
- if (!watchers.empty()) {
663
- // Enqueue notification for the watchers.
664
- xds_client_->work_serializer_.Schedule(
665
- [watchers = std::move(watchers), status = std::move(status)]()
666
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(xds_client_->work_serializer_) {
667
- for (const auto& watcher : watchers) {
668
- watcher->OnError(status, ReadDelayHandle::NoWait());
669
- }
670
- },
671
- DEBUG_LOCATION);
590
+ // Enqueue notifications for the watchers.
591
+ if (!watchers_cached.empty()) {
592
+ xds_client_->NotifyWatchersOnAmbientError(
593
+ status, std::move(watchers_cached), ReadDelayHandle::NoWait());
594
+ }
595
+ if (!watchers_uncached.empty()) {
596
+ xds_client_->NotifyWatchersOnResourceChanged(
597
+ status, std::move(watchers_uncached), ReadDelayHandle::NoWait());
672
598
  }
673
599
  }
674
600
 
@@ -715,11 +641,10 @@ void XdsClient::XdsChannel::RetryableCall<T>::StartNewCallLocked() {
715
641
  if (shutting_down_) return;
716
642
  CHECK(xds_channel_->transport_ != nullptr);
717
643
  CHECK(call_ == nullptr);
718
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
719
- LOG(INFO) << "[xds_client " << xds_channel()->xds_client()
720
- << "] xds server " << xds_channel()->server_.server_uri()
721
- << ": start new call from retryable call " << this;
722
- }
644
+ GRPC_TRACE_LOG(xds_client, INFO)
645
+ << "[xds_client " << xds_channel()->xds_client() << "] xds server "
646
+ << xds_channel()->server_.server_uri()
647
+ << ": start new call from retryable call " << this;
723
648
  call_ = MakeOrphanable<T>(
724
649
  this->Ref(DEBUG_LOCATION, "RetryableCall+start_new_call"));
725
650
  }
@@ -727,19 +652,15 @@ void XdsClient::XdsChannel::RetryableCall<T>::StartNewCallLocked() {
727
652
  template <typename T>
728
653
  void XdsClient::XdsChannel::RetryableCall<T>::StartRetryTimerLocked() {
729
654
  if (shutting_down_) return;
730
- const Timestamp next_attempt_time = backoff_.NextAttemptTime();
731
- const Duration timeout =
732
- std::max(next_attempt_time - Timestamp::Now(), Duration::Zero());
733
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
734
- LOG(INFO) << "[xds_client " << xds_channel()->xds_client()
735
- << "] xds server " << xds_channel()->server_.server_uri()
736
- << ": call attempt failed; retry timer will fire in "
737
- << timeout.millis() << "ms.";
738
- }
655
+ const Duration delay = backoff_.NextAttemptDelay();
656
+ GRPC_TRACE_LOG(xds_client, INFO)
657
+ << "[xds_client " << xds_channel()->xds_client() << "] xds server "
658
+ << xds_channel()->server_.server_uri()
659
+ << ": call attempt failed; retry timer will fire in " << delay.millis()
660
+ << "ms.";
739
661
  timer_handle_ = xds_channel()->xds_client()->engine()->RunAfter(
740
- timeout,
662
+ delay,
741
663
  [self = this->Ref(DEBUG_LOCATION, "RetryableCall+retry_timer_start")]() {
742
- ApplicationCallbackExecCtx callback_exec_ctx;
743
664
  ExecCtx exec_ctx;
744
665
  self->OnRetryTimer();
745
666
  });
@@ -751,11 +672,10 @@ void XdsClient::XdsChannel::RetryableCall<T>::OnRetryTimer() {
751
672
  if (timer_handle_.has_value()) {
752
673
  timer_handle_.reset();
753
674
  if (shutting_down_) return;
754
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
755
- LOG(INFO) << "[xds_client " << xds_channel()->xds_client()
756
- << "] xds server " << xds_channel()->server_.server_uri()
757
- << ": retry timer fired (retryable call: " << this << ")";
758
- }
675
+ GRPC_TRACE_LOG(xds_client, INFO)
676
+ << "[xds_client " << xds_channel()->xds_client() << "] xds server "
677
+ << xds_channel()->server_.server_uri()
678
+ << ": retry timer fired (retryable call: " << this << ")";
759
679
  StartNewCallLocked();
760
680
  }
761
681
  }
@@ -781,79 +701,273 @@ class XdsClient::XdsChannel::AdsCall::AdsReadDelayHandle final
781
701
  };
782
702
 
783
703
  //
784
- // XdsClient::XdsChannel::AdsCall::AdsResponseParser
704
+ // XdsClient::XdsChannel::AdsCall
785
705
  //
786
706
 
787
- absl::Status
788
- XdsClient::XdsChannel::AdsCall::AdsResponseParser::ProcessAdsResponseFields(
789
- AdsResponseFields fields) {
790
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
791
- LOG(INFO) << "[xds_client " << ads_call_->xds_client() << "] xds server "
792
- << ads_call_->xds_channel()->server_.server_uri()
793
- << ": received ADS response: type_url=" << fields.type_url
794
- << ", version=" << fields.version << ", nonce=" << fields.nonce
795
- << ", num_resources=" << fields.num_resources;
707
+ XdsClient::XdsChannel::AdsCall::AdsCall(
708
+ RefCountedPtr<RetryableCall<AdsCall>> retryable_call)
709
+ : InternallyRefCounted<AdsCall>(
710
+ GRPC_TRACE_FLAG_ENABLED(xds_client_refcount) ? "AdsCall" : nullptr),
711
+ retryable_call_(std::move(retryable_call)) {
712
+ CHECK_NE(xds_client(), nullptr);
713
+ // Init the ADS call.
714
+ const char* method =
715
+ "/envoy.service.discovery.v3.AggregatedDiscoveryService/"
716
+ "StreamAggregatedResources";
717
+ streaming_call_ = xds_channel()->transport_->CreateStreamingCall(
718
+ method, std::make_unique<StreamEventHandler>(
719
+ // Passing the initial ref here. This ref will go away when
720
+ // the StreamEventHandler is destroyed.
721
+ RefCountedPtr<AdsCall>(this)));
722
+ CHECK(streaming_call_ != nullptr);
723
+ // Start the call.
724
+ GRPC_TRACE_LOG(xds_client, INFO)
725
+ << "[xds_client " << xds_client() << "] xds server "
726
+ << xds_channel()->server_.server_uri()
727
+ << ": starting ADS call (ads_call: " << this
728
+ << ", streaming_call: " << streaming_call_.get() << ")";
729
+ // If this is a reconnect, add any necessary subscriptions from what's
730
+ // already in the cache.
731
+ for (auto& [authority, authority_state] :
732
+ xds_client()->authority_state_map_) {
733
+ auto it = std::find(authority_state.xds_channels.begin(),
734
+ authority_state.xds_channels.end(), xds_channel());
735
+ // Skip authorities that are not using this xDS channel. The channel can be
736
+ // anywhere in the list.
737
+ if (it == authority_state.xds_channels.end()) continue;
738
+ for (const auto& [type, resource_map] : authority_state.type_map) {
739
+ for (const auto& [resource_key, resource_state] : resource_map) {
740
+ if (resource_state.HasWatchers()) {
741
+ SubscribeLocked(type, {authority, resource_key}, /*delay_send=*/true);
742
+ }
743
+ }
744
+ }
796
745
  }
797
- result_.type =
798
- ads_call_->xds_client()->GetResourceTypeLocked(fields.type_url);
799
- if (result_.type == nullptr) {
800
- return absl::InvalidArgumentError(
801
- absl::StrCat("unknown resource type ", fields.type_url));
746
+ // Send initial message if we added any subscriptions above.
747
+ for (const auto& [type, _] : state_map_) {
748
+ SendMessageLocked(type);
802
749
  }
803
- result_.type_url = std::move(fields.type_url);
804
- result_.version = std::move(fields.version);
805
- result_.nonce = std::move(fields.nonce);
806
- result_.read_delay_handle =
807
- MakeRefCounted<AdsReadDelayHandle>(ads_call_->Ref());
808
- return absl::OkStatus();
750
+ streaming_call_->StartRecvMessage();
751
+ }
752
+
753
+ void XdsClient::XdsChannel::AdsCall::Orphan() {
754
+ state_map_.clear();
755
+ // We may have unsubscriptions for which we have not yet actually sent
756
+ // unsubscribe messages, and now we never will, so do a pass to delete
757
+ // any cache entries for which we've unsubscribed.
758
+ for (const auto& [_, type] : xds_client()->resource_types_) {
759
+ xds_client()->MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(
760
+ xds_channel(), type);
761
+ }
762
+ // Note that the initial ref is held by the StreamEventHandler, which
763
+ // will be destroyed when streaming_call_ is destroyed, which may not happen
764
+ // here, since there may be other refs held to streaming_call_ by internal
765
+ // callbacks.
766
+ streaming_call_.reset();
767
+ }
768
+
769
+ void XdsClient::XdsChannel::AdsCall::SubscribeLocked(
770
+ const XdsResourceType* type, const XdsResourceName& name, bool delay_send) {
771
+ auto& state = state_map_[type].subscribed_resources[name.authority][name.key];
772
+ if (state == nullptr) {
773
+ state = MakeOrphanable<ResourceTimer>(type, name);
774
+ if (!delay_send) SendMessageLocked(type);
775
+ }
776
+ }
777
+
778
+ void XdsClient::XdsChannel::AdsCall::UnsubscribeLocked(
779
+ const XdsResourceType* type, const XdsResourceName& name,
780
+ bool delay_unsubscription) {
781
+ auto& type_state_map = state_map_[type];
782
+ auto& authority_map = type_state_map.subscribed_resources[name.authority];
783
+ authority_map.erase(name.key);
784
+ if (authority_map.empty()) {
785
+ type_state_map.subscribed_resources.erase(name.authority);
786
+ // Note: We intentionally do not remove the top-level map entry for
787
+ // the resource type even if the authority map for the type is empty,
788
+ // because we need to retain the nonce in case a new watch is
789
+ // started for a resource of this type while this stream is still open.
790
+ }
791
+ // Don't need to send unsubscription message if this was the last
792
+ // resource we were subscribed to, since we'll be closing the stream
793
+ // immediately in that case.
794
+ if (!delay_unsubscription && HasSubscribedResources()) {
795
+ SendMessageLocked(type);
796
+ }
797
+ }
798
+
799
+ bool XdsClient::XdsChannel::AdsCall::HasSubscribedResources() const {
800
+ for (const auto& [_, resource_type_state] : state_map_) {
801
+ if (!resource_type_state.subscribed_resources.empty()) return true;
802
+ }
803
+ return false;
809
804
  }
810
805
 
811
806
  namespace {
812
807
 
813
- // Build a resource metadata struct for ADS result accepting methods and CSDS.
814
- XdsApi::ResourceMetadata CreateResourceMetadataAcked(
815
- std::string serialized_proto, std::string version, Timestamp update_time) {
816
- XdsApi::ResourceMetadata resource_metadata;
817
- resource_metadata.serialized_proto = std::move(serialized_proto);
818
- resource_metadata.update_time = update_time;
819
- resource_metadata.version = std::move(version);
820
- resource_metadata.client_status = XdsApi::ResourceMetadata::ACKED;
821
- return resource_metadata;
808
+ void MaybeLogDiscoveryRequest(
809
+ const XdsClient* client, upb_DefPool* def_pool,
810
+ const envoy_service_discovery_v3_DiscoveryRequest* request) {
811
+ if (GRPC_TRACE_FLAG_ENABLED(xds_client) && ABSL_VLOG_IS_ON(2)) {
812
+ const upb_MessageDef* msg_type =
813
+ envoy_service_discovery_v3_DiscoveryRequest_getmsgdef(def_pool);
814
+ char buf[10240];
815
+ upb_TextEncode(reinterpret_cast<const upb_Message*>(request), msg_type,
816
+ nullptr, 0, buf, sizeof(buf));
817
+ VLOG(2) << "[xds_client " << client << "] constructed ADS request: " << buf;
818
+ }
822
819
  }
823
820
 
824
- // Update resource_metadata for NACK.
825
- void UpdateResourceMetadataNacked(const std::string& version,
826
- const std::string& details,
827
- Timestamp update_time,
828
- XdsApi::ResourceMetadata* resource_metadata) {
829
- resource_metadata->client_status = XdsApi::ResourceMetadata::NACKED;
830
- resource_metadata->failed_version = version;
831
- resource_metadata->failed_details = details;
832
- resource_metadata->failed_update_time = update_time;
821
+ std::string SerializeDiscoveryRequest(
822
+ upb_Arena* arena, envoy_service_discovery_v3_DiscoveryRequest* request) {
823
+ size_t output_length;
824
+ char* output = envoy_service_discovery_v3_DiscoveryRequest_serialize(
825
+ request, arena, &output_length);
826
+ return std::string(output, output_length);
833
827
  }
834
828
 
835
829
  } // namespace
836
830
 
837
- void XdsClient::XdsChannel::AdsCall::AdsResponseParser::ParseResource(
838
- upb_Arena* arena, size_t idx, absl::string_view type_url,
839
- absl::string_view resource_name, absl::string_view serialized_resource) {
831
+ std::string XdsClient::XdsChannel::AdsCall::CreateAdsRequest(
832
+ absl::string_view type_url, absl::string_view version,
833
+ absl::string_view nonce, const std::vector<std::string>& resource_names,
834
+ absl::Status status) const {
835
+ upb::Arena arena;
836
+ // Create a request.
837
+ envoy_service_discovery_v3_DiscoveryRequest* request =
838
+ envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr());
839
+ // Set type_url.
840
+ std::string type_url_str = absl::StrCat("type.googleapis.com/", type_url);
841
+ envoy_service_discovery_v3_DiscoveryRequest_set_type_url(
842
+ request, StdStringToUpbString(type_url_str));
843
+ // Set version_info.
844
+ if (!version.empty()) {
845
+ envoy_service_discovery_v3_DiscoveryRequest_set_version_info(
846
+ request, StdStringToUpbString(version));
847
+ }
848
+ // Set nonce.
849
+ if (!nonce.empty()) {
850
+ envoy_service_discovery_v3_DiscoveryRequest_set_response_nonce(
851
+ request, StdStringToUpbString(nonce));
852
+ }
853
+ // Set error_detail if it's a NACK.
854
+ std::string error_string_storage;
855
+ if (!status.ok()) {
856
+ google_rpc_Status* error_detail =
857
+ envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(
858
+ request, arena.ptr());
859
+ // Hard-code INVALID_ARGUMENT as the status code.
860
+ // TODO(roth): If at some point we decide we care about this value,
861
+ // we could attach a status code to the individual errors where we
862
+ // generate them in the parsing code, and then use that here.
863
+ google_rpc_Status_set_code(error_detail, GRPC_STATUS_INVALID_ARGUMENT);
864
+ // Error description comes from the status that was passed in.
865
+ error_string_storage = std::string(status.message());
866
+ upb_StringView error_description =
867
+ StdStringToUpbString(error_string_storage);
868
+ google_rpc_Status_set_message(error_detail, error_description);
869
+ }
870
+ // Populate node.
871
+ if (!sent_initial_message_) {
872
+ envoy_config_core_v3_Node* node_msg =
873
+ envoy_service_discovery_v3_DiscoveryRequest_mutable_node(request,
874
+ arena.ptr());
875
+ PopulateXdsNode(xds_client()->bootstrap_->node(),
876
+ xds_client()->user_agent_name_,
877
+ xds_client()->user_agent_version_, node_msg, arena.ptr());
878
+ envoy_config_core_v3_Node_add_client_features(
879
+ node_msg, upb_StringView_FromString("xds.config.resource-in-sotw"),
880
+ arena.ptr());
881
+ }
882
+ // Add resource_names.
883
+ for (const std::string& resource_name : resource_names) {
884
+ envoy_service_discovery_v3_DiscoveryRequest_add_resource_names(
885
+ request, StdStringToUpbString(resource_name), arena.ptr());
886
+ }
887
+ MaybeLogDiscoveryRequest(xds_client(), xds_client()->def_pool_.ptr(),
888
+ request);
889
+ return SerializeDiscoveryRequest(arena.ptr(), request);
890
+ }
891
+
892
+ void XdsClient::XdsChannel::AdsCall::SendMessageLocked(
893
+ const XdsResourceType* type)
894
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
895
+ // Buffer message sending if an existing message is in flight.
896
+ if (send_message_pending_ != nullptr) {
897
+ buffered_requests_.insert(type);
898
+ return;
899
+ }
900
+ xds_client()->MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(xds_channel(),
901
+ type);
902
+ auto& state = state_map_[type];
903
+ std::string serialized_message = CreateAdsRequest(
904
+ type->type_url(), xds_channel()->resource_type_version_map_[type],
905
+ state.nonce, ResourceNamesForRequest(type), state.status);
906
+ sent_initial_message_ = true;
907
+ GRPC_TRACE_LOG(xds_client, INFO)
908
+ << "[xds_client " << xds_client() << "] xds server "
909
+ << xds_channel()->server_.server_uri()
910
+ << ": sending ADS request: type=" << type->type_url()
911
+ << " version=" << xds_channel()->resource_type_version_map_[type]
912
+ << " nonce=" << state.nonce << " error=" << state.status;
913
+ state.status = absl::OkStatus();
914
+ streaming_call_->SendMessage(std::move(serialized_message));
915
+ send_message_pending_ = type;
916
+ }
917
+
918
+ void XdsClient::XdsChannel::AdsCall::OnRequestSent(bool ok) {
919
+ MutexLock lock(&xds_client()->mu_);
920
+ // For each resource that was in the message we just sent, start the
921
+ // resource timer if needed.
922
+ if (ok) {
923
+ auto& resource_type_state = state_map_[send_message_pending_];
924
+ for (const auto& [_, resource_map] :
925
+ resource_type_state.subscribed_resources) {
926
+ for (auto& [_, resource_timer] : resource_map) {
927
+ resource_timer->MaybeMarkSubscriptionSendComplete(
928
+ Ref(DEBUG_LOCATION, "ResourceTimer"));
929
+ }
930
+ }
931
+ }
932
+ send_message_pending_ = nullptr;
933
+ if (ok && IsCurrentCallOnChannel()) {
934
+ // Continue to send another pending message if any.
935
+ // TODO(roth): The current code to handle buffered messages has the
936
+ // advantage of sending only the most recent list of resource names for
937
+ // each resource type (no matter how many times that resource type has
938
+ // been requested to send while the current message sending is still
939
+ // pending). But its disadvantage is that we send the requests in fixed
940
+ // order of resource types. We need to fix this if we are seeing some
941
+ // resource type(s) starved due to frequent requests of other resource
942
+ // type(s).
943
+ auto it = buffered_requests_.begin();
944
+ if (it != buffered_requests_.end()) {
945
+ SendMessageLocked(*it);
946
+ buffered_requests_.erase(it);
947
+ }
948
+ }
949
+ }
950
+
951
+ void XdsClient::XdsChannel::AdsCall::ParseResource(
952
+ size_t idx, absl::string_view type_url, absl::string_view resource_name,
953
+ absl::string_view serialized_resource, DecodeContext* context) {
840
954
  std::string error_prefix = absl::StrCat(
841
955
  "resource index ", idx, ": ",
842
956
  resource_name.empty() ? "" : absl::StrCat(resource_name, ": "));
843
957
  // Check the type_url of the resource.
844
- if (result_.type_url != type_url) {
845
- result_.errors.emplace_back(
958
+ if (context->type_url != type_url) {
959
+ context->errors.emplace_back(
846
960
  absl::StrCat(error_prefix, "incorrect resource type \"", type_url,
847
- "\" (should be \"", result_.type_url, "\")"));
848
- ++result_.num_invalid_resources;
961
+ "\" (should be \"", context->type_url, "\")"));
962
+ ++context->num_invalid_resources;
849
963
  return;
850
964
  }
851
965
  // Parse the resource.
852
- XdsResourceType::DecodeContext context = {
853
- xds_client(), ads_call_->xds_channel()->server_, &xds_client_trace,
854
- xds_client()->def_pool_.ptr(), arena};
966
+ XdsResourceType::DecodeContext resource_type_context = {
967
+ xds_client(), xds_channel()->server_, xds_client()->def_pool_.ptr(),
968
+ context->arena.ptr()};
855
969
  XdsResourceType::DecodeResult decode_result =
856
- result_.type->Decode(context, serialized_resource);
970
+ context->type->Decode(resource_type_context, serialized_resource);
857
971
  // If we didn't already have the resource name from the Resource
858
972
  // wrapper, try to get it from the decoding result.
859
973
  if (resource_name.empty()) {
@@ -864,35 +978,36 @@ void XdsClient::XdsChannel::AdsCall::AdsResponseParser::ParseResource(
864
978
  } else {
865
979
  // We don't have any way of determining the resource name, so
866
980
  // there's nothing more we can do here.
867
- result_.errors.emplace_back(absl::StrCat(
981
+ context->errors.emplace_back(absl::StrCat(
868
982
  error_prefix, decode_result.resource.status().ToString()));
869
- ++result_.num_invalid_resources;
983
+ ++context->num_invalid_resources;
870
984
  return;
871
985
  }
872
986
  }
873
987
  // If decoding failed, make sure we include the error in the NACK.
874
988
  const absl::Status& decode_status = decode_result.resource.status();
875
989
  if (!decode_status.ok()) {
876
- result_.errors.emplace_back(
990
+ context->errors.emplace_back(
877
991
  absl::StrCat(error_prefix, decode_status.ToString()));
878
992
  }
879
993
  // Check the resource name.
880
994
  auto parsed_resource_name =
881
- xds_client()->ParseXdsResourceName(resource_name, result_.type);
995
+ xds_client()->ParseXdsResourceName(resource_name, context->type);
882
996
  if (!parsed_resource_name.ok()) {
883
- result_.errors.emplace_back(
997
+ context->errors.emplace_back(
884
998
  absl::StrCat(error_prefix, "Cannot parse xDS resource name"));
885
- ++result_.num_invalid_resources;
999
+ ++context->num_invalid_resources;
886
1000
  return;
887
1001
  }
888
1002
  // Cancel resource-does-not-exist timer, if needed.
889
- auto timer_it = ads_call_->state_map_.find(result_.type);
890
- if (timer_it != ads_call_->state_map_.end()) {
891
- auto it = timer_it->second.subscribed_resources.find(
1003
+ if (auto it = state_map_.find(context->type); it != state_map_.end()) {
1004
+ auto& resource_type_state = it->second;
1005
+ auto authority_it = resource_type_state.subscribed_resources.find(
892
1006
  parsed_resource_name->authority);
893
- if (it != timer_it->second.subscribed_resources.end()) {
894
- auto res_it = it->second.find(parsed_resource_name->key);
895
- if (res_it != it->second.end()) {
1007
+ if (authority_it != resource_type_state.subscribed_resources.end()) {
1008
+ auto& resource_map = authority_it->second;
1009
+ auto res_it = resource_map.find(parsed_resource_name->key);
1010
+ if (res_it != resource_map.end()) {
896
1011
  res_it->second->MarkSeen();
897
1012
  }
898
1013
  }
@@ -903,372 +1018,397 @@ void XdsClient::XdsChannel::AdsCall::AdsResponseParser::ParseResource(
903
1018
  if (authority_it == xds_client()->authority_state_map_.end()) {
904
1019
  return; // Skip resource -- we don't have a subscription for it.
905
1020
  }
906
- // Found authority, so look up type.
907
1021
  AuthorityState& authority_state = authority_it->second;
908
- auto type_it = authority_state.resource_map.find(result_.type);
909
- if (type_it == authority_state.resource_map.end()) {
1022
+ // Found authority, so look up type.
1023
+ auto type_it = authority_state.type_map.find(context->type);
1024
+ if (type_it == authority_state.type_map.end()) {
910
1025
  return; // Skip resource -- we don't have a subscription for it.
911
1026
  }
912
1027
  auto& type_map = type_it->second;
913
1028
  // Found type, so look up resource key.
914
- auto it = type_map.find(parsed_resource_name->key);
915
- if (it == type_map.end()) {
1029
+ auto res_it = type_map.find(parsed_resource_name->key);
1030
+ if (res_it == type_map.end()) {
916
1031
  return; // Skip resource -- we don't have a subscription for it.
917
1032
  }
918
- ResourceState& resource_state = it->second;
1033
+ ResourceState& resource_state = res_it->second;
919
1034
  // If needed, record that we've seen this resource.
920
- if (result_.type->AllResourcesRequiredInSotW()) {
921
- result_.resources_seen[parsed_resource_name->authority].insert(
1035
+ if (context->type->AllResourcesRequiredInSotW()) {
1036
+ context->resources_seen[parsed_resource_name->authority].insert(
922
1037
  parsed_resource_name->key);
923
1038
  }
924
- // If we previously ignored the resource's deletion, log that we're
925
- // now re-adding it.
926
- if (resource_state.ignored_deletion) {
927
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
928
- << ads_call_->xds_channel()->server_.server_uri()
929
- << ": server returned new version of resource for which we "
930
- "previously ignored a deletion: type "
931
- << type_url << " name " << resource_name;
932
- resource_state.ignored_deletion = false;
933
- }
934
1039
  // Update resource state based on whether the resource is valid.
935
1040
  if (!decode_status.ok()) {
936
- xds_client()->NotifyWatchersOnErrorLocked(
937
- resource_state.watchers,
938
- absl::UnavailableError(
939
- absl::StrCat("invalid resource: ", decode_status.ToString())),
940
- result_.read_delay_handle);
941
- UpdateResourceMetadataNacked(result_.version, decode_status.ToString(),
942
- update_time_, &resource_state.meta);
943
- ++result_.num_invalid_resources;
1041
+ ++context->num_invalid_resources;
1042
+ // If the fail_on_data_errors server feature is present, drop the
1043
+ // existing cached resource, if any.
1044
+ const bool drop_cached_resource = XdsDataErrorHandlingEnabled() &&
1045
+ xds_channel()->server_.FailOnDataErrors();
1046
+ resource_state.SetNacked(context->version, decode_status.message(),
1047
+ context->update_time, drop_cached_resource);
1048
+ xds_client()->NotifyWatchersOnError(resource_state,
1049
+ context->read_delay_handle);
944
1050
  return;
945
1051
  }
946
1052
  // Resource is valid.
947
- ++result_.num_valid_resources;
948
- // If it didn't change, ignore it.
949
- if (resource_state.resource != nullptr &&
950
- result_.type->ResourcesEqual(resource_state.resource.get(),
951
- decode_result.resource->get())) {
952
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
953
- LOG(INFO) << "[xds_client " << xds_client() << "] " << result_.type_url
954
- << " resource " << resource_name
955
- << " identical to current, ignoring.";
1053
+ ++context->num_valid_resources;
1054
+ // Check if the resource has changed.
1055
+ const bool resource_identical =
1056
+ resource_state.HasResource() &&
1057
+ context->type->ResourcesEqual(resource_state.resource().get(),
1058
+ decode_result.resource->get());
1059
+ // If not changed, keep using the current decoded resource object.
1060
+ // This should avoid wasting memory, since external watchers may be
1061
+ // holding refs to the current object.
1062
+ if (resource_identical) decode_result.resource = resource_state.resource();
1063
+ // Update the resource state.
1064
+ resource_state.SetAcked(std::move(*decode_result.resource),
1065
+ std::string(serialized_resource), context->version,
1066
+ context->update_time);
1067
+ // If the resource didn't change, inhibit watcher notifications.
1068
+ if (resource_identical) {
1069
+ GRPC_TRACE_LOG(xds_client, INFO)
1070
+ << "[xds_client " << xds_client() << "] " << context->type_url
1071
+ << " resource " << resource_name << " identical to current, ignoring.";
1072
+ // If we previously had connectivity problems, notify watchers that
1073
+ // the ambient error has been cleared.
1074
+ if (!xds_channel()->status().ok()) {
1075
+ xds_client()->NotifyWatchersOnAmbientError(absl::OkStatus(),
1076
+ resource_state.watchers(),
1077
+ context->read_delay_handle);
956
1078
  }
957
1079
  return;
958
1080
  }
959
- // Update the resource state.
960
- resource_state.resource = std::move(*decode_result.resource);
961
- resource_state.meta = CreateResourceMetadataAcked(
962
- std::string(serialized_resource), result_.version, update_time_);
963
1081
  // Notify watchers.
964
- auto& watchers_list = resource_state.watchers;
965
- xds_client()->work_serializer_.Schedule(
966
- [watchers_list, value = resource_state.resource,
967
- read_delay_handle = result_.read_delay_handle]()
968
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client()->work_serializer_) {
969
- for (const auto& p : watchers_list) {
970
- p.first->OnGenericResourceChanged(value, read_delay_handle);
971
- }
972
- },
973
- DEBUG_LOCATION);
1082
+ xds_client()->NotifyWatchersOnResourceChanged(resource_state.resource(),
1083
+ resource_state.watchers(),
1084
+ context->read_delay_handle);
974
1085
  }
975
1086
 
976
- void XdsClient::XdsChannel::AdsCall::AdsResponseParser::
977
- ResourceWrapperParsingFailed(size_t idx, absl::string_view message) {
978
- result_.errors.emplace_back(
979
- absl::StrCat("resource index ", idx, ": ", message));
980
- ++result_.num_invalid_resources;
981
- }
982
-
983
- //
984
- // XdsClient::XdsChannel::AdsCall
985
- //
986
-
987
- XdsClient::XdsChannel::AdsCall::AdsCall(
988
- RefCountedPtr<RetryableCall<AdsCall>> retryable_call)
989
- : InternallyRefCounted<AdsCall>(
990
- GRPC_TRACE_FLAG_ENABLED(xds_client_refcount) ? "AdsCall" : nullptr),
991
- retryable_call_(std::move(retryable_call)) {
992
- CHECK_NE(xds_client(), nullptr);
993
- // Init the ADS call.
994
- const char* method =
995
- "/envoy.service.discovery.v3.AggregatedDiscoveryService/"
996
- "StreamAggregatedResources";
997
- streaming_call_ = xds_channel()->transport_->CreateStreamingCall(
998
- method, std::make_unique<StreamEventHandler>(
999
- // Passing the initial ref here. This ref will go away when
1000
- // the StreamEventHandler is destroyed.
1001
- RefCountedPtr<AdsCall>(this)));
1002
- CHECK(streaming_call_ != nullptr);
1003
- // Start the call.
1004
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1005
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
1006
- << xds_channel()->server_.server_uri()
1007
- << ": starting ADS call (ads_call: " << this
1008
- << ", streaming_call: " << streaming_call_.get() << ")";
1087
+ void XdsClient::XdsChannel::AdsCall::HandleServerReportedResourceError(
1088
+ size_t idx, absl::string_view resource_name, absl::Status status,
1089
+ DecodeContext* context) {
1090
+ std::string error_prefix = absl::StrCat(
1091
+ "resource_errors index ", idx, ": ",
1092
+ resource_name.empty() ? "" : absl::StrCat(resource_name, ": "));
1093
+ if (resource_name.empty()) {
1094
+ context->errors.emplace_back(
1095
+ absl::StrCat(error_prefix, "resource_name unset"));
1096
+ ++context->num_invalid_resources;
1097
+ return;
1009
1098
  }
1010
- // If this is a reconnect, add any necessary subscriptions from what's
1011
- // already in the cache.
1012
- for (auto& a : xds_client()->authority_state_map_) {
1013
- const std::string& authority = a.first;
1014
- auto it = std::find(a.second.xds_channels.begin(),
1015
- a.second.xds_channels.end(), xds_channel());
1016
- // Skip authorities that are not using this xDS channel. The channel can be
1017
- // anywhere in the list.
1018
- if (it == a.second.xds_channels.end()) continue;
1019
- for (const auto& t : a.second.resource_map) {
1020
- const XdsResourceType* type = t.first;
1021
- for (const auto& r : t.second) {
1022
- const XdsResourceKey& resource_key = r.first;
1023
- SubscribeLocked(type, {authority, resource_key}, /*delay_send=*/true);
1099
+ if (status.ok()) {
1100
+ context->errors.emplace_back(
1101
+ absl::StrCat(error_prefix, "error_detail must be non-OK"));
1102
+ ++context->num_invalid_resources;
1103
+ return;
1104
+ }
1105
+ // Check the resource name.
1106
+ auto parsed_resource_name =
1107
+ xds_client()->ParseXdsResourceName(resource_name, context->type);
1108
+ if (!parsed_resource_name.ok()) {
1109
+ context->errors.emplace_back(
1110
+ absl::StrCat(error_prefix, "Cannot parse xDS resource name"));
1111
+ ++context->num_invalid_resources;
1112
+ return;
1113
+ }
1114
+ // Cancel resource-does-not-exist timer, if needed.
1115
+ auto timer_it = state_map_.find(context->type);
1116
+ if (timer_it != state_map_.end()) {
1117
+ auto it = timer_it->second.subscribed_resources.find(
1118
+ parsed_resource_name->authority);
1119
+ if (it != timer_it->second.subscribed_resources.end()) {
1120
+ auto res_it = it->second.find(parsed_resource_name->key);
1121
+ if (res_it != it->second.end()) {
1122
+ res_it->second->MarkSeen();
1024
1123
  }
1025
1124
  }
1026
1125
  }
1027
- // Send initial message if we added any subscriptions above.
1028
- for (const auto& p : state_map_) {
1029
- SendMessageLocked(p.first);
1030
- }
1031
- streaming_call_->StartRecvMessage();
1032
- }
1033
-
1034
- void XdsClient::XdsChannel::AdsCall::Orphan() {
1035
- state_map_.clear();
1036
- // Note that the initial ref is held by the StreamEventHandler, which
1037
- // will be destroyed when streaming_call_ is destroyed, which may not happen
1038
- // here, since there may be other refs held to streaming_call_ by internal
1039
- // callbacks.
1040
- streaming_call_.reset();
1041
- }
1042
-
1043
- void XdsClient::XdsChannel::AdsCall::SendMessageLocked(
1044
- const XdsResourceType* type)
1045
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
1046
- // Buffer message sending if an existing message is in flight.
1047
- if (send_message_pending_ != nullptr) {
1048
- buffered_requests_.insert(type);
1049
- return;
1126
+ // Lookup the authority in the cache.
1127
+ auto authority_it =
1128
+ xds_client()->authority_state_map_.find(parsed_resource_name->authority);
1129
+ if (authority_it == xds_client()->authority_state_map_.end()) {
1130
+ return; // Skip resource -- we don't have a subscription for it.
1050
1131
  }
1051
- auto& state = state_map_[type];
1052
- std::string serialized_message = xds_client()->api_.CreateAdsRequest(
1053
- type->type_url(), xds_channel()->resource_type_version_map_[type],
1054
- state.nonce, ResourceNamesForRequest(type), state.status,
1055
- !sent_initial_message_);
1056
- sent_initial_message_ = true;
1057
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1058
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
1059
- << xds_channel()->server_.server_uri()
1060
- << ": sending ADS request: type=" << type->type_url()
1061
- << " version=" << xds_channel()->resource_type_version_map_[type]
1062
- << " nonce=" << state.nonce << " error=" << state.status;
1132
+ AuthorityState& authority_state = authority_it->second;
1133
+ // Found authority, so look up type.
1134
+ auto type_it = authority_state.type_map.find(context->type);
1135
+ if (type_it == authority_state.type_map.end()) {
1136
+ return; // Skip resource -- we don't have a subscription for it.
1063
1137
  }
1064
- state.status = absl::OkStatus();
1065
- streaming_call_->SendMessage(std::move(serialized_message));
1066
- send_message_pending_ = type;
1067
- }
1068
-
1069
- void XdsClient::XdsChannel::AdsCall::SubscribeLocked(
1070
- const XdsResourceType* type, const XdsResourceName& name, bool delay_send) {
1071
- auto& state = state_map_[type].subscribed_resources[name.authority][name.key];
1072
- if (state == nullptr) {
1073
- state = MakeOrphanable<ResourceTimer>(type, name);
1074
- if (!delay_send) SendMessageLocked(type);
1138
+ auto& type_map = type_it->second;
1139
+ // Found type, so look up resource key.
1140
+ auto it = type_map.find(parsed_resource_name->key);
1141
+ if (it == type_map.end()) {
1142
+ return; // Skip resource -- we don't have a subscription for it.
1075
1143
  }
1076
- }
1077
-
1078
- void XdsClient::XdsChannel::AdsCall::UnsubscribeLocked(
1079
- const XdsResourceType* type, const XdsResourceName& name,
1080
- bool delay_unsubscription) {
1081
- auto& type_state_map = state_map_[type];
1082
- auto& authority_map = type_state_map.subscribed_resources[name.authority];
1083
- authority_map.erase(name.key);
1084
- if (authority_map.empty()) {
1085
- type_state_map.subscribed_resources.erase(name.authority);
1144
+ ResourceState& resource_state = it->second;
1145
+ // If needed, record that we've seen this resource.
1146
+ if (context->type->AllResourcesRequiredInSotW()) {
1147
+ context->resources_seen[parsed_resource_name->authority].insert(
1148
+ parsed_resource_name->key);
1086
1149
  }
1087
- // Don't need to send unsubscription message if this was the last
1088
- // resource we were subscribed to, since we'll be closing the stream
1089
- // immediately in that case.
1090
- if (!delay_unsubscription && HasSubscribedResources()) {
1091
- SendMessageLocked(type);
1150
+ ++context->num_invalid_resources;
1151
+ // Update cache state.
1152
+ const bool drop_cached_resource =
1153
+ xds_channel()->server_.FailOnDataErrors() &&
1154
+ (status.code() == absl::StatusCode::kNotFound ||
1155
+ status.code() == absl::StatusCode::kPermissionDenied);
1156
+ resource_state.SetReceivedError(context->version, std::move(status),
1157
+ context->update_time, drop_cached_resource);
1158
+ // If there is no cached resource (either because we didn't have one
1159
+ // or because we just dropped it due to fail_on_data_errors), then notify
1160
+ // via OnResourceChanged(); otherwise, notify via OnAmbientError().
1161
+ if (!resource_state.HasResource()) {
1162
+ xds_client()->NotifyWatchersOnResourceChanged(
1163
+ resource_state.failed_status(), resource_state.watchers(),
1164
+ context->read_delay_handle);
1165
+ } else {
1166
+ xds_client()->NotifyWatchersOnAmbientError(resource_state.failed_status(),
1167
+ resource_state.watchers(),
1168
+ context->read_delay_handle);
1092
1169
  }
1093
1170
  }
1094
1171
 
1095
- bool XdsClient::XdsChannel::AdsCall::HasSubscribedResources() const {
1096
- for (const auto& p : state_map_) {
1097
- if (!p.second.subscribed_resources.empty()) return true;
1172
+ namespace {
1173
+
1174
+ void MaybeLogDiscoveryResponse(
1175
+ const XdsClient* client, upb_DefPool* def_pool,
1176
+ const envoy_service_discovery_v3_DiscoveryResponse* response) {
1177
+ if (GRPC_TRACE_FLAG_ENABLED(xds_client) && ABSL_VLOG_IS_ON(2)) {
1178
+ const upb_MessageDef* msg_type =
1179
+ envoy_service_discovery_v3_DiscoveryResponse_getmsgdef(def_pool);
1180
+ char buf[10240];
1181
+ upb_TextEncode(reinterpret_cast<const upb_Message*>(response), msg_type,
1182
+ nullptr, 0, buf, sizeof(buf));
1183
+ VLOG(2) << "[xds_client " << client << "] received response: " << buf;
1098
1184
  }
1099
- return false;
1100
1185
  }
1101
1186
 
1102
- void XdsClient::XdsChannel::AdsCall::OnRequestSent(bool ok) {
1103
- MutexLock lock(&xds_client()->mu_);
1104
- // For each resource that was in the message we just sent, start the
1105
- // resource timer if needed.
1106
- if (ok) {
1107
- auto& resource_type_state = state_map_[send_message_pending_];
1108
- for (const auto& p : resource_type_state.subscribed_resources) {
1109
- for (auto& q : p.second) {
1110
- q.second->MaybeMarkSubscriptionSendComplete(
1111
- Ref(DEBUG_LOCATION, "ResourceTimer"));
1187
+ } // namespace
1188
+
1189
+ absl::Status XdsClient::XdsChannel::AdsCall::DecodeAdsResponse(
1190
+ absl::string_view encoded_response, DecodeContext* context) {
1191
+ // Decode the response.
1192
+ const envoy_service_discovery_v3_DiscoveryResponse* response =
1193
+ envoy_service_discovery_v3_DiscoveryResponse_parse(
1194
+ encoded_response.data(), encoded_response.size(),
1195
+ context->arena.ptr());
1196
+ // If decoding fails, report a fatal error and return.
1197
+ if (response == nullptr) {
1198
+ return absl::InvalidArgumentError("Can't decode DiscoveryResponse.");
1199
+ }
1200
+ MaybeLogDiscoveryResponse(xds_client(), xds_client()->def_pool_.ptr(),
1201
+ response);
1202
+ // Get the type_url, version, nonce, number of resources, and number
1203
+ // of errors.
1204
+ context->type_url = std::string(absl::StripPrefix(
1205
+ UpbStringToAbsl(
1206
+ envoy_service_discovery_v3_DiscoveryResponse_type_url(response)),
1207
+ "type.googleapis.com/"));
1208
+ context->version = UpbStringToStdString(
1209
+ envoy_service_discovery_v3_DiscoveryResponse_version_info(response));
1210
+ context->nonce = UpbStringToStdString(
1211
+ envoy_service_discovery_v3_DiscoveryResponse_nonce(response));
1212
+ size_t num_resources;
1213
+ const google_protobuf_Any* const* resources =
1214
+ envoy_service_discovery_v3_DiscoveryResponse_resources(response,
1215
+ &num_resources);
1216
+ size_t num_errors = 0;
1217
+ const envoy_service_discovery_v3_ResourceError* const* errors = nullptr;
1218
+ if (XdsDataErrorHandlingEnabled()) {
1219
+ errors = envoy_service_discovery_v3_DiscoveryResponse_resource_errors(
1220
+ response, &num_errors);
1221
+ }
1222
+ GRPC_TRACE_LOG(xds_client, INFO)
1223
+ << "[xds_client " << xds_client() << "] xds server "
1224
+ << xds_channel()->server_.server_uri()
1225
+ << ": received ADS response: type_url=" << context->type_url
1226
+ << ", version=" << context->version << ", nonce=" << context->nonce
1227
+ << ", num_resources=" << num_resources << ", num_errors=" << num_errors;
1228
+ context->type = xds_client()->GetResourceTypeLocked(context->type_url);
1229
+ if (context->type == nullptr) {
1230
+ return absl::InvalidArgumentError(
1231
+ absl::StrCat("unknown resource type ", context->type_url));
1232
+ }
1233
+ context->read_delay_handle = MakeRefCounted<AdsReadDelayHandle>(Ref());
1234
+ // Process each resource.
1235
+ for (size_t i = 0; i < num_resources; ++i) {
1236
+ absl::string_view type_url = absl::StripPrefix(
1237
+ UpbStringToAbsl(google_protobuf_Any_type_url(resources[i])),
1238
+ "type.googleapis.com/");
1239
+ absl::string_view serialized_resource =
1240
+ UpbStringToAbsl(google_protobuf_Any_value(resources[i]));
1241
+ // Unwrap Resource messages, if so wrapped.
1242
+ absl::string_view resource_name;
1243
+ if (type_url == "envoy.service.discovery.v3.Resource") {
1244
+ const auto* resource_wrapper = envoy_service_discovery_v3_Resource_parse(
1245
+ serialized_resource.data(), serialized_resource.size(),
1246
+ context->arena.ptr());
1247
+ if (resource_wrapper == nullptr) {
1248
+ context->errors.emplace_back(absl::StrCat(
1249
+ "resource index ", i, ": Can't decode Resource proto wrapper"));
1250
+ ++context->num_invalid_resources;
1251
+ continue;
1252
+ }
1253
+ const auto* resource =
1254
+ envoy_service_discovery_v3_Resource_resource(resource_wrapper);
1255
+ if (resource == nullptr) {
1256
+ context->errors.emplace_back(
1257
+ absl::StrCat("resource index ", i,
1258
+ ": No resource present in Resource proto wrappe"));
1259
+ ++context->num_invalid_resources;
1260
+ continue;
1112
1261
  }
1262
+ type_url = absl::StripPrefix(
1263
+ UpbStringToAbsl(google_protobuf_Any_type_url(resource)),
1264
+ "type.googleapis.com/");
1265
+ serialized_resource =
1266
+ UpbStringToAbsl(google_protobuf_Any_value(resource));
1267
+ resource_name = UpbStringToAbsl(
1268
+ envoy_service_discovery_v3_Resource_name(resource_wrapper));
1113
1269
  }
1270
+ ParseResource(i, type_url, resource_name, serialized_resource, context);
1114
1271
  }
1115
- send_message_pending_ = nullptr;
1116
- if (ok && IsCurrentCallOnChannel()) {
1117
- // Continue to send another pending message if any.
1118
- // TODO(roth): The current code to handle buffered messages has the
1119
- // advantage of sending only the most recent list of resource names for
1120
- // each resource type (no matter how many times that resource type has
1121
- // been requested to send while the current message sending is still
1122
- // pending). But its disadvantage is that we send the requests in fixed
1123
- // order of resource types. We need to fix this if we are seeing some
1124
- // resource type(s) starved due to frequent requests of other resource
1125
- // type(s).
1126
- auto it = buffered_requests_.begin();
1127
- if (it != buffered_requests_.end()) {
1128
- SendMessageLocked(*it);
1129
- buffered_requests_.erase(it);
1272
+ // Process each error.
1273
+ for (size_t i = 0; i < num_errors; ++i) {
1274
+ absl::string_view name;
1275
+ {
1276
+ const envoy_service_discovery_v3_ResourceName* resource_name =
1277
+ envoy_service_discovery_v3_ResourceError_resource_name(errors[i]);
1278
+ if (resource_name != nullptr) {
1279
+ name = UpbStringToAbsl(
1280
+ envoy_service_discovery_v3_ResourceName_name(resource_name));
1281
+ }
1130
1282
  }
1283
+ absl::Status status;
1284
+ {
1285
+ const google_rpc_Status* error_detail =
1286
+ envoy_service_discovery_v3_ResourceError_error_detail(errors[i]);
1287
+ if (error_detail != nullptr) {
1288
+ status = absl::Status(
1289
+ static_cast<absl::StatusCode>(google_rpc_Status_code(error_detail)),
1290
+ UpbStringToAbsl(google_rpc_Status_message(error_detail)));
1291
+ }
1292
+ }
1293
+ HandleServerReportedResourceError(i, name, std::move(status), context);
1131
1294
  }
1295
+ return absl::OkStatus();
1132
1296
  }
1133
1297
 
1134
1298
  void XdsClient::XdsChannel::AdsCall::OnRecvMessage(absl::string_view payload) {
1135
- // Needs to be destroyed after the mutex is released.
1136
- RefCountedPtr<ReadDelayHandle> read_delay_handle;
1137
- {
1138
- MutexLock lock(&xds_client()->mu_);
1139
- if (!IsCurrentCallOnChannel()) return;
1140
- // Parse and validate the response.
1141
- AdsResponseParser parser(this);
1142
- absl::Status status = xds_client()->api_.ParseAdsResponse(payload, &parser);
1143
- // This includes a handle that will trigger an ADS read.
1144
- AdsResponseParser::Result result = parser.TakeResult();
1145
- read_delay_handle = std::move(result.read_delay_handle);
1146
- if (!status.ok()) {
1147
- // Ignore unparsable response.
1299
+ // context.read_delay_handle needs to be destroyed after the mutex is
1300
+ // released.
1301
+ DecodeContext context;
1302
+ MutexLock lock(&xds_client()->mu_);
1303
+ if (!IsCurrentCallOnChannel()) return;
1304
+ // Parse and validate the response.
1305
+ absl::Status status = DecodeAdsResponse(payload, &context);
1306
+ if (!status.ok()) {
1307
+ // Ignore unparsable response.
1308
+ LOG(ERROR) << "[xds_client " << xds_client() << "] xds server "
1309
+ << xds_channel()->server_.server_uri()
1310
+ << ": error parsing ADS response (" << status << ") -- ignoring";
1311
+ } else {
1312
+ seen_response_ = true;
1313
+ xds_channel()->SetHealthyLocked();
1314
+ // Update nonce.
1315
+ auto& state = state_map_[context.type];
1316
+ state.nonce = context.nonce;
1317
+ // If we got an error, set state.status so that we'll NACK the update.
1318
+ if (!context.errors.empty()) {
1319
+ state.status = absl::UnavailableError(
1320
+ absl::StrCat("xDS response validation errors: [",
1321
+ absl::StrJoin(context.errors, "; "), "]"));
1148
1322
  LOG(ERROR) << "[xds_client " << xds_client() << "] xds server "
1149
1323
  << xds_channel()->server_.server_uri()
1150
- << ": error parsing ADS response (" << status
1151
- << ") -- ignoring";
1152
- } else {
1153
- seen_response_ = true;
1154
- xds_channel()->SetHealthyLocked();
1155
- // Update nonce.
1156
- auto& state = state_map_[result.type];
1157
- state.nonce = result.nonce;
1158
- // If we got an error, set state.status so that we'll NACK the update.
1159
- if (!result.errors.empty()) {
1160
- state.status = absl::UnavailableError(
1161
- absl::StrCat("xDS response validation errors: [",
1162
- absl::StrJoin(result.errors, "; "), "]"));
1163
- LOG(ERROR) << "[xds_client " << xds_client() << "] xds server "
1164
- << xds_channel()->server_.server_uri()
1165
- << ": ADS response invalid for resource type "
1166
- << result.type_url << " version " << result.version
1167
- << ", will NACK: nonce=" << state.nonce
1168
- << " status=" << state.status;
1169
- }
1170
- // Delete resources not seen in update if needed.
1171
- if (result.type->AllResourcesRequiredInSotW()) {
1172
- for (auto& a : xds_client()->authority_state_map_) {
1173
- const std::string& authority = a.first;
1174
- AuthorityState& authority_state = a.second;
1175
- // Skip authorities that are not using this xDS channel.
1176
- if (authority_state.xds_channels.back() != xds_channel()) {
1177
- continue;
1178
- }
1179
- auto seen_authority_it = result.resources_seen.find(authority);
1180
- // Find this resource type.
1181
- auto type_it = authority_state.resource_map.find(result.type);
1182
- if (type_it == authority_state.resource_map.end()) continue;
1183
- // Iterate over resource ids.
1184
- for (auto& r : type_it->second) {
1185
- const XdsResourceKey& resource_key = r.first;
1186
- ResourceState& resource_state = r.second;
1187
- if (seen_authority_it == result.resources_seen.end() ||
1188
- seen_authority_it->second.find(resource_key) ==
1189
- seen_authority_it->second.end()) {
1190
- // If the resource was newly requested but has not yet been
1191
- // received, we don't want to generate an error for the
1192
- // watchers, because this ADS response may be in reaction to an
1193
- // earlier request that did not yet request the new resource, so
1194
- // its absence from the response does not necessarily indicate
1195
- // that the resource does not exist. For that case, we rely on
1196
- // the request timeout instead.
1197
- if (resource_state.resource == nullptr) continue;
1198
- if (xds_channel()->server_.IgnoreResourceDeletion()) {
1199
- if (!resource_state.ignored_deletion) {
1200
- LOG(ERROR)
1201
- << "[xds_client " << xds_client() << "] xds server "
1202
- << xds_channel()->server_.server_uri()
1203
- << ": ignoring deletion for resource type "
1204
- << result.type_url << " name "
1205
- << XdsClient::ConstructFullXdsResourceName(
1206
- authority, result.type_url.c_str(), resource_key);
1207
- resource_state.ignored_deletion = true;
1208
- }
1209
- } else {
1210
- resource_state.resource.reset();
1211
- resource_state.meta.client_status =
1212
- XdsApi::ResourceMetadata::DOES_NOT_EXIST;
1213
- xds_client()->NotifyWatchersOnResourceDoesNotExist(
1214
- resource_state.watchers, read_delay_handle);
1215
- }
1216
- }
1324
+ << ": ADS response invalid for resource type "
1325
+ << context.type_url << " version " << context.version
1326
+ << ", will NACK: nonce=" << state.nonce
1327
+ << " status=" << state.status;
1328
+ }
1329
+ // Delete resources not seen in update if needed.
1330
+ if (context.type->AllResourcesRequiredInSotW()) {
1331
+ for (auto& [authority, authority_state] :
1332
+ xds_client()->authority_state_map_) {
1333
+ // Skip authorities that are not using this xDS channel.
1334
+ if (authority_state.xds_channels.back() != xds_channel()) {
1335
+ continue;
1336
+ }
1337
+ auto seen_authority_it = context.resources_seen.find(authority);
1338
+ // Find this resource type.
1339
+ auto type_it = authority_state.type_map.find(context.type);
1340
+ if (type_it == authority_state.type_map.end()) continue;
1341
+ // Iterate over resource ids.
1342
+ for (auto& [resource_key, resource_state] : type_it->second) {
1343
+ if (seen_authority_it == context.resources_seen.end() ||
1344
+ seen_authority_it->second.find(resource_key) ==
1345
+ seen_authority_it->second.end()) {
1346
+ // If the resource was newly requested but has not yet been
1347
+ // received, we don't want to generate an error for the
1348
+ // watchers, because this ADS response may be in reaction to an
1349
+ // earlier request that did not yet request the new resource, so
1350
+ // its absence from the response does not necessarily indicate
1351
+ // that the resource does not exist. For that case, we rely on
1352
+ // the request timeout instead.
1353
+ if (!resource_state.HasResource()) continue;
1354
+ const bool drop_cached_resource =
1355
+ XdsDataErrorHandlingEnabled()
1356
+ ? xds_channel()->server_.FailOnDataErrors()
1357
+ : !xds_channel()->server_.IgnoreResourceDeletion();
1358
+ resource_state.SetDoesNotExistOnLdsOrCdsDeletion(
1359
+ context.version, context.update_time, drop_cached_resource);
1360
+ xds_client()->NotifyWatchersOnError(resource_state,
1361
+ context.read_delay_handle);
1217
1362
  }
1218
1363
  }
1219
1364
  }
1220
- // If we had valid resources or the update was empty, update the version.
1221
- if (result.num_valid_resources > 0 || result.errors.empty()) {
1222
- xds_channel()->resource_type_version_map_[result.type] =
1223
- std::move(result.version);
1224
- }
1225
- // Send ACK or NACK.
1226
- SendMessageLocked(result.type);
1227
1365
  }
1228
- // Update metrics.
1229
- if (xds_client()->metrics_reporter_ != nullptr) {
1230
- xds_client()->metrics_reporter_->ReportResourceUpdates(
1231
- xds_channel()->server_.server_uri(), result.type_url,
1232
- result.num_valid_resources, result.num_invalid_resources);
1366
+ // If we had valid resources or the update was empty, update the version.
1367
+ if (context.num_valid_resources > 0 || context.errors.empty()) {
1368
+ xds_channel()->resource_type_version_map_[context.type] =
1369
+ std::move(context.version);
1233
1370
  }
1371
+ // Send ACK or NACK.
1372
+ SendMessageLocked(context.type);
1373
+ }
1374
+ // Update metrics.
1375
+ if (xds_client()->metrics_reporter_ != nullptr) {
1376
+ xds_client()->metrics_reporter_->ReportResourceUpdates(
1377
+ xds_channel()->server_.server_uri(), context.type_url,
1378
+ context.num_valid_resources, context.num_invalid_resources);
1234
1379
  }
1235
- xds_client()->work_serializer_.DrainQueue();
1236
1380
  }
1237
1381
 
1238
1382
  void XdsClient::XdsChannel::AdsCall::OnStatusReceived(absl::Status status) {
1239
- {
1240
- MutexLock lock(&xds_client()->mu_);
1241
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1242
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
1243
- << xds_channel()->server_.server_uri()
1244
- << ": ADS call status received (xds_channel=" << xds_channel()
1245
- << ", ads_call=" << this
1246
- << ", streaming_call=" << streaming_call_.get()
1247
- << "): " << status;
1248
- }
1249
- // Cancel any does-not-exist timers that may be pending.
1250
- for (const auto& p : state_map_) {
1251
- for (const auto& q : p.second.subscribed_resources) {
1252
- for (auto& r : q.second) {
1253
- r.second->MaybeCancelTimer();
1254
- }
1383
+ MutexLock lock(&xds_client()->mu_);
1384
+ GRPC_TRACE_LOG(xds_client, INFO)
1385
+ << "[xds_client " << xds_client() << "] xds server "
1386
+ << xds_channel()->server_.server_uri()
1387
+ << ": ADS call status received (xds_channel=" << xds_channel()
1388
+ << ", ads_call=" << this << ", streaming_call=" << streaming_call_.get()
1389
+ << "): " << status;
1390
+ // Cancel any does-not-exist timers that may be pending.
1391
+ for (const auto& [_, resource_type_state] : state_map_) {
1392
+ for (const auto& [_, resource_map] :
1393
+ resource_type_state.subscribed_resources) {
1394
+ for (auto& [_, resource_timer] : resource_map) {
1395
+ resource_timer->MaybeCancelTimer();
1255
1396
  }
1256
1397
  }
1257
- // Ignore status from a stale call.
1258
- if (IsCurrentCallOnChannel()) {
1259
- // Try to restart the call.
1260
- retryable_call_->OnCallFinishedLocked();
1261
- // If we didn't receive a response on the stream, report the
1262
- // stream failure as a connectivity failure, which will report the
1263
- // error to all watchers of resources on this channel.
1264
- if (!seen_response_) {
1265
- xds_channel()->SetChannelStatusLocked(absl::UnavailableError(
1266
- absl::StrCat("xDS call failed with no responses received; status: ",
1267
- status.ToString())));
1268
- }
1398
+ }
1399
+ // Ignore status from a stale call.
1400
+ if (IsCurrentCallOnChannel()) {
1401
+ // Try to restart the call.
1402
+ retryable_call_->OnCallFinishedLocked();
1403
+ // If we didn't receive a response on the stream, report the
1404
+ // stream failure as a connectivity failure, which will report the
1405
+ // error to all watchers of resources on this channel.
1406
+ if (!seen_response_) {
1407
+ xds_channel()->SetChannelStatusLocked(absl::UnavailableError(
1408
+ absl::StrCat("xDS call failed with no responses received; status: ",
1409
+ status.ToString())));
1269
1410
  }
1270
1411
  }
1271
- xds_client()->work_serializer_.DrainQueue();
1272
1412
  }
1273
1413
 
1274
1414
  bool XdsClient::XdsChannel::AdsCall::IsCurrentCallOnChannel() const {
@@ -1284,13 +1424,10 @@ XdsClient::XdsChannel::AdsCall::ResourceNamesForRequest(
1284
1424
  std::vector<std::string> resource_names;
1285
1425
  auto it = state_map_.find(type);
1286
1426
  if (it != state_map_.end()) {
1287
- for (auto& a : it->second.subscribed_resources) {
1288
- const std::string& authority = a.first;
1289
- for (auto& p : a.second) {
1290
- const XdsResourceKey& resource_key = p.first;
1427
+ for (auto& [authority, authority_state] : it->second.subscribed_resources) {
1428
+ for (auto& [resource_key, resource_timer] : authority_state) {
1291
1429
  resource_names.emplace_back(XdsClient::ConstructFullXdsResourceName(
1292
1430
  authority, type->type_url(), resource_key));
1293
- OrphanablePtr<ResourceTimer>& resource_timer = p.second;
1294
1431
  resource_timer->MarkSubscriptionSendStarted();
1295
1432
  }
1296
1433
  }
@@ -1299,246 +1436,143 @@ XdsClient::XdsChannel::AdsCall::ResourceNamesForRequest(
1299
1436
  }
1300
1437
 
1301
1438
  //
1302
- // XdsClient::XdsChannel::LrsCall::Timer
1303
- //
1304
-
1305
- void XdsClient::XdsChannel::LrsCall::Timer::Orphan() {
1306
- if (timer_handle_.has_value()) {
1307
- xds_client()->engine()->Cancel(*timer_handle_);
1308
- timer_handle_.reset();
1309
- }
1310
- Unref(DEBUG_LOCATION, "Orphan");
1311
- }
1312
-
1313
- void XdsClient::XdsChannel::LrsCall::Timer::ScheduleNextReportLocked() {
1314
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1315
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
1316
- << lrs_call_->xds_channel()->server_.server_uri()
1317
- << ": scheduling next load report in "
1318
- << lrs_call_->load_reporting_interval_;
1319
- }
1320
- timer_handle_ = xds_client()->engine()->RunAfter(
1321
- lrs_call_->load_reporting_interval_,
1322
- [self = Ref(DEBUG_LOCATION, "timer")]() {
1323
- ApplicationCallbackExecCtx callback_exec_ctx;
1324
- ExecCtx exec_ctx;
1325
- self->OnNextReportTimer();
1326
- });
1327
- }
1328
-
1329
- void XdsClient::XdsChannel::LrsCall::Timer::OnNextReportTimer() {
1330
- MutexLock lock(&xds_client()->mu_);
1331
- timer_handle_.reset();
1332
- if (IsCurrentTimerOnCall()) lrs_call_->SendReportLocked();
1333
- }
1334
-
1335
- //
1336
- // XdsClient::XdsChannel::LrsCall
1439
+ // XdsClient::ResourceState
1337
1440
  //
1338
1441
 
1339
- XdsClient::XdsChannel::LrsCall::LrsCall(
1340
- RefCountedPtr<RetryableCall<LrsCall>> retryable_call)
1341
- : InternallyRefCounted<LrsCall>(
1342
- GRPC_TRACE_FLAG_ENABLED(xds_client_refcount) ? "LrsCall" : nullptr),
1343
- retryable_call_(std::move(retryable_call)) {
1344
- // Init the LRS call. Note that the call will progress every time there's
1345
- // activity in xds_client()->interested_parties_, which is comprised of
1346
- // the polling entities from client_channel.
1347
- CHECK_NE(xds_client(), nullptr);
1348
- const char* method =
1349
- "/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats";
1350
- streaming_call_ = xds_channel()->transport_->CreateStreamingCall(
1351
- method, std::make_unique<StreamEventHandler>(
1352
- // Passing the initial ref here. This ref will go away when
1353
- // the StreamEventHandler is destroyed.
1354
- RefCountedPtr<LrsCall>(this)));
1355
- CHECK(streaming_call_ != nullptr);
1356
- // Start the call.
1357
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1358
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
1359
- << xds_channel()->server_.server_uri()
1360
- << ": starting LRS call (lrs_call=" << this
1361
- << ", streaming_call=" << streaming_call_.get() << ")";
1362
- }
1363
- // Send the initial request.
1364
- std::string serialized_payload = xds_client()->api_.CreateLrsInitialRequest();
1365
- SendMessageLocked(std::move(serialized_payload));
1366
- // Read initial response.
1367
- streaming_call_->StartRecvMessage();
1368
- }
1369
-
1370
- void XdsClient::XdsChannel::LrsCall::Orphan() {
1371
- timer_.reset();
1372
- // Note that the initial ref is held by the StreamEventHandler, which
1373
- // will be destroyed when streaming_call_ is destroyed, which may not happen
1374
- // here, since there may be other refs held to streaming_call_ by internal
1375
- // callbacks.
1376
- streaming_call_.reset();
1377
- }
1378
-
1379
- void XdsClient::XdsChannel::LrsCall::MaybeScheduleNextReportLocked() {
1380
- // If there are no more registered stats to report, cancel the call.
1381
- auto it = xds_client()->xds_load_report_server_map_.find(
1382
- xds_channel()->server_.Key());
1383
- if (it == xds_client()->xds_load_report_server_map_.end() ||
1384
- it->second.load_report_map.empty()) {
1385
- it->second.xds_channel->StopLrsCallLocked();
1386
- return;
1442
+ void XdsClient::ResourceState::SetAcked(
1443
+ std::shared_ptr<const XdsResourceType::ResourceData> resource,
1444
+ std::string serialized_proto, std::string version, Timestamp update_time) {
1445
+ resource_ = std::move(resource);
1446
+ client_status_ = ClientResourceStatus::ACKED;
1447
+ serialized_proto_ = std::move(serialized_proto);
1448
+ update_time_ = update_time;
1449
+ version_ = std::move(version);
1450
+ failed_version_.clear();
1451
+ failed_status_ = absl::OkStatus();
1452
+ }
1453
+
1454
+ void XdsClient::ResourceState::SetNacked(const std::string& version,
1455
+ absl::string_view details,
1456
+ Timestamp update_time,
1457
+ bool drop_cached_resource) {
1458
+ if (drop_cached_resource) {
1459
+ resource_.reset();
1460
+ serialized_proto_.clear();
1461
+ }
1462
+ client_status_ = ClientResourceStatus::NACKED;
1463
+ failed_status_ =
1464
+ absl::InvalidArgumentError(absl::StrCat("invalid resource: ", details));
1465
+ failed_version_ = version;
1466
+ failed_update_time_ = update_time;
1467
+ }
1468
+
1469
+ void XdsClient::ResourceState::SetReceivedError(const std::string& version,
1470
+ absl::Status status,
1471
+ Timestamp update_time,
1472
+ bool drop_cached_resource) {
1473
+ if (drop_cached_resource) {
1474
+ resource_.reset();
1475
+ serialized_proto_.clear();
1476
+ }
1477
+ client_status_ = ClientResourceStatus::RECEIVED_ERROR;
1478
+ failed_version_ = version;
1479
+ failed_status_ = std::move(status);
1480
+ failed_update_time_ = update_time;
1481
+ }
1482
+
1483
+ void XdsClient::ResourceState::SetDoesNotExistOnLdsOrCdsDeletion(
1484
+ const std::string& version, Timestamp update_time,
1485
+ bool drop_cached_resource) {
1486
+ if (drop_cached_resource) {
1487
+ resource_.reset();
1488
+ serialized_proto_.clear();
1489
+ }
1490
+ client_status_ = ClientResourceStatus::DOES_NOT_EXIST;
1491
+ failed_status_ = absl::NotFoundError("does not exist");
1492
+ failed_version_ = version;
1493
+ failed_update_time_ = update_time;
1494
+ }
1495
+
1496
+ void XdsClient::ResourceState::SetDoesNotExistOnTimeout() {
1497
+ client_status_ = ClientResourceStatus::DOES_NOT_EXIST;
1498
+ failed_status_ = absl::NotFoundError("does not exist");
1499
+ failed_version_.clear();
1500
+ }
1501
+
1502
+ void XdsClient::ResourceState::SetTimeout(const std::string& details) {
1503
+ client_status_ = ClientResourceStatus::TIMEOUT;
1504
+ failed_status_ = absl::UnavailableError(details);
1505
+ failed_version_.clear();
1506
+ }
1507
+
1508
+ absl::string_view XdsClient::ResourceState::CacheStateString() const {
1509
+ switch (client_status_) {
1510
+ case ClientResourceStatus::REQUESTED:
1511
+ return "requested";
1512
+ case ClientResourceStatus::DOES_NOT_EXIST:
1513
+ return resource_ != nullptr ? "does_not_exist_but_cached"
1514
+ : "does_not_exist";
1515
+ case ClientResourceStatus::ACKED:
1516
+ return "acked";
1517
+ case ClientResourceStatus::NACKED:
1518
+ return resource_ != nullptr ? "nacked_but_cached" : "nacked";
1519
+ case ClientResourceStatus::RECEIVED_ERROR:
1520
+ return resource_ != nullptr ? "received_error_but_cached"
1521
+ : "received_error";
1522
+ case ClientResourceStatus::TIMEOUT:
1523
+ return "timeout";
1387
1524
  }
1388
- // Don't start if the previous send_message op hasn't completed yet.
1389
- // If this happens, we'll be called again from OnRequestSent().
1390
- if (send_message_pending_) return;
1391
- // Don't start if no LRS response has arrived.
1392
- if (!seen_response()) return;
1393
- // If there is no timer, create one.
1394
- // This happens on the initial response and whenever the interval changes.
1395
- if (timer_ == nullptr) {
1396
- timer_ = MakeOrphanable<Timer>(Ref(DEBUG_LOCATION, "LRS timer"));
1397
- }
1398
- // Schedule the next load report.
1399
- timer_->ScheduleNextReportLocked();
1525
+ Crash("unknown resource state");
1400
1526
  }
1401
1527
 
1402
1528
  namespace {
1403
1529
 
1404
- bool LoadReportCountersAreZero(const XdsApi::ClusterLoadReportMap& snapshot) {
1405
- for (const auto& p : snapshot) {
1406
- const XdsApi::ClusterLoadReport& cluster_snapshot = p.second;
1407
- if (!cluster_snapshot.dropped_requests.IsZero()) return false;
1408
- for (const auto& q : cluster_snapshot.locality_stats) {
1409
- const XdsClusterLocalityStats::Snapshot& locality_snapshot = q.second;
1410
- if (!locality_snapshot.IsZero()) return false;
1411
- }
1412
- }
1413
- return true;
1530
+ google_protobuf_Timestamp* EncodeTimestamp(Timestamp value, upb_Arena* arena) {
1531
+ google_protobuf_Timestamp* timestamp = google_protobuf_Timestamp_new(arena);
1532
+ gpr_timespec timespec = value.as_timespec(GPR_CLOCK_REALTIME);
1533
+ google_protobuf_Timestamp_set_seconds(timestamp, timespec.tv_sec);
1534
+ google_protobuf_Timestamp_set_nanos(timestamp, timespec.tv_nsec);
1535
+ return timestamp;
1414
1536
  }
1415
1537
 
1416
1538
  } // namespace
1417
1539
 
1418
- void XdsClient::XdsChannel::LrsCall::SendReportLocked() {
1419
- // Construct snapshot from all reported stats.
1420
- XdsApi::ClusterLoadReportMap snapshot =
1421
- xds_client()->BuildLoadReportSnapshotLocked(
1422
- xds_channel()->server_, send_all_clusters_, cluster_names_);
1423
- // Skip client load report if the counters were all zero in the last
1424
- // report and they are still zero in this one.
1425
- const bool old_val = last_report_counters_were_zero_;
1426
- last_report_counters_were_zero_ = LoadReportCountersAreZero(snapshot);
1427
- if (old_val && last_report_counters_were_zero_) {
1428
- MaybeScheduleNextReportLocked();
1429
- return;
1430
- }
1431
- // Send a request that contains the snapshot.
1432
- std::string serialized_payload =
1433
- xds_client()->api_.CreateLrsRequest(std::move(snapshot));
1434
- SendMessageLocked(std::move(serialized_payload));
1435
- }
1436
-
1437
- void XdsClient::XdsChannel::LrsCall::SendMessageLocked(std::string payload) {
1438
- send_message_pending_ = true;
1439
- streaming_call_->SendMessage(std::move(payload));
1440
- }
1441
-
1442
- void XdsClient::XdsChannel::LrsCall::OnRequestSent() {
1443
- MutexLock lock(&xds_client()->mu_);
1444
- send_message_pending_ = false;
1445
- if (IsCurrentCallOnChannel()) MaybeScheduleNextReportLocked();
1446
- }
1447
-
1448
- void XdsClient::XdsChannel::LrsCall::OnRecvMessage(absl::string_view payload) {
1449
- MutexLock lock(&xds_client()->mu_);
1450
- // If we're no longer the current call, ignore the result.
1451
- if (!IsCurrentCallOnChannel()) return;
1452
- // Start recv after any code branch
1453
- auto cleanup = absl::MakeCleanup(
1454
- [call = streaming_call_.get()]() { call->StartRecvMessage(); });
1455
- // Parse the response.
1456
- bool send_all_clusters = false;
1457
- std::set<std::string> new_cluster_names;
1458
- Duration new_load_reporting_interval;
1459
- absl::Status status = xds_client()->api_.ParseLrsResponse(
1460
- payload, &send_all_clusters, &new_cluster_names,
1461
- &new_load_reporting_interval);
1462
- if (!status.ok()) {
1463
- LOG(ERROR) << "[xds_client " << xds_client() << "] xds server "
1464
- << xds_channel()->server_.server_uri()
1465
- << ": LRS response parsing failed: " << status;
1466
- return;
1467
- }
1468
- seen_response_ = true;
1469
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1470
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
1471
- << xds_channel()->server_.server_uri()
1472
- << ": LRS response received, " << new_cluster_names.size()
1473
- << " cluster names, send_all_clusters=" << send_all_clusters
1474
- << ", load_report_interval="
1475
- << new_load_reporting_interval.millis() << "ms";
1476
- size_t i = 0;
1477
- for (const auto& name : new_cluster_names) {
1478
- LOG(INFO) << "[xds_client " << xds_client() << "] cluster_name " << i++
1479
- << ": " << name;
1480
- }
1481
- }
1482
- if (new_load_reporting_interval <
1483
- Duration::Milliseconds(GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS)) {
1484
- new_load_reporting_interval =
1485
- Duration::Milliseconds(GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
1486
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1487
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
1488
- << xds_channel()->server_.server_uri()
1489
- << ": increased load_report_interval to minimum value "
1490
- << GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS << "ms";
1491
- }
1540
+ void XdsClient::ResourceState::FillGenericXdsConfig(
1541
+ upb_StringView type_url, upb_StringView resource_name, upb_Arena* arena,
1542
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig* entry) const {
1543
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_type_url(entry,
1544
+ type_url);
1545
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_name(entry,
1546
+ resource_name);
1547
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_client_status(
1548
+ entry, client_status_);
1549
+ if (!serialized_proto_.empty()) {
1550
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_version_info(
1551
+ entry, StdStringToUpbString(version_));
1552
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_last_updated(
1553
+ entry, EncodeTimestamp(update_time_, arena));
1554
+ auto* any_field =
1555
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_xds_config(
1556
+ entry, arena);
1557
+ google_protobuf_Any_set_type_url(any_field, type_url);
1558
+ google_protobuf_Any_set_value(any_field,
1559
+ StdStringToUpbString(serialized_proto_));
1492
1560
  }
1493
- // Ignore identical update.
1494
- if (send_all_clusters == send_all_clusters_ &&
1495
- cluster_names_ == new_cluster_names &&
1496
- load_reporting_interval_ == new_load_reporting_interval) {
1497
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1498
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
1499
- << xds_channel()->server_.server_uri()
1500
- << ": incoming LRS response identical to current, ignoring.";
1561
+ if (!failed_status_.ok()) {
1562
+ auto* update_failure_state = envoy_admin_v3_UpdateFailureState_new(arena);
1563
+ envoy_admin_v3_UpdateFailureState_set_details(
1564
+ update_failure_state, StdStringToUpbString(failed_status_.message()));
1565
+ if (!failed_version_.empty()) {
1566
+ envoy_admin_v3_UpdateFailureState_set_version_info(
1567
+ update_failure_state, StdStringToUpbString(failed_version_));
1568
+ envoy_admin_v3_UpdateFailureState_set_last_update_attempt(
1569
+ update_failure_state, EncodeTimestamp(failed_update_time_, arena));
1501
1570
  }
1502
- return;
1503
- }
1504
- // If the interval has changed, we'll need to restart the timer below.
1505
- const bool restart_timer =
1506
- load_reporting_interval_ != new_load_reporting_interval;
1507
- // Record the new config.
1508
- send_all_clusters_ = send_all_clusters;
1509
- cluster_names_ = std::move(new_cluster_names);
1510
- load_reporting_interval_ = new_load_reporting_interval;
1511
- // Restart timer if needed.
1512
- if (restart_timer) {
1513
- timer_.reset();
1514
- MaybeScheduleNextReportLocked();
1515
- }
1516
- }
1517
-
1518
- void XdsClient::XdsChannel::LrsCall::OnStatusReceived(absl::Status status) {
1519
- MutexLock lock(&xds_client()->mu_);
1520
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1521
- LOG(INFO) << "[xds_client " << xds_client() << "] xds server "
1522
- << xds_channel()->server_.server_uri()
1523
- << ": LRS call status received (xds_channel=" << xds_channel()
1524
- << ", lrs_call=" << this
1525
- << ", streaming_call=" << streaming_call_.get()
1526
- << "): " << status;
1527
- }
1528
- // Ignore status from a stale call.
1529
- if (IsCurrentCallOnChannel()) {
1530
- // Try to restart the call.
1531
- retryable_call_->OnCallFinishedLocked();
1571
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_error_state(
1572
+ entry, update_failure_state);
1532
1573
  }
1533
1574
  }
1534
1575
 
1535
- bool XdsClient::XdsChannel::LrsCall::IsCurrentCallOnChannel() const {
1536
- // If the retryable LRS call is null (which only happens when the xds
1537
- // channel is shutting down), all the LRS calls are stale.
1538
- if (xds_channel()->lrs_call_ == nullptr) return false;
1539
- return this == xds_channel()->lrs_call_->call();
1540
- }
1541
-
1542
1576
  //
1543
1577
  // XdsClient
1544
1578
  //
@@ -1546,8 +1580,8 @@ bool XdsClient::XdsChannel::LrsCall::IsCurrentCallOnChannel() const {
1546
1580
  constexpr absl::string_view XdsClient::kOldStyleAuthority;
1547
1581
 
1548
1582
  XdsClient::XdsClient(
1549
- std::unique_ptr<XdsBootstrap> bootstrap,
1550
- OrphanablePtr<XdsTransportFactory> transport_factory,
1583
+ std::shared_ptr<XdsBootstrap> bootstrap,
1584
+ RefCountedPtr<XdsTransportFactory> transport_factory,
1551
1585
  std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine,
1552
1586
  std::unique_ptr<XdsMetricsReporter> metrics_reporter,
1553
1587
  std::string user_agent_name, std::string user_agent_version,
@@ -1555,17 +1589,16 @@ XdsClient::XdsClient(
1555
1589
  : DualRefCounted<XdsClient>(
1556
1590
  GRPC_TRACE_FLAG_ENABLED(xds_client_refcount) ? "XdsClient" : nullptr),
1557
1591
  bootstrap_(std::move(bootstrap)),
1592
+ user_agent_name_(std::move(user_agent_name)),
1593
+ user_agent_version_(std::move(user_agent_version)),
1558
1594
  transport_factory_(std::move(transport_factory)),
1559
1595
  request_timeout_(resource_request_timeout),
1560
1596
  xds_federation_enabled_(XdsFederationEnabled()),
1561
- api_(this, &xds_client_trace, bootstrap_->node(), &def_pool_,
1562
- std::move(user_agent_name), std::move(user_agent_version)),
1563
1597
  work_serializer_(engine),
1564
1598
  engine_(std::move(engine)),
1565
1599
  metrics_reporter_(std::move(metrics_reporter)) {
1566
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1567
- LOG(INFO) << "[xds_client " << this << "] creating xds client";
1568
- }
1600
+ GRPC_TRACE_LOG(xds_client, INFO)
1601
+ << "[xds_client " << this << "] creating xds client";
1569
1602
  CHECK(bootstrap_ != nullptr);
1570
1603
  if (bootstrap_->node() != nullptr) {
1571
1604
  GRPC_TRACE_LOG(xds_client, INFO)
@@ -1575,27 +1608,23 @@ XdsClient::XdsClient(
1575
1608
  }
1576
1609
 
1577
1610
  XdsClient::~XdsClient() {
1578
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1579
- LOG(INFO) << "[xds_client " << this << "] destroying xds client";
1580
- }
1611
+ GRPC_TRACE_LOG(xds_client, INFO)
1612
+ << "[xds_client " << this << "] destroying xds client";
1581
1613
  }
1582
1614
 
1583
1615
  void XdsClient::Orphaned() {
1584
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1585
- LOG(INFO) << "[xds_client " << this << "] shutting down xds client";
1586
- }
1616
+ GRPC_TRACE_LOG(xds_client, INFO)
1617
+ << "[xds_client " << this << "] shutting down xds client";
1587
1618
  MutexLock lock(&mu_);
1588
1619
  shutting_down_ = true;
1589
1620
  // Clear cache and any remaining watchers that may not have been cancelled.
1590
- authority_state_map_.clear();
1621
+ // Note: We move authority_state_map_ out of the way before clearing
1622
+ // it, because clearing the map will trigger calls to
1623
+ // MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(), which would try to
1624
+ // modify the map while we are iterating over it.
1625
+ auto authority_state_map = std::move(authority_state_map_);
1626
+ authority_state_map.clear();
1591
1627
  invalid_watchers_.clear();
1592
- // We may still be sending lingering queued load report data, so don't
1593
- // just clear the load reporting map, but we do want to clear the refs
1594
- // we're holding to the XdsChannel objects, to make sure that
1595
- // everything shuts down properly.
1596
- for (auto& p : xds_load_report_server_map_) {
1597
- p.second.xds_channel.reset(DEBUG_LOCATION, "XdsClient::Orphan()");
1598
- }
1599
1628
  }
1600
1629
 
1601
1630
  RefCountedPtr<XdsClient::XdsChannel> XdsClient::GetOrCreateXdsChannelLocked(
@@ -1613,10 +1642,11 @@ RefCountedPtr<XdsClient::XdsChannel> XdsClient::GetOrCreateXdsChannelLocked(
1613
1642
  }
1614
1643
 
1615
1644
  bool XdsClient::HasUncachedResources(const AuthorityState& authority_state) {
1616
- for (const auto& type_resource : authority_state.resource_map) {
1617
- for (const auto& key_state : type_resource.second) {
1618
- if (key_state.second.meta.client_status ==
1619
- XdsApi::ResourceMetadata::REQUESTED) {
1645
+ for (const auto& [_, resource_map] : authority_state.type_map) {
1646
+ for (const auto& [_, resource_state] : resource_map) {
1647
+ if (resource_state.HasWatchers() &&
1648
+ resource_state.client_status() ==
1649
+ ResourceState::ClientResourceStatus::REQUESTED) {
1620
1650
  return true;
1621
1651
  }
1622
1652
  }
@@ -1627,24 +1657,19 @@ bool XdsClient::HasUncachedResources(const AuthorityState& authority_state) {
1627
1657
  void XdsClient::WatchResource(const XdsResourceType* type,
1628
1658
  absl::string_view name,
1629
1659
  RefCountedPtr<ResourceWatcherInterface> watcher) {
1630
- ResourceWatcherInterface* w = watcher.get();
1631
1660
  // Lambda for handling failure cases.
1632
1661
  auto fail = [&](absl::Status status) mutable {
1633
1662
  {
1634
1663
  MutexLock lock(&mu_);
1635
1664
  MaybeRegisterResourceTypeLocked(type);
1636
- invalid_watchers_[w] = watcher;
1665
+ invalid_watchers_.insert(watcher);
1637
1666
  }
1638
- work_serializer_.Run(
1639
- [watcher = std::move(watcher), status = std::move(status)]()
1640
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1641
- watcher->OnError(status, ReadDelayHandle::NoWait());
1642
- },
1643
- DEBUG_LOCATION);
1667
+ NotifyWatchersOnResourceChanged(std::move(status), {watcher},
1668
+ ReadDelayHandle::NoWait());
1644
1669
  };
1645
1670
  auto resource_name = ParseXdsResourceName(name, type);
1646
1671
  if (!resource_name.ok()) {
1647
- fail(absl::UnavailableError(
1672
+ fail(absl::InvalidArgumentError(
1648
1673
  absl::StrCat("Unable to parse resource name ", name)));
1649
1674
  return;
1650
1675
  }
@@ -1654,7 +1679,7 @@ void XdsClient::WatchResource(const XdsResourceType* type,
1654
1679
  auto* authority =
1655
1680
  bootstrap_->LookupAuthority(std::string(resource_name->authority));
1656
1681
  if (authority == nullptr) {
1657
- fail(absl::UnavailableError(
1682
+ fail(absl::FailedPreconditionError(
1658
1683
  absl::StrCat("authority \"", resource_name->authority,
1659
1684
  "\" not present in bootstrap config")));
1660
1685
  return;
@@ -1662,108 +1687,67 @@ void XdsClient::WatchResource(const XdsResourceType* type,
1662
1687
  xds_servers = authority->servers();
1663
1688
  }
1664
1689
  if (xds_servers.empty()) xds_servers = bootstrap_->servers();
1665
- {
1666
- MutexLock lock(&mu_);
1667
- MaybeRegisterResourceTypeLocked(type);
1668
-
1669
- AuthorityState& authority_state =
1670
- authority_state_map_[resource_name->authority];
1671
- auto it_is_new = authority_state.resource_map[type].emplace(
1672
- resource_name->key, ResourceState());
1673
- bool first_watcher_for_resource = it_is_new.second;
1674
- ResourceState& resource_state = it_is_new.first->second;
1675
- resource_state.watchers[w] = watcher;
1676
- if (first_watcher_for_resource) {
1677
- // We try to add new channels in 2 cases:
1678
- // - This is the first resource for this authority (i.e., the list
1679
- // of channels is empty).
1680
- // - The last channel in the list is failing. That failure may not
1681
- // have previously triggered fallback if there were no uncached
1682
- // resources, but we've just added a new uncached resource,
1683
- // so we need to trigger fallback now.
1684
- //
1685
- // Note that when we add a channel, it might already be failing
1686
- // due to being used in a different authority. So we keep going
1687
- // until either we add one that isn't failing or we've added them all.
1688
- if (authority_state.xds_channels.empty() ||
1689
- !authority_state.xds_channels.back()->status().ok()) {
1690
- for (size_t i = authority_state.xds_channels.size();
1691
- i < xds_servers.size(); ++i) {
1692
- authority_state.xds_channels.emplace_back(
1693
- GetOrCreateXdsChannelLocked(*xds_servers[i], "start watch"));
1694
- if (authority_state.xds_channels.back()->status().ok()) {
1695
- break;
1696
- }
1697
- }
1698
- }
1699
- for (const auto& channel : authority_state.xds_channels) {
1700
- channel->SubscribeLocked(type, *resource_name);
1701
- }
1702
- } else {
1703
- // If we already have a cached value for the resource, notify the new
1704
- // watcher immediately.
1705
- if (resource_state.resource != nullptr) {
1706
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1707
- LOG(INFO) << "[xds_client " << this
1708
- << "] returning cached listener data for " << name;
1709
- }
1710
- work_serializer_.Schedule(
1711
- [watcher, value = resource_state.resource]()
1712
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1713
- watcher->OnGenericResourceChanged(value,
1714
- ReadDelayHandle::NoWait());
1715
- },
1716
- DEBUG_LOCATION);
1717
- } else if (resource_state.meta.client_status ==
1718
- XdsApi::ResourceMetadata::DOES_NOT_EXIST) {
1719
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1720
- LOG(INFO) << "[xds_client " << this
1721
- << "] reporting cached does-not-exist for " << name;
1722
- }
1723
- work_serializer_.Schedule(
1724
- [watcher]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1725
- watcher->OnResourceDoesNotExist(ReadDelayHandle::NoWait());
1726
- },
1727
- DEBUG_LOCATION);
1728
- } else if (resource_state.meta.client_status ==
1729
- XdsApi::ResourceMetadata::NACKED) {
1730
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1731
- LOG(INFO) << "[xds_client " << this
1732
- << "] reporting cached validation failure for " << name
1733
- << ": " << resource_state.meta.failed_details;
1734
- }
1735
- std::string details = resource_state.meta.failed_details;
1736
- const auto* node = bootstrap_->node();
1737
- if (node != nullptr) {
1738
- absl::StrAppend(&details, " (node ID:", bootstrap_->node()->id(),
1739
- ")");
1690
+ MutexLock lock(&mu_);
1691
+ MaybeRegisterResourceTypeLocked(type);
1692
+ AuthorityState& authority_state =
1693
+ authority_state_map_[resource_name->authority];
1694
+ auto [it, created_entry] = authority_state.type_map[type].emplace(
1695
+ resource_name->key, ResourceState());
1696
+ ResourceState& resource_state = it->second;
1697
+ resource_state.AddWatcher(watcher);
1698
+ if (created_entry) {
1699
+ // We try to add new channels in 2 cases:
1700
+ // - This is the first resource for this authority (i.e., the list
1701
+ // of channels is empty).
1702
+ // - The last channel in the list is failing. That failure may not
1703
+ // have previously triggered fallback if there were no uncached
1704
+ // resources, but we've just added a new uncached resource,
1705
+ // so we need to trigger fallback now.
1706
+ //
1707
+ // Note that when we add a channel, it might already be failing
1708
+ // due to being used in a different authority. So we keep going
1709
+ // until either we add one that isn't failing or we've added them all.
1710
+ if (authority_state.xds_channels.empty() ||
1711
+ !authority_state.xds_channels.back()->status().ok()) {
1712
+ for (size_t i = authority_state.xds_channels.size();
1713
+ i < xds_servers.size(); ++i) {
1714
+ authority_state.xds_channels.emplace_back(
1715
+ GetOrCreateXdsChannelLocked(*xds_servers[i], "start watch"));
1716
+ if (authority_state.xds_channels.back()->status().ok()) {
1717
+ break;
1740
1718
  }
1741
- work_serializer_.Schedule(
1742
- [watcher, details = std::move(details)]()
1743
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1744
- watcher->OnError(absl::UnavailableError(absl::StrCat(
1745
- "invalid resource: ", details)),
1746
- ReadDelayHandle::NoWait());
1747
- },
1748
- DEBUG_LOCATION);
1749
1719
  }
1750
1720
  }
1751
- absl::Status channel_status = authority_state.xds_channels.back()->status();
1752
- if (!channel_status.ok()) {
1753
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
1754
- LOG(INFO) << "[xds_client " << this
1755
- << "] returning cached channel error for " << name << ": "
1756
- << channel_status;
1757
- }
1758
- work_serializer_.Schedule(
1759
- [watcher = std::move(watcher), status = std::move(channel_status)]()
1760
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) mutable {
1761
- watcher->OnError(std::move(status), ReadDelayHandle::NoWait());
1762
- },
1763
- DEBUG_LOCATION);
1721
+ } else {
1722
+ // If we already have a cached value for the resource, notify the new
1723
+ // watcher immediately.
1724
+ if (resource_state.HasResource()) {
1725
+ GRPC_TRACE_LOG(xds_client, INFO)
1726
+ << "[xds_client " << this << "] returning cached data for " << name;
1727
+ NotifyWatchersOnResourceChanged(resource_state.resource(), {watcher},
1728
+ ReadDelayHandle::NoWait());
1764
1729
  }
1730
+ if (!resource_state.failed_status().ok()) {
1731
+ GRPC_TRACE_LOG(xds_client, INFO)
1732
+ << "[xds_client " << this << "] returning cached error for " << name
1733
+ << ": " << resource_state.failed_status();
1734
+ NotifyWatchersOnError(resource_state, ReadDelayHandle::NoWait(),
1735
+ {watcher});
1736
+ }
1737
+ }
1738
+ // Make sure all channels are subscribing to the resource.
1739
+ for (const auto& channel : authority_state.xds_channels) {
1740
+ channel->SubscribeLocked(type, *resource_name);
1741
+ }
1742
+ // If the channel is not connected, report an error to the watcher.
1743
+ absl::Status channel_status = authority_state.xds_channels.back()->status();
1744
+ if (!channel_status.ok()) {
1745
+ GRPC_TRACE_LOG(xds_client, INFO)
1746
+ << "[xds_client " << this << "] returning cached channel error for "
1747
+ << name << ": " << channel_status;
1748
+ NotifyWatchersOnError(resource_state, ReadDelayHandle::NoWait(), {watcher},
1749
+ std::move(channel_status));
1765
1750
  }
1766
- work_serializer_.DrainQueue();
1767
1751
  }
1768
1752
 
1769
1753
  void XdsClient::CancelResourceWatch(const XdsResourceType* type,
@@ -1781,34 +1765,63 @@ void XdsClient::CancelResourceWatch(const XdsResourceType* type,
1781
1765
  if (authority_it == authority_state_map_.end()) return;
1782
1766
  AuthorityState& authority_state = authority_it->second;
1783
1767
  // Find type map.
1784
- auto type_it = authority_state.resource_map.find(type);
1785
- if (type_it == authority_state.resource_map.end()) return;
1786
- auto& type_map = type_it->second;
1768
+ auto type_it = authority_state.type_map.find(type);
1769
+ if (type_it == authority_state.type_map.end()) return;
1770
+ auto& resource_map = type_it->second;
1787
1771
  // Find resource key.
1788
- auto resource_it = type_map.find(resource_name->key);
1789
- if (resource_it == type_map.end()) return;
1772
+ auto resource_it = resource_map.find(resource_name->key);
1773
+ if (resource_it == resource_map.end()) return;
1790
1774
  ResourceState& resource_state = resource_it->second;
1791
1775
  // Remove watcher.
1792
- resource_state.watchers.erase(watcher);
1793
- // Clean up empty map entries, if any.
1794
- if (resource_state.watchers.empty()) {
1795
- if (resource_state.ignored_deletion) {
1796
- LOG(INFO) << "[xds_client " << this
1797
- << "] unsubscribing from a resource for which we "
1798
- << "previously ignored a deletion: type " << type->type_url()
1799
- << " name " << name;
1800
- }
1776
+ resource_state.RemoveWatcher(watcher);
1777
+ // If this was the last watcher, clean up.
1778
+ if (!resource_state.HasWatchers()) {
1779
+ // Unsubscribe from this resource on all XdsChannels.
1801
1780
  for (const auto& xds_channel : authority_state.xds_channels) {
1802
1781
  xds_channel->UnsubscribeLocked(type, *resource_name,
1803
1782
  delay_unsubscription);
1804
1783
  }
1805
- type_map.erase(resource_it);
1806
- if (type_map.empty()) {
1807
- authority_state.resource_map.erase(type_it);
1808
- if (authority_state.resource_map.empty()) {
1809
- authority_state.xds_channels.clear();
1784
+ // Note: We wait to remove the cache entry until we actualle send
1785
+ // the unsubscription message on the ADS stream, so that if a watch is
1786
+ // stopped and then started again before we send the next request
1787
+ // for that resource type, we don't lose the cache entry without the
1788
+ // xDS server knowing it needs to re-send it.
1789
+ //
1790
+ // Note: Because the cache cleanup may have been triggered by the
1791
+ // unsubscription, it's no longer safe to access any of the
1792
+ // iterators that we have from above.
1793
+ }
1794
+ }
1795
+
1796
+ void XdsClient::MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(
1797
+ XdsChannel* xds_channel, const XdsResourceType* type) {
1798
+ for (auto authority_it = authority_state_map_.begin();
1799
+ authority_it != authority_state_map_.end();) {
1800
+ AuthorityState& authority_state = authority_it->second;
1801
+ if (authority_state.xds_channels.back() == xds_channel) {
1802
+ // Find type map.
1803
+ auto type_it = authority_state.type_map.find(type);
1804
+ if (type_it != authority_state.type_map.end()) {
1805
+ auto& resource_map = type_it->second;
1806
+ // Remove the cache entry for any resource without watchers.
1807
+ for (auto resource_it = resource_map.begin();
1808
+ resource_it != resource_map.end();) {
1809
+ ResourceState& resource_state = resource_it->second;
1810
+ if (!resource_state.HasWatchers()) {
1811
+ resource_map.erase(resource_it++);
1812
+ } else {
1813
+ ++resource_it;
1814
+ }
1815
+ }
1816
+ // Clean up empty entries in the map.
1817
+ if (resource_map.empty()) authority_state.type_map.erase(type_it);
1810
1818
  }
1811
1819
  }
1820
+ if (authority_state.type_map.empty()) {
1821
+ authority_state_map_.erase(authority_it++);
1822
+ } else {
1823
+ ++authority_it;
1824
+ }
1812
1825
  }
1813
1826
  }
1814
1827
 
@@ -1851,9 +1864,9 @@ absl::StatusOr<XdsClient::XdsResourceName> XdsClient::ParseXdsResourceName(
1851
1864
  }
1852
1865
  // Canonicalize order of query params.
1853
1866
  std::vector<URI::QueryParam> query_params;
1854
- for (const auto& p : uri->query_parameter_map()) {
1867
+ for (const auto& [key, value] : uri->query_parameter_map()) {
1855
1868
  query_params.emplace_back(
1856
- URI::QueryParam{std::string(p.first), std::string(p.second)});
1869
+ URI::QueryParam{std::string(key), std::string(value)});
1857
1870
  }
1858
1871
  return XdsResourceName{
1859
1872
  uri->authority(),
@@ -1874,314 +1887,67 @@ std::string XdsClient::ConstructFullXdsResourceName(
1874
1887
  return key.id;
1875
1888
  }
1876
1889
 
1877
- RefCountedPtr<XdsClusterDropStats> XdsClient::AddClusterDropStats(
1878
- const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
1879
- absl::string_view eds_service_name) {
1880
- auto key =
1881
- std::make_pair(std::string(cluster_name), std::string(eds_service_name));
1882
- RefCountedPtr<XdsClusterDropStats> cluster_drop_stats;
1883
- {
1884
- MutexLock lock(&mu_);
1885
- // We jump through some hoops here to make sure that the
1886
- // absl::string_views stored in the XdsClusterDropStats object point
1887
- // to the strings in the xds_load_report_server_map_ keys, so that
1888
- // they have the same lifetime.
1889
- auto server_it = xds_load_report_server_map_
1890
- .emplace(xds_server.Key(), LoadReportServer())
1891
- .first;
1892
- if (server_it->second.xds_channel == nullptr) {
1893
- server_it->second.xds_channel = GetOrCreateXdsChannelLocked(
1894
- xds_server, "load report map (drop stats)");
1895
- }
1896
- auto load_report_it = server_it->second.load_report_map
1897
- .emplace(std::move(key), LoadReportState())
1898
- .first;
1899
- LoadReportState& load_report_state = load_report_it->second;
1900
- if (load_report_state.drop_stats != nullptr) {
1901
- cluster_drop_stats = load_report_state.drop_stats->RefIfNonZero();
1902
- }
1903
- if (cluster_drop_stats == nullptr) {
1904
- if (load_report_state.drop_stats != nullptr) {
1905
- load_report_state.deleted_drop_stats +=
1906
- load_report_state.drop_stats->GetSnapshotAndReset();
1907
- }
1908
- cluster_drop_stats = MakeRefCounted<XdsClusterDropStats>(
1909
- Ref(DEBUG_LOCATION, "DropStats"), server_it->first /*xds_server*/,
1910
- load_report_it->first.first /*cluster_name*/,
1911
- load_report_it->first.second /*eds_service_name*/);
1912
- load_report_state.drop_stats = cluster_drop_stats.get();
1913
- }
1914
- server_it->second.xds_channel->MaybeStartLrsCall();
1915
- }
1916
- work_serializer_.DrainQueue();
1917
- return cluster_drop_stats;
1918
- }
1919
-
1920
- void XdsClient::RemoveClusterDropStats(
1921
- absl::string_view xds_server_key, absl::string_view cluster_name,
1922
- absl::string_view eds_service_name,
1923
- XdsClusterDropStats* cluster_drop_stats) {
1924
- MutexLock lock(&mu_);
1925
- auto server_it = xds_load_report_server_map_.find(xds_server_key);
1926
- if (server_it == xds_load_report_server_map_.end()) return;
1927
- auto load_report_it = server_it->second.load_report_map.find(
1928
- std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
1929
- if (load_report_it == server_it->second.load_report_map.end()) return;
1930
- LoadReportState& load_report_state = load_report_it->second;
1931
- if (load_report_state.drop_stats == cluster_drop_stats) {
1932
- // Record final snapshot in deleted_drop_stats, which will be
1933
- // added to the next load report.
1934
- load_report_state.deleted_drop_stats +=
1935
- load_report_state.drop_stats->GetSnapshotAndReset();
1936
- load_report_state.drop_stats = nullptr;
1937
- }
1938
- }
1939
-
1940
- RefCountedPtr<XdsClusterLocalityStats> XdsClient::AddClusterLocalityStats(
1941
- const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
1942
- absl::string_view eds_service_name,
1943
- RefCountedPtr<XdsLocalityName> locality) {
1944
- auto key =
1945
- std::make_pair(std::string(cluster_name), std::string(eds_service_name));
1946
- RefCountedPtr<XdsClusterLocalityStats> cluster_locality_stats;
1947
- {
1948
- MutexLock lock(&mu_);
1949
- // We jump through some hoops here to make sure that the
1950
- // absl::string_views stored in the XdsClusterDropStats object point
1951
- // to the strings in the xds_load_report_server_map_ keys, so that
1952
- // they have the same lifetime.
1953
- auto server_it = xds_load_report_server_map_
1954
- .emplace(xds_server.Key(), LoadReportServer())
1955
- .first;
1956
- if (server_it->second.xds_channel == nullptr) {
1957
- server_it->second.xds_channel = GetOrCreateXdsChannelLocked(
1958
- xds_server, "load report map (locality stats)");
1959
- }
1960
- auto load_report_it = server_it->second.load_report_map
1961
- .emplace(std::move(key), LoadReportState())
1962
- .first;
1963
- LoadReportState& load_report_state = load_report_it->second;
1964
- LoadReportState::LocalityState& locality_state =
1965
- load_report_state.locality_stats[locality];
1966
- if (locality_state.locality_stats != nullptr) {
1967
- cluster_locality_stats = locality_state.locality_stats->RefIfNonZero();
1968
- }
1969
- if (cluster_locality_stats == nullptr) {
1970
- if (locality_state.locality_stats != nullptr) {
1971
- locality_state.deleted_locality_stats +=
1972
- locality_state.locality_stats->GetSnapshotAndReset();
1973
- }
1974
- cluster_locality_stats = MakeRefCounted<XdsClusterLocalityStats>(
1975
- Ref(DEBUG_LOCATION, "LocalityStats"), server_it->first /*xds_server*/,
1976
- load_report_it->first.first /*cluster_name*/,
1977
- load_report_it->first.second /*eds_service_name*/,
1978
- std::move(locality));
1979
- locality_state.locality_stats = cluster_locality_stats.get();
1980
- }
1981
- server_it->second.xds_channel->MaybeStartLrsCall();
1982
- }
1983
- work_serializer_.DrainQueue();
1984
- return cluster_locality_stats;
1985
- }
1986
-
1987
- void XdsClient::RemoveClusterLocalityStats(
1988
- absl::string_view xds_server_key, absl::string_view cluster_name,
1989
- absl::string_view eds_service_name,
1990
- const RefCountedPtr<XdsLocalityName>& locality,
1991
- XdsClusterLocalityStats* cluster_locality_stats) {
1992
- MutexLock lock(&mu_);
1993
- auto server_it = xds_load_report_server_map_.find(xds_server_key);
1994
- if (server_it == xds_load_report_server_map_.end()) return;
1995
- auto load_report_it = server_it->second.load_report_map.find(
1996
- std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
1997
- if (load_report_it == server_it->second.load_report_map.end()) return;
1998
- LoadReportState& load_report_state = load_report_it->second;
1999
- auto locality_it = load_report_state.locality_stats.find(locality);
2000
- if (locality_it == load_report_state.locality_stats.end()) return;
2001
- LoadReportState::LocalityState& locality_state = locality_it->second;
2002
- if (locality_state.locality_stats == cluster_locality_stats) {
2003
- // Record final snapshot in deleted_locality_stats, which will be
2004
- // added to the next load report.
2005
- locality_state.deleted_locality_stats +=
2006
- locality_state.locality_stats->GetSnapshotAndReset();
2007
- locality_state.locality_stats = nullptr;
2008
- }
2009
- }
2010
-
2011
1890
  void XdsClient::ResetBackoff() {
2012
1891
  MutexLock lock(&mu_);
2013
- for (auto& p : xds_channel_map_) {
2014
- p.second->ResetBackoff();
1892
+ for (auto& [_, xds_channel] : xds_channel_map_) {
1893
+ xds_channel->ResetBackoff();
2015
1894
  }
2016
1895
  }
2017
1896
 
2018
- void XdsClient::NotifyWatchersOnErrorLocked(
2019
- const std::map<ResourceWatcherInterface*,
2020
- RefCountedPtr<ResourceWatcherInterface>>& watchers,
2021
- absl::Status status, RefCountedPtr<ReadDelayHandle> read_delay_handle) {
1897
+ absl::Status XdsClient::AppendNodeToStatus(const absl::Status& status) const {
2022
1898
  const auto* node = bootstrap_->node();
2023
- if (node != nullptr) {
2024
- status = absl::Status(
2025
- status.code(),
2026
- absl::StrCat(status.message(), " (node ID:", node->id(), ")"));
2027
- }
2028
- work_serializer_.Schedule(
2029
- [watchers, status = std::move(status),
1899
+ if (node == nullptr) return status;
1900
+ return absl::Status(
1901
+ status.code(), absl::StrCat(status.message(),
1902
+ " (node ID:", bootstrap_->node()->id(), ")"));
1903
+ }
1904
+
1905
+ void XdsClient::NotifyWatchersOnResourceChanged(
1906
+ absl::StatusOr<std::shared_ptr<const XdsResourceType::ResourceData>>
1907
+ resource,
1908
+ WatcherSet watchers, RefCountedPtr<ReadDelayHandle> read_delay_handle) {
1909
+ if (!resource.ok()) resource = AppendNodeToStatus(resource.status());
1910
+ work_serializer_.Run(
1911
+ [watchers = std::move(watchers), resource = std::move(resource),
2030
1912
  read_delay_handle = std::move(read_delay_handle)]()
2031
1913
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
2032
- for (const auto& p : watchers) {
2033
- p.first->OnError(status, read_delay_handle);
1914
+ for (const auto& watcher : watchers) {
1915
+ watcher->OnGenericResourceChanged(resource, read_delay_handle);
2034
1916
  }
2035
1917
  },
2036
1918
  DEBUG_LOCATION);
2037
1919
  }
2038
1920
 
2039
- void XdsClient::NotifyWatchersOnResourceDoesNotExist(
2040
- const std::map<ResourceWatcherInterface*,
2041
- RefCountedPtr<ResourceWatcherInterface>>& watchers,
1921
+ void XdsClient::NotifyWatchersOnAmbientError(
1922
+ absl::Status status, WatcherSet watchers,
2042
1923
  RefCountedPtr<ReadDelayHandle> read_delay_handle) {
2043
- work_serializer_.Schedule(
2044
- [watchers, read_delay_handle = std::move(read_delay_handle)]()
1924
+ if (!status.ok()) status = AppendNodeToStatus(status);
1925
+ work_serializer_.Run(
1926
+ [watchers = std::move(watchers), status = std::move(status),
1927
+ read_delay_handle = std::move(read_delay_handle)]()
2045
1928
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
2046
- for (const auto& p : watchers) {
2047
- p.first->OnResourceDoesNotExist(read_delay_handle);
1929
+ for (const auto& watcher : watchers) {
1930
+ watcher->OnAmbientError(status, read_delay_handle);
2048
1931
  }
2049
1932
  },
2050
1933
  DEBUG_LOCATION);
2051
1934
  }
2052
1935
 
2053
- XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
2054
- const XdsBootstrap::XdsServer& xds_server, bool send_all_clusters,
2055
- const std::set<std::string>& clusters) {
2056
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
2057
- LOG(INFO) << "[xds_client " << this << "] start building load report";
2058
- }
2059
- XdsApi::ClusterLoadReportMap snapshot_map;
2060
- auto server_it = xds_load_report_server_map_.find(xds_server.Key());
2061
- if (server_it == xds_load_report_server_map_.end()) return snapshot_map;
2062
- auto& load_report_map = server_it->second.load_report_map;
2063
- for (auto load_report_it = load_report_map.begin();
2064
- load_report_it != load_report_map.end();) {
2065
- // Cluster key is cluster and EDS service name.
2066
- const auto& cluster_key = load_report_it->first;
2067
- LoadReportState& load_report = load_report_it->second;
2068
- // If the CDS response for a cluster indicates to use LRS but the
2069
- // LRS server does not say that it wants reports for this cluster,
2070
- // then we'll have stats objects here whose data we're not going to
2071
- // include in the load report. However, we still need to clear out
2072
- // the data from the stats objects, so that if the LRS server starts
2073
- // asking for the data in the future, we don't incorrectly include
2074
- // data from previous reporting intervals in that future report.
2075
- const bool record_stats =
2076
- send_all_clusters || clusters.find(cluster_key.first) != clusters.end();
2077
- XdsApi::ClusterLoadReport snapshot;
2078
- // Aggregate drop stats.
2079
- snapshot.dropped_requests = std::move(load_report.deleted_drop_stats);
2080
- if (load_report.drop_stats != nullptr) {
2081
- snapshot.dropped_requests +=
2082
- load_report.drop_stats->GetSnapshotAndReset();
2083
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
2084
- LOG(INFO) << "[xds_client " << this << "] cluster=" << cluster_key.first
2085
- << " eds_service_name=" << cluster_key.second
2086
- << " drop_stats=" << load_report.drop_stats;
2087
- }
2088
- }
2089
- // Aggregate locality stats.
2090
- for (auto it = load_report.locality_stats.begin();
2091
- it != load_report.locality_stats.end();) {
2092
- const RefCountedPtr<XdsLocalityName>& locality_name = it->first;
2093
- auto& locality_state = it->second;
2094
- XdsClusterLocalityStats::Snapshot& locality_snapshot =
2095
- snapshot.locality_stats[locality_name];
2096
- locality_snapshot = std::move(locality_state.deleted_locality_stats);
2097
- if (locality_state.locality_stats != nullptr) {
2098
- locality_snapshot +=
2099
- locality_state.locality_stats->GetSnapshotAndReset();
2100
- if (GRPC_TRACE_FLAG_ENABLED(xds_client)) {
2101
- LOG(INFO) << "[xds_client " << this
2102
- << "] cluster=" << cluster_key.first.c_str()
2103
- << " eds_service_name=" << cluster_key.second.c_str()
2104
- << " locality="
2105
- << locality_name->human_readable_string().c_str()
2106
- << " locality_stats=" << locality_state.locality_stats;
2107
- }
2108
- }
2109
- // If the only thing left in this entry was final snapshots from
2110
- // deleted locality stats objects, remove the entry.
2111
- if (locality_state.locality_stats == nullptr) {
2112
- it = load_report.locality_stats.erase(it);
2113
- } else {
2114
- ++it;
2115
- }
2116
- }
2117
- // Compute load report interval.
2118
- const Timestamp now = Timestamp::Now();
2119
- snapshot.load_report_interval = now - load_report.last_report_time;
2120
- load_report.last_report_time = now;
2121
- // Record snapshot.
2122
- if (record_stats) {
2123
- snapshot_map[cluster_key] = std::move(snapshot);
2124
- }
2125
- // If the only thing left in this entry was final snapshots from
2126
- // deleted stats objects, remove the entry.
2127
- if (load_report.locality_stats.empty() &&
2128
- load_report.drop_stats == nullptr) {
2129
- load_report_it = load_report_map.erase(load_report_it);
2130
- } else {
2131
- ++load_report_it;
2132
- }
1936
+ void XdsClient::NotifyWatchersOnError(
1937
+ const ResourceState& resource_state,
1938
+ RefCountedPtr<ReadDelayHandle> read_delay_handle, WatcherSet watchers,
1939
+ absl::Status status) {
1940
+ if (watchers.empty()) watchers = resource_state.watchers();
1941
+ if (status.ok()) status = resource_state.failed_status();
1942
+ if (!resource_state.HasResource()) {
1943
+ NotifyWatchersOnResourceChanged(std::move(status), std::move(watchers),
1944
+ std::move(read_delay_handle));
1945
+ } else {
1946
+ NotifyWatchersOnAmbientError(std::move(status), std::move(watchers),
1947
+ std::move(read_delay_handle));
2133
1948
  }
2134
- return snapshot_map;
2135
1949
  }
2136
1950
 
2137
- namespace {
2138
-
2139
- google_protobuf_Timestamp* EncodeTimestamp(Timestamp value, upb_Arena* arena) {
2140
- google_protobuf_Timestamp* timestamp = google_protobuf_Timestamp_new(arena);
2141
- gpr_timespec timespec = value.as_timespec(GPR_CLOCK_REALTIME);
2142
- google_protobuf_Timestamp_set_seconds(timestamp, timespec.tv_sec);
2143
- google_protobuf_Timestamp_set_nanos(timestamp, timespec.tv_nsec);
2144
- return timestamp;
2145
- }
2146
-
2147
- void FillGenericXdsConfig(
2148
- const XdsApi::ResourceMetadata& metadata, upb_StringView type_url,
2149
- upb_StringView resource_name, upb_Arena* arena,
2150
- envoy_service_status_v3_ClientConfig_GenericXdsConfig* entry) {
2151
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_type_url(entry,
2152
- type_url);
2153
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_name(entry,
2154
- resource_name);
2155
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_client_status(
2156
- entry, metadata.client_status);
2157
- if (!metadata.serialized_proto.empty()) {
2158
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_version_info(
2159
- entry, StdStringToUpbString(metadata.version));
2160
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_last_updated(
2161
- entry, EncodeTimestamp(metadata.update_time, arena));
2162
- auto* any_field =
2163
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_xds_config(
2164
- entry, arena);
2165
- google_protobuf_Any_set_type_url(any_field, type_url);
2166
- google_protobuf_Any_set_value(
2167
- any_field, StdStringToUpbString(metadata.serialized_proto));
2168
- }
2169
- if (metadata.client_status == XdsApi::ResourceMetadata::NACKED) {
2170
- auto* update_failure_state = envoy_admin_v3_UpdateFailureState_new(arena);
2171
- envoy_admin_v3_UpdateFailureState_set_details(
2172
- update_failure_state, StdStringToUpbString(metadata.failed_details));
2173
- envoy_admin_v3_UpdateFailureState_set_version_info(
2174
- update_failure_state, StdStringToUpbString(metadata.failed_version));
2175
- envoy_admin_v3_UpdateFailureState_set_last_update_attempt(
2176
- update_failure_state,
2177
- EncodeTimestamp(metadata.failed_update_time, arena));
2178
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_error_state(
2179
- entry, update_failure_state);
2180
- }
2181
- }
2182
-
2183
- } // namespace
2184
-
2185
1951
  void XdsClient::DumpClientConfig(
2186
1952
  std::set<std::string>* string_pool, upb_Arena* arena,
2187
1953
  envoy_service_status_v3_ClientConfig* client_config) {
@@ -2189,70 +1955,51 @@ void XdsClient::DumpClientConfig(
2189
1955
  // Fill-in the node information
2190
1956
  auto* node =
2191
1957
  envoy_service_status_v3_ClientConfig_mutable_node(client_config, arena);
2192
- api_.PopulateNode(node, arena);
1958
+ PopulateXdsNode(bootstrap_->node(), user_agent_name_, user_agent_version_,
1959
+ node, arena);
2193
1960
  // Dump each resource.
2194
- for (const auto& a : authority_state_map_) { // authority
2195
- const std::string& authority = a.first;
2196
- for (const auto& t : a.second.resource_map) { // type
2197
- const XdsResourceType* type = t.first;
1961
+ for (const auto& [authority, authority_state] : authority_state_map_) {
1962
+ for (const auto& [type, resource_map] : authority_state.type_map) {
2198
1963
  auto it =
2199
1964
  string_pool
2200
1965
  ->emplace(absl::StrCat("type.googleapis.com/", type->type_url()))
2201
1966
  .first;
2202
1967
  upb_StringView type_url = StdStringToUpbString(*it);
2203
- for (const auto& r : t.second) { // resource id
1968
+ for (const auto& [resource_key, resource_state] : resource_map) {
1969
+ if (!resource_state.HasWatchers()) continue;
2204
1970
  auto it2 = string_pool
2205
1971
  ->emplace(ConstructFullXdsResourceName(
2206
- authority, type->type_url(), r.first))
1972
+ authority, type->type_url(), resource_key))
2207
1973
  .first;
2208
1974
  upb_StringView resource_name = StdStringToUpbString(*it2);
2209
1975
  envoy_service_status_v3_ClientConfig_GenericXdsConfig* entry =
2210
1976
  envoy_service_status_v3_ClientConfig_add_generic_xds_configs(
2211
1977
  client_config, arena);
2212
- FillGenericXdsConfig(r.second.meta, type_url, resource_name, arena,
2213
- entry);
1978
+ resource_state.FillGenericXdsConfig(type_url, resource_name, arena,
1979
+ entry);
2214
1980
  }
2215
1981
  }
2216
1982
  }
2217
1983
  }
2218
1984
 
2219
- namespace {
2220
-
2221
- absl::string_view CacheStateForEntry(const XdsApi::ResourceMetadata& metadata,
2222
- bool resource_cached) {
2223
- switch (metadata.client_status) {
2224
- case XdsApi::ResourceMetadata::REQUESTED:
2225
- return "requested";
2226
- case XdsApi::ResourceMetadata::DOES_NOT_EXIST:
2227
- return "does_not_exist";
2228
- case XdsApi::ResourceMetadata::ACKED:
2229
- return "acked";
2230
- case XdsApi::ResourceMetadata::NACKED:
2231
- return resource_cached ? "nacked_but_cached" : "nacked";
2232
- }
2233
- Crash("unknown resource state");
2234
- }
2235
-
2236
- } // namespace
2237
-
2238
1985
  void XdsClient::ReportResourceCounts(
2239
1986
  absl::FunctionRef<void(const ResourceCountLabels&, uint64_t)> func) {
2240
1987
  ResourceCountLabels labels;
2241
- for (const auto& a : authority_state_map_) { // authority
2242
- labels.xds_authority = a.first;
2243
- for (const auto& t : a.second.resource_map) { // type
2244
- labels.resource_type = t.first->type_url();
1988
+ for (const auto& [authority, authority_state] : authority_state_map_) {
1989
+ labels.xds_authority = authority;
1990
+ for (const auto& [type, resource_map] : authority_state.type_map) {
1991
+ labels.resource_type = type->type_url();
2245
1992
  // Count the number of entries in each state.
2246
1993
  std::map<absl::string_view, uint64_t> counts;
2247
- for (const auto& r : t.second) { // resource id
2248
- absl::string_view cache_state =
2249
- CacheStateForEntry(r.second.meta, r.second.resource != nullptr);
2250
- ++counts[cache_state];
1994
+ for (const auto& [_, resource_state] : resource_map) {
1995
+ if (resource_state.HasWatchers()) {
1996
+ ++counts[resource_state.CacheStateString()];
1997
+ }
2251
1998
  }
2252
1999
  // Report the count for each state.
2253
- for (const auto& c : counts) {
2254
- labels.cache_state = c.first;
2255
- func(labels, c.second);
2000
+ for (const auto& [state, count] : counts) {
2001
+ labels.cache_state = state;
2002
+ func(labels, count);
2256
2003
  }
2257
2004
  }
2258
2005
  }
@@ -2260,8 +2007,8 @@ void XdsClient::ReportResourceCounts(
2260
2007
 
2261
2008
  void XdsClient::ReportServerConnections(
2262
2009
  absl::FunctionRef<void(absl::string_view, bool)> func) {
2263
- for (const auto& p : xds_channel_map_) {
2264
- func(p.second->server_uri(), p.second->status().ok());
2010
+ for (const auto& [_, xds_channel] : xds_channel_map_) {
2011
+ func(xds_channel->server_uri(), xds_channel->status().ok());
2265
2012
  }
2266
2013
  }
2267
2014