grpc 1.81.1 → 1.85.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 (1993) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +70 -47
  3. data/etc/roots.pem +9008 -3936
  4. data/include/grpc/credentials.h +10 -0
  5. data/include/grpc/event_engine/memory_allocator.h +1 -0
  6. data/include/grpc/grpc.h +9 -7
  7. data/include/grpc/grpc_audit_logging.h +2 -2
  8. data/include/grpc/grpc_security_constants.h +6 -0
  9. data/include/grpc/impl/channel_arg_names.h +39 -1
  10. data/src/core/call/call_filters.h +35 -17
  11. data/src/core/call/call_spine.h +4 -4
  12. data/src/core/call/client_call.cc +22 -10
  13. data/src/core/call/client_call.h +4 -0
  14. data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
  15. data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
  16. data/src/core/call/filter_fusion.h +15 -15
  17. data/src/core/call/interception_chain.cc +2 -0
  18. data/src/core/call/interception_chain.h +23 -13
  19. data/src/core/call/metadata.cc +7 -4
  20. data/src/core/call/metadata.h +1 -1
  21. data/src/core/call/metadata_batch.cc +2 -1
  22. data/src/core/call/metadata_batch.h +74 -38
  23. data/src/core/call/parsed_metadata.h +10 -5
  24. data/src/core/call/request_buffer.cc +6 -6
  25. data/src/core/call/request_buffer.h +1 -1
  26. data/src/core/call/server_call.cc +47 -18
  27. data/src/core/call/server_call.h +18 -5
  28. data/src/core/call/status_util.cc +0 -4
  29. data/src/core/call/status_util.h +0 -3
  30. data/src/core/channelz/channel_trace.cc +8 -6
  31. data/src/core/channelz/channel_trace.h +1 -1
  32. data/src/core/channelz/channelz.cc +9 -9
  33. data/src/core/channelz/channelz.h +12 -12
  34. data/src/core/channelz/channelz_registry.cc +10 -10
  35. data/src/core/channelz/text_encode.cc +9 -4
  36. data/src/core/channelz/v2tov1/convert.cc +2 -2
  37. data/src/core/channelz/ztrace_collector.h +5 -5
  38. data/src/core/client_channel/backup_poller.cc +3 -19
  39. data/src/core/client_channel/client_channel.cc +33 -65
  40. data/src/core/client_channel/client_channel.h +5 -3
  41. data/src/core/client_channel/client_channel_filter.cc +55 -99
  42. data/src/core/client_channel/client_channel_filter.h +4 -4
  43. data/src/core/client_channel/client_channel_plugin.cc +1 -1
  44. data/src/core/client_channel/client_channel_service_config.cc +4 -28
  45. data/src/core/client_channel/config_selector.h +2 -7
  46. data/src/core/client_channel/direct_channel.cc +12 -2
  47. data/src/core/client_channel/direct_channel.h +5 -3
  48. data/src/core/client_channel/dynamic_filters.cc +4 -7
  49. data/src/core/client_channel/dynamic_filters.h +1 -3
  50. data/src/core/client_channel/global_subchannel_pool.cc +4 -4
  51. data/src/core/client_channel/load_balanced_call_destination.cc +5 -3
  52. data/src/core/client_channel/retry_filter.cc +2 -25
  53. data/src/core/client_channel/retry_filter.h +3 -7
  54. data/src/core/client_channel/retry_filter_legacy_call_data.cc +6 -13
  55. data/src/core/client_channel/retry_filter_legacy_call_data.h +2 -2
  56. data/src/core/client_channel/retry_interceptor.cc +7 -35
  57. data/src/core/client_channel/retry_interceptor.h +11 -14
  58. data/src/core/client_channel/retry_service_config.cc +0 -2
  59. data/src/core/client_channel/retry_service_config.h +0 -2
  60. data/src/core/client_channel/retry_throttle.cc +19 -7
  61. data/src/core/client_channel/retry_throttle.h +24 -7
  62. data/src/core/client_channel/subchannel.cc +335 -1082
  63. data/src/core/client_channel/subchannel.h +44 -329
  64. data/src/core/client_channel/subchannel_metrics.cc +48 -0
  65. data/src/core/client_channel/subchannel_metrics.h +60 -0
  66. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  67. data/src/core/{resolver/dns/dns_resolver_plugin.h → config/experiment_env_var.cc} +12 -9
  68. data/src/core/config/experiment_env_var.h +26 -0
  69. data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
  70. data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
  71. data/src/core/credentials/call/external/external_account_credentials.cc +129 -16
  72. data/src/core/credentials/call/external/external_account_credentials.h +6 -1
  73. data/src/core/credentials/call/external/file_external_account_credentials.cc +1 -1
  74. data/src/core/credentials/call/external/url_external_account_credentials.cc +2 -3
  75. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +8 -24
  76. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +3 -6
  77. data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.cc +525 -0
  78. data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.h +138 -0
  79. data/src/core/credentials/call/json_util.h +1 -0
  80. data/src/core/credentials/call/jwt/json_token.cc +10 -2
  81. data/src/core/credentials/call/jwt/jwt_credentials.cc +11 -1
  82. data/src/core/credentials/call/jwt/jwt_credentials.h +3 -0
  83. data/src/core/credentials/call/jwt/jwt_verifier.cc +15 -1
  84. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +1 -1
  85. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +78 -62
  86. data/src/core/credentials/call/oauth2/oauth2_credentials.h +2 -6
  87. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +411 -0
  88. data/src/core/credentials/call/regional_access_boundary_fetcher.h +158 -0
  89. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +57 -36
  90. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +28 -9
  91. data/src/core/credentials/transport/google_default/google_default_credentials.cc +6 -7
  92. data/src/core/credentials/transport/insecure/insecure_security_connector.h +1 -1
  93. data/src/core/credentials/transport/local/local_security_connector.cc +1 -1
  94. data/src/core/credentials/transport/ssl/ssl_credentials.cc +59 -72
  95. data/src/core/credentials/transport/ssl/ssl_credentials.h +9 -8
  96. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +26 -8
  97. data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -4
  98. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +38 -27
  99. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +10 -7
  100. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +51 -62
  101. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -4
  102. data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.cc +172 -0
  103. data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.h +129 -0
  104. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  105. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +5 -5
  106. data/src/core/credentials/transport/tls/load_system_roots.h +2 -6
  107. data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +5 -6
  108. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +23 -18
  109. data/src/core/credentials/transport/tls/load_system_roots_supported.h +3 -2
  110. data/src/core/credentials/transport/tls/load_system_roots_windows.cc +5 -8
  111. data/src/core/credentials/transport/tls/spiffe_utils.cc +1 -1
  112. data/src/core/credentials/transport/tls/ssl_utils.cc +49 -28
  113. data/src/core/credentials/transport/tls/ssl_utils.h +12 -49
  114. data/src/core/credentials/transport/tls/tls_security_connector.cc +71 -44
  115. data/src/core/credentials/transport/tls/tls_security_connector.h +37 -16
  116. data/src/core/credentials/transport/tls/tls_utils.h +9 -0
  117. data/src/core/credentials/transport/xds/xds_credentials.cc +4 -12
  118. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +6 -0
  119. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +16 -12
  120. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +29 -67
  121. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -8
  122. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +26 -60
  123. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +24 -19
  124. data/src/core/ext/filters/http/http_filters_plugin.cc +20 -9
  125. data/src/core/ext/filters/http/message_compress/compression_filter.cc +40 -32
  126. data/src/core/ext/filters/http/message_compress/compression_filter.h +0 -1
  127. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -81
  128. data/src/core/ext/filters/message_size/message_size_filter.h +1 -50
  129. data/src/core/ext/filters/rbac/rbac_filter.cc +43 -21
  130. data/src/core/ext/filters/rbac/rbac_filter.h +22 -4
  131. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +4 -3
  132. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +13 -56
  133. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +0 -14
  134. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  135. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +218 -93
  136. data/src/core/ext/transport/chttp2/server/chttp2_server.h +15 -12
  137. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +177 -95
  138. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  139. data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -3
  140. data/src/core/ext/transport/chttp2/transport/flow_control.h +92 -10
  141. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +2 -4
  142. data/src/core/ext/transport/chttp2/transport/frame.cc +120 -13
  143. data/src/core/ext/transport/chttp2/transport/frame.h +68 -10
  144. data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -2
  145. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +55 -23
  146. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -0
  147. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -1
  148. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +13 -7
  149. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -1
  150. data/src/core/ext/transport/chttp2/transport/frame_security.cc +10 -1
  151. data/src/core/ext/transport/chttp2/transport/frame_security.h +2 -1
  152. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
  153. data/src/core/ext/transport/chttp2/transport/goaway.cc +11 -1
  154. data/src/core/ext/transport/chttp2/transport/goaway.h +24 -1
  155. data/src/core/ext/transport/chttp2/transport/header_assembler.h +54 -22
  156. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +53 -5
  157. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +22 -0
  158. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +20 -0
  159. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +51 -5
  160. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
  161. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +361 -550
  162. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +71 -50
  163. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +2294 -0
  164. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +800 -0
  165. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  166. data/src/core/ext/transport/chttp2/transport/http2_settings.h +49 -15
  167. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +0 -2
  168. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +75 -28
  169. data/src/core/ext/transport/chttp2/transport/http2_status.h +38 -37
  170. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +207 -22
  171. data/src/core/ext/transport/chttp2/transport/http2_transport.h +337 -53
  172. data/src/core/ext/transport/chttp2/transport/internal.h +25 -1
  173. data/src/core/ext/transport/chttp2/transport/message_assembler.h +1 -2
  174. data/src/core/ext/transport/chttp2/transport/parsing.cc +97 -29
  175. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +4 -3
  176. data/src/core/ext/transport/chttp2/transport/ping_promise.h +25 -5
  177. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +7 -14
  178. data/src/core/ext/transport/chttp2/transport/read_context.h +614 -0
  179. data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
  180. data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
  181. data/src/core/ext/transport/chttp2/transport/security_frame.h +20 -10
  182. data/src/core/ext/transport/chttp2/transport/stream.h +347 -155
  183. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +100 -74
  184. data/src/core/ext/transport/chttp2/transport/write_cycle.h +32 -4
  185. data/src/core/ext/transport/chttp2/transport/writing.cc +0 -3
  186. data/src/core/ext/transport/inproc/inproc_transport.cc +6 -10
  187. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +20 -19
  188. data/src/core/ext/upb-gen/cel/expr/checked.upb.h +621 -432
  189. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +264 -166
  190. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h +0 -13
  191. data/src/core/ext/upb-gen/cel/expr/syntax.upb.h +708 -497
  192. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +294 -176
  193. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h +0 -15
  194. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +262 -181
  195. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +84 -58
  196. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +0 -5
  197. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +254 -190
  198. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +107 -53
  199. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +0 -4
  200. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +271 -190
  201. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +88 -64
  202. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +0 -5
  203. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +1035 -730
  204. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +384 -260
  205. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +0 -19
  206. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +87 -56
  207. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +26 -16
  208. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +0 -2
  209. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +105 -71
  210. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +30 -22
  211. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +0 -2
  212. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +31 -29
  213. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +19 -7
  214. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +0 -1
  215. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +25 -23
  216. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +15 -7
  217. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +0 -1
  218. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +25 -23
  219. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +15 -7
  220. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +0 -1
  221. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +201 -165
  222. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +79 -31
  223. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +0 -2
  224. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +29 -26
  225. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +17 -11
  226. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +0 -1
  227. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +46 -29
  228. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +37 -19
  229. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +4 -4
  230. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +34 -27
  231. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +34 -13
  232. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +1 -2
  233. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +617 -452
  234. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +221 -163
  235. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +0 -16
  236. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +1339 -970
  237. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +484 -324
  238. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +0 -23
  239. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +181 -135
  240. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +59 -43
  241. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +0 -3
  242. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +1353 -1028
  243. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +535 -361
  244. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +0 -25
  245. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +37 -33
  246. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +19 -13
  247. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +0 -1
  248. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +234 -196
  249. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +77 -57
  250. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +0 -1
  251. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +695 -502
  252. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +246 -186
  253. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +0 -15
  254. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h +140 -116
  255. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +53 -43
  256. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h +0 -3
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +363 -269
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +131 -89
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +0 -8
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +35 -31
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +15 -13
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +0 -1
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +1073 -769
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +515 -293
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +0 -30
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h +25 -23
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +15 -7
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h +0 -1
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +375 -267
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +142 -86
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +0 -7
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +32 -27
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +13 -11
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +0 -1
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +29 -26
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +17 -11
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +0 -1
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +87 -56
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +26 -16
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +0 -2
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +634 -468
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +255 -161
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +0 -14
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +672 -474
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +228 -130
  286. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +0 -9
  287. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +56 -40
  288. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +15 -13
  289. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +0 -1
  290. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +34 -29
  291. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +19 -11
  292. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +0 -1
  293. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +811 -635
  294. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +347 -221
  295. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +0 -16
  296. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +174 -118
  297. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +62 -38
  298. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +0 -4
  299. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +78 -57
  300. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +28 -18
  301. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +0 -2
  302. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +37 -33
  303. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +22 -14
  304. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +0 -1
  305. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +159 -119
  306. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +47 -35
  307. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +0 -5
  308. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +101 -76
  309. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +41 -23
  310. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +0 -2
  311. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +35 -31
  312. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +15 -13
  313. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +0 -1
  314. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +189 -127
  315. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +79 -49
  316. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +0 -4
  317. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +378 -283
  318. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +156 -98
  319. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +0 -8
  320. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +354 -255
  321. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +125 -69
  322. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +0 -6
  323. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +27 -24
  324. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +13 -11
  325. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +0 -1
  326. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +611 -451
  327. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +159 -119
  328. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +0 -11
  329. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +468 -321
  330. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +157 -99
  331. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +0 -6
  332. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +146 -119
  333. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +55 -35
  334. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +0 -1
  335. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +61 -51
  336. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +16 -16
  337. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +0 -2
  338. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +43 -39
  339. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +25 -13
  340. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +0 -1
  341. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +341 -247
  342. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +130 -84
  343. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +0 -8
  344. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +452 -313
  345. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +144 -100
  346. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +0 -10
  347. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +666 -493
  348. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +251 -181
  349. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +0 -12
  350. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +327 -197
  351. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +92 -48
  352. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +0 -3
  353. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +3583 -2532
  354. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +1340 -816
  355. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +0 -60
  356. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +111 -82
  357. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +48 -28
  358. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +0 -3
  359. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +548 -410
  360. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +214 -148
  361. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +0 -12
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +59 -50
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +30 -20
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +0 -2
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +29 -26
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +17 -11
  367. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +0 -1
  368. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +60 -49
  369. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +28 -20
  370. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +0 -2
  371. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +50 -36
  372. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +19 -11
  373. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +0 -1
  374. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +82 -63
  375. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +27 -19
  376. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +0 -1
  377. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +27 -24
  378. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +13 -11
  379. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +0 -1
  380. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +70 -58
  381. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +32 -22
  382. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +0 -2
  383. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +2 -5
  384. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +1 -1
  385. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +73 -62
  386. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +39 -25
  387. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +0 -2
  388. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +49 -45
  389. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +33 -13
  390. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +0 -1
  391. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +771 -588
  392. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +383 -185
  393. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +0 -16
  394. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +66 -47
  395. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +31 -17
  396. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +0 -2
  397. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb.h +69 -58
  398. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.c +27 -23
  399. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.h +0 -2
  400. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +151 -119
  401. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +45 -39
  402. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +0 -5
  403. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb.h +19 -17
  404. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.c +1 -3
  405. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.h +0 -1
  406. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb.h +144 -109
  407. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.c +46 -38
  408. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.h +0 -4
  409. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb.h +1912 -0
  410. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.c +300 -0
  411. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.h +37 -0
  412. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb.h +187 -0
  413. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.c +64 -0
  414. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.h +31 -0
  415. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +184 -139
  416. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +65 -35
  417. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +0 -3
  418. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +129 -106
  419. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +69 -41
  420. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +0 -4
  421. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +83 -71
  422. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +40 -26
  423. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +0 -2
  424. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +148 -101
  425. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +45 -27
  426. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +0 -2
  427. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +62 -51
  428. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +35 -21
  429. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +0 -2
  430. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1362 -1024
  431. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +508 -336
  432. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +0 -22
  433. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h +21 -19
  434. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +13 -7
  435. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h +0 -1
  436. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h +35 -31
  437. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c +15 -13
  438. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h +0 -1
  439. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h +27 -24
  440. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c +13 -11
  441. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h +0 -1
  442. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +27 -24
  443. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +13 -11
  444. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +0 -1
  445. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +94 -74
  446. 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 +35 -23
  447. 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 +0 -1
  448. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +231 -179
  449. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +88 -66
  450. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +0 -6
  451. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +21 -19
  452. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +13 -7
  453. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +0 -1
  454. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +63 -56
  455. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +31 -19
  456. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +0 -1
  457. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +27 -24
  458. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +13 -11
  459. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +0 -1
  460. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +27 -24
  461. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +13 -11
  462. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +0 -1
  463. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -5
  464. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +1 -1
  465. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +538 -364
  466. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +157 -95
  467. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +0 -8
  468. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -110
  469. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +69 -49
  470. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +0 -4
  471. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +517 -389
  472. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +182 -116
  473. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +0 -7
  474. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +84 -62
  475. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +30 -22
  476. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +0 -2
  477. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +340 -256
  478. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +92 -82
  479. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +0 -5
  480. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +19 -17
  481. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +1 -3
  482. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +0 -1
  483. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +857 -566
  484. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +288 -182
  485. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +0 -15
  486. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb.h +2362 -0
  487. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.c +556 -0
  488. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.h +47 -0
  489. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +105 -72
  490. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +36 -22
  491. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +0 -2
  492. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +312 -226
  493. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +132 -78
  494. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +0 -5
  495. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +82 -61
  496. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +35 -19
  497. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +0 -2
  498. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +123 -89
  499. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +25 -25
  500. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +0 -4
  501. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +48 -33
  502. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +13 -11
  503. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +0 -1
  504. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +42 -36
  505. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +19 -13
  506. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +0 -1
  507. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +101 -79
  508. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +61 -31
  509. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +0 -5
  510. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +83 -60
  511. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +37 -19
  512. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +0 -2
  513. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +56 -40
  514. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +15 -13
  515. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +0 -1
  516. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +34 -29
  517. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +13 -11
  518. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +0 -1
  519. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +32 -27
  520. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +13 -11
  521. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +0 -1
  522. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +88 -71
  523. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +48 -30
  524. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +0 -3
  525. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +37 -30
  526. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +1 -5
  527. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +0 -2
  528. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +95 -71
  529. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +36 -22
  530. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +0 -2
  531. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +79 -56
  532. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +26 -18
  533. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +0 -2
  534. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +164 -124
  535. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +54 -40
  536. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +0 -4
  537. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +200 -147
  538. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +47 -41
  539. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +0 -7
  540. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +160 -130
  541. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +89 -47
  542. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +0 -5
  543. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +78 -62
  544. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +26 -20
  545. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +0 -3
  546. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +2 -5
  547. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +1 -1
  548. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +21 -19
  549. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +13 -7
  550. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +0 -1
  551. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +43 -36
  552. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +22 -12
  553. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +0 -2
  554. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +67 -55
  555. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +36 -18
  556. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +0 -3
  557. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +62 -51
  558. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +33 -19
  559. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +0 -2
  560. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +2 -5
  561. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +1 -1
  562. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +25 -23
  563. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +15 -7
  564. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +0 -1
  565. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +37 -33
  566. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +19 -13
  567. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +0 -1
  568. data/src/core/ext/upb-gen/google/api/annotations.upb.h +15 -13
  569. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +22 -7
  570. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +1 -1
  571. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +619 -430
  572. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +260 -168
  573. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +0 -13
  574. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +734 -518
  575. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +312 -182
  576. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +0 -16
  577. data/src/core/ext/upb-gen/google/api/http.upb.h +146 -105
  578. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +65 -29
  579. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +0 -3
  580. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +52 -37
  581. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +19 -11
  582. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +0 -1
  583. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +23 -21
  584. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +15 -7
  585. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +0 -1
  586. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +2236 -1514
  587. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +824 -406
  588. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +0 -34
  589. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +23 -21
  590. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +15 -7
  591. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +0 -1
  592. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +19 -17
  593. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +1 -3
  594. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +0 -1
  595. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +149 -100
  596. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +59 -43
  597. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +0 -4
  598. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +23 -21
  599. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +15 -7
  600. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +0 -1
  601. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +181 -139
  602. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +99 -53
  603. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +0 -9
  604. data/src/core/ext/upb-gen/google/rpc/status.upb.h +52 -37
  605. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +19 -11
  606. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +0 -1
  607. data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb.h +1651 -1191
  608. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +1157 -0
  609. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.h +69 -0
  610. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +76 -56
  611. data/src/core/ext/upb-gen/grpc/gcp/altscontext.upb_minitable.c +93 -0
  612. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -7
  613. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +621 -425
  614. data/src/core/ext/upb-gen/grpc/gcp/handshaker.upb_minitable.c +415 -0
  615. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -17
  616. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +118 -88
  617. data/src/core/ext/upb-gen/grpc/gcp/transport_security_common.upb_minitable.c +119 -0
  618. data/src/core/ext/upb-gen/grpc/gcp/transport_security_common.upb_minitable.h +34 -0
  619. data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
  620. data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
  621. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -7
  622. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +313 -234
  623. data/src/core/ext/upb-gen/grpc/lb/v1/load_balancer.upb_minitable.c +243 -0
  624. data/src/core/ext/upb-gen/grpc/lb/v1/load_balancer.upb_minitable.h +39 -0
  625. data/src/core/ext/upb-gen/grpc/lookup/v1/rls.upb.h +497 -0
  626. data/src/core/ext/upb-gen/grpc/lookup/v1/rls.upb_minitable.c +120 -0
  627. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -8
  628. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +540 -331
  629. data/src/core/ext/upb-gen/grpc/lookup/v1/rls_config.upb_minitable.c +290 -0
  630. data/src/core/ext/upb-gen/grpc/lookup/v1/rls_config.upb_minitable.h +39 -0
  631. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +189 -125
  632. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +59 -35
  633. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +0 -3
  634. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +454 -343
  635. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +204 -130
  636. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +0 -11
  637. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +369 -243
  638. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +109 -79
  639. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +0 -7
  640. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +256 -175
  641. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +122 -68
  642. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +0 -8
  643. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +128 -91
  644. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +82 -41
  645. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +5 -8
  646. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +36 -29
  647. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +36 -13
  648. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +1 -2
  649. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +13 -11
  650. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +22 -7
  651. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +1 -1
  652. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +36 -29
  653. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +36 -13
  654. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +1 -2
  655. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +34 -27
  656. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +34 -13
  657. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +1 -2
  658. data/src/core/ext/upb-gen/validate/validate.upb.h +1682 -1130
  659. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +587 -247
  660. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +4 -27
  661. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +128 -91
  662. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +82 -41
  663. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +5 -8
  664. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +36 -29
  665. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +36 -13
  666. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +1 -2
  667. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +13 -11
  668. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +22 -7
  669. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +1 -1
  670. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +122 -90
  671. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +82 -39
  672. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +3 -7
  673. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +34 -27
  674. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +34 -13
  675. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +1 -2
  676. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +21 -19
  677. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +13 -7
  678. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +0 -1
  679. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +29 -26
  680. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +17 -11
  681. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +0 -1
  682. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +70 -58
  683. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +32 -22
  684. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +0 -2
  685. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +53 -34
  686. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +26 -16
  687. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +0 -2
  688. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +29 -26
  689. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +17 -11
  690. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +0 -1
  691. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +37 -33
  692. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +22 -14
  693. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +0 -1
  694. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +102 -76
  695. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +43 -23
  696. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +0 -2
  697. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +33 -30
  698. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +19 -11
  699. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +0 -1
  700. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +136 -83
  701. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +41 -33
  702. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +0 -4
  703. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +46 -32
  704. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +20 -12
  705. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +0 -1
  706. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +29 -26
  707. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +20 -12
  708. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +0 -1
  709. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +93 -61
  710. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +28 -20
  711. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +0 -2
  712. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +19 -17
  713. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +1 -3
  714. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +0 -1
  715. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +105 -71
  716. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +32 -22
  717. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +0 -2
  718. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +430 -314
  719. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +153 -123
  720. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +0 -10
  721. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +307 -199
  722. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +74 -62
  723. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +0 -6
  724. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +52 -42
  725. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +19 -13
  726. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +0 -2
  727. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +95 -71
  728. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +36 -22
  729. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +0 -2
  730. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +92 -77
  731. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +42 -28
  732. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +0 -2
  733. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +67 -55
  734. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +36 -18
  735. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +0 -3
  736. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +29 -26
  737. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +17 -11
  738. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +0 -1
  739. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.c +453 -0
  740. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.h +67 -0
  741. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.c +142 -0
  742. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.h +37 -0
  743. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +885 -855
  744. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +733 -0
  745. data/src/core/ext/upbdefs-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upbdefs.h +44 -44
  746. data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
  747. data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
  748. data/src/core/filter/auth/server_auth_filter.cc +2 -3
  749. data/src/core/filter/composite/composite_filter.cc +53 -34
  750. data/src/core/filter/composite/composite_filter.h +16 -5
  751. data/src/core/filter/ext_proc/ext_proc_filter.cc +1781 -0
  752. data/src/core/filter/ext_proc/ext_proc_filter.h +188 -0
  753. data/src/core/filter/ext_proc/ext_proc_messages.cc +756 -0
  754. data/src/core/filter/ext_proc/ext_proc_messages.h +324 -0
  755. data/src/core/filter/filter_args.h +17 -24
  756. data/src/core/handshaker/handshaker.cc +14 -6
  757. data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
  758. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +30 -3
  759. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
  760. data/src/core/handshaker/security/secure_endpoint.cc +69 -14
  761. data/src/core/handshaker/security/security_handshaker.cc +15 -12
  762. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  763. data/src/core/lib/channel/channel_args.cc +20 -0
  764. data/src/core/lib/channel/channel_args.h +29 -23
  765. data/src/core/lib/channel/channel_stack.cc +4 -2
  766. data/src/core/lib/channel/channel_stack.h +3 -7
  767. data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -3
  768. data/src/core/lib/channel/channel_stack_builder_impl.h +0 -7
  769. data/src/core/lib/channel/promise_based_filter.cc +222 -24
  770. data/src/core/lib/channel/promise_based_filter.h +328 -206
  771. data/src/core/lib/compression/compression_internal.cc +4 -5
  772. data/src/core/lib/compression/message_compress.cc +132 -97
  773. data/src/core/lib/compression/message_compress.h +24 -0
  774. data/src/core/lib/debug/trace_flags.cc +10 -0
  775. data/src/core/lib/debug/trace_flags.h +4 -0
  776. data/src/core/lib/event_engine/ares_resolver.cc +68 -64
  777. data/src/core/lib/event_engine/ares_resolver.h +3 -2
  778. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
  779. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
  780. data/src/core/lib/event_engine/default_event_engine.cc +5 -5
  781. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +0 -13
  782. data/src/core/lib/event_engine/extensions/receive_coalescing_extension.h +44 -0
  783. data/src/core/lib/event_engine/extensions/tcp_trace.h +1 -1
  784. data/src/core/lib/event_engine/posix.h +2 -0
  785. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -12
  786. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +20 -24
  787. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
  788. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
  789. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +2 -1
  790. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +84 -40
  791. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -11
  792. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +32 -37
  793. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
  794. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +2 -1
  795. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +10 -10
  796. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
  797. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -0
  798. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
  799. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  800. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  801. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  802. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
  803. data/src/core/lib/event_engine/shim.cc +2 -16
  804. data/src/core/lib/event_engine/shim.h +0 -4
  805. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  806. data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
  807. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
  808. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
  809. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -4
  810. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -4
  811. data/src/core/lib/event_engine/windows/windows_endpoint.cc +1 -3
  812. data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
  813. data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
  814. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
  815. data/src/core/lib/experiments/experiments.cc +414 -267
  816. data/src/core/lib/experiments/experiments.h +231 -130
  817. data/src/core/lib/iomgr/buffer_list.cc +3 -3
  818. data/src/core/lib/iomgr/buffer_list.h +2 -2
  819. data/src/core/lib/iomgr/cfstream_handle.cc +2 -6
  820. data/src/core/lib/iomgr/combiner.cc +0 -1
  821. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -10
  822. data/src/core/lib/iomgr/error.cc +5 -79
  823. data/src/core/lib/iomgr/error.h +8 -6
  824. data/src/core/lib/iomgr/error_cfstream.cc +1 -2
  825. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  826. data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -7
  827. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -15
  828. data/src/core/lib/iomgr/event_engine_shims/closure.cc +1 -1
  829. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -6
  830. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
  831. data/src/core/lib/iomgr/iomgr_posix.cc +0 -4
  832. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -4
  833. data/src/core/lib/iomgr/iomgr_windows.cc +0 -4
  834. data/src/core/lib/iomgr/socket_factory_posix.h +1 -1
  835. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
  836. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  837. data/src/core/lib/iomgr/systemd_utils.cc +0 -1
  838. data/src/core/lib/iomgr/tcp_client.h +1 -1
  839. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  840. data/src/core/lib/iomgr/tcp_posix.cc +33 -28
  841. data/src/core/lib/iomgr/tcp_server.h +1 -1
  842. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -6
  843. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -1
  844. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
  845. data/src/core/lib/iomgr/tcp_server_windows.cc +0 -1
  846. data/src/core/lib/iomgr/tcp_windows.cc +5 -10
  847. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  848. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  849. data/src/core/lib/iomgr/vsock.h +3 -1
  850. data/src/core/lib/promise/activity.cc +1 -1
  851. data/src/core/lib/promise/activity.h +1 -1
  852. data/src/core/lib/promise/arena_promise.h +7 -7
  853. data/src/core/lib/promise/detail/promise_factory.h +14 -14
  854. data/src/core/lib/promise/detail/promise_like.h +4 -4
  855. data/src/core/lib/promise/inter_activity_latch.h +6 -6
  856. data/src/core/lib/promise/inter_activity_pipe.h +1 -1
  857. data/src/core/lib/promise/interceptor_list.h +1 -1
  858. data/src/core/lib/promise/observable.h +3 -3
  859. data/src/core/lib/promise/party.cc +1 -1
  860. data/src/core/lib/promise/try_seq.h +4 -4
  861. data/src/core/lib/resource_quota/arena.h +3 -3
  862. data/src/core/lib/resource_quota/memory_quota.cc +17 -17
  863. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  864. data/src/core/lib/resource_quota/telemetry.cc +54 -0
  865. data/src/core/lib/resource_quota/telemetry.h +5 -23
  866. data/src/core/lib/resource_quota/thread_quota.cc +3 -3
  867. data/src/core/lib/security/authorization/audit_logging.cc +7 -7
  868. data/src/core/lib/security/authorization/audit_logging.h +3 -3
  869. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  870. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +11 -13
  871. data/src/core/lib/security/authorization/grpc_authorization_engine.h +2 -2
  872. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  873. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  874. data/src/core/lib/security/authorization/matchers.cc +20 -20
  875. data/src/core/lib/security/authorization/matchers.h +16 -17
  876. data/src/core/lib/security/authorization/rbac_policy.cc +139 -56
  877. data/src/core/lib/security/authorization/rbac_policy.h +22 -4
  878. data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
  879. data/src/core/lib/security/authorization/stdout_logger.h +6 -5
  880. data/src/core/lib/surface/call.cc +16 -24
  881. data/src/core/lib/surface/call.h +14 -3
  882. data/src/core/lib/surface/call_utils.h +117 -0
  883. data/src/core/lib/surface/channel.cc +22 -3
  884. data/src/core/lib/surface/channel.h +15 -7
  885. data/src/core/lib/surface/channel_create.cc +1 -1
  886. data/src/core/lib/surface/channel_create.h +0 -2
  887. data/src/core/lib/surface/channel_init.cc +78 -39
  888. data/src/core/lib/surface/channel_init.h +30 -16
  889. data/src/core/lib/surface/filter_stack_call.cc +15 -39
  890. data/src/core/lib/surface/init.cc +20 -34
  891. data/src/core/lib/surface/lame_client.cc +1 -1
  892. data/src/core/lib/surface/legacy_channel.cc +11 -9
  893. data/src/core/lib/surface/legacy_channel.h +3 -1
  894. data/src/core/lib/surface/version.cc +2 -2
  895. data/src/core/lib/transport/bdp_estimator.cc +13 -13
  896. data/src/core/lib/transport/bdp_estimator.h +9 -5
  897. data/src/core/lib/transport/error_utils.cc +23 -162
  898. data/src/core/lib/transport/error_utils.h +0 -16
  899. data/src/core/lib/transport/promise_endpoint.h +8 -8
  900. data/src/core/lib/transport/transport.h +38 -9
  901. data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
  902. data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
  903. data/src/core/load_balancing/autosharding/autosharding.h +78 -0
  904. data/src/core/load_balancing/grpclb/grpclb.cc +2 -1
  905. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
  906. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  907. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
  908. data/src/core/load_balancing/health_check_client.cc +7 -7
  909. data/src/core/load_balancing/lb_policy.cc +1 -1
  910. data/src/core/load_balancing/oob_backend_metric.cc +5 -5
  911. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  912. data/src/core/load_balancing/pick_first/pick_first.cc +35 -2
  913. data/src/core/load_balancing/pick_first/pick_first.h +6 -0
  914. data/src/core/load_balancing/ring_hash/ring_hash.cc +112 -47
  915. data/src/core/load_balancing/rls/rls.cc +53 -29
  916. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +146 -88
  917. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +86 -0
  918. data/src/core/load_balancing/xds/cds.cc +88 -61
  919. data/src/core/load_balancing/xds/cds.h +21 -0
  920. data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -3
  921. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  922. data/src/core/mitigation_engine/mitigation.h +62 -0
  923. data/src/core/mitigation_engine/mitigation_engine.h +109 -0
  924. data/src/core/mitigation_engine/mitigation_provider.h +63 -0
  925. data/src/core/plugin_registry/grpc_plugin_registry.cc +41 -10
  926. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -5
  927. data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.cc → dns_resolver.cc} +49 -48
  928. data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.h → dns_resolver.h} +8 -5
  929. data/src/core/resolver/dns/{event_engine/service_config_helper.cc → service_config_helper.cc} +1 -1
  930. data/src/core/resolver/dns/{event_engine/service_config_helper.h → service_config_helper.h} +3 -3
  931. data/src/core/resolver/endpoint_addresses.h +3 -0
  932. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  933. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +40 -31
  934. data/src/core/resolver/xds/xds_resolver.cc +66 -147
  935. data/src/core/server/server.cc +72 -54
  936. data/src/core/server/server.h +30 -21
  937. data/src/core/server/server_config_selector.h +23 -7
  938. data/src/core/server/server_config_selector_filter.cc +228 -32
  939. data/src/core/server/server_config_selector_filter.h +59 -3
  940. data/src/core/server/xds_server_config_fetcher.cc +821 -759
  941. data/src/core/server/xds_server_config_fetcher.h +49 -0
  942. data/src/core/server/xds_server_config_fetcher_legacy.cc +1340 -0
  943. data/src/core/telemetry/call_tracer.cc +49 -2
  944. data/src/core/telemetry/call_tracer.h +1 -0
  945. data/src/core/telemetry/default_tcp_tracer.cc +1 -1
  946. data/src/core/telemetry/histogram.h +99 -98
  947. data/src/core/telemetry/instrument.cc +209 -90
  948. data/src/core/telemetry/instrument.h +123 -61
  949. data/src/core/telemetry/metrics.h +5 -0
  950. data/src/core/telemetry/tcp_tracer.h +38 -0
  951. data/src/core/{resolver/dns/c_ares/dns_resolver_ares.h → telemetry/telemetry_label.h} +11 -9
  952. data/src/core/transport/message_size_service_config.cc +123 -0
  953. data/src/core/transport/message_size_service_config.h +85 -0
  954. data/src/core/transport/session_endpoint.cc +29 -4
  955. data/src/core/transport/session_endpoint.h +4 -0
  956. data/src/core/tsi/alts/crypt/aes_gcm.cc +10 -13
  957. data/src/core/tsi/alts/crypt/gsec.h +4 -2
  958. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +4 -4
  959. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +6 -6
  960. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +5 -3
  961. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  962. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  963. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  964. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
  965. data/src/core/tsi/ssl_telemetry_utils.cc +300 -0
  966. data/src/core/tsi/ssl_telemetry_utils.h +84 -0
  967. data/src/core/tsi/ssl_transport_security.cc +846 -377
  968. data/src/core/tsi/ssl_transport_security.h +81 -28
  969. data/src/core/tsi/ssl_transport_security_utils.cc +18 -6
  970. data/src/core/tsi/tls_telemetry.cc +31 -0
  971. data/src/core/tsi/tls_telemetry.h +47 -0
  972. data/src/core/tsi/transport_security.cc +2 -2
  973. data/src/core/tsi/transport_security.h +8 -1
  974. data/src/core/tsi/transport_security_interface.h +1 -1
  975. data/src/core/{resolver/dns/native/dns_resolver.h → util/address_sorting_init.cc} +21 -8
  976. data/src/core/{resolver/dns/c_ares/grpc_ares_wrapper_posix.cc → util/address_sorting_init.h} +7 -8
  977. data/src/core/util/event_log.cc +3 -3
  978. data/src/core/util/http_client/httpcli.cc +21 -61
  979. data/src/core/util/http_client/httpcli.h +1 -8
  980. data/src/core/util/http_client/httpcli_security_connector.cc +14 -8
  981. data/src/core/util/http_client/parser.cc +1 -1
  982. data/src/core/util/json/json_object_loader.cc +7 -0
  983. data/src/core/util/json/json_object_loader.h +17 -2
  984. data/src/core/util/latent_see.cc +123 -36
  985. data/src/core/util/latent_see.h +14 -1
  986. data/src/core/util/linux/cpu.cc +1 -1
  987. data/src/core/util/load_file.cc +3 -9
  988. data/src/core/util/load_file.h +3 -4
  989. data/src/core/util/lru_cache.h +2 -0
  990. data/src/core/util/matchers.h +8 -0
  991. data/src/core/util/mpscq.cc +1 -1
  992. data/src/core/util/notification.h +4 -4
  993. data/src/core/util/posix/cpu.cc +1 -1
  994. data/src/core/util/ref_counted_string.h +1 -1
  995. data/src/core/util/status_helper.cc +68 -209
  996. data/src/core/util/status_helper.h +18 -34
  997. data/src/core/util/sync.h +20 -6
  998. data/src/core/util/table.h +20 -22
  999. data/src/core/util/tchar.cc +13 -7
  1000. data/src/core/util/trie_lookup.h +1 -1
  1001. data/src/core/util/work_serializer.cc +2 -2
  1002. data/src/core/xds/grpc/blackboard.cc +59 -0
  1003. data/src/core/{filter → xds/grpc}/blackboard.h +30 -11
  1004. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  1005. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +2 -11
  1006. data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
  1007. data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
  1008. data/src/core/xds/grpc/xds_audit_logger_registry.cc +51 -31
  1009. data/src/core/xds/grpc/xds_audit_logger_registry.h +17 -3
  1010. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +4 -17
  1011. data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -6
  1012. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +488 -0
  1013. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.h +97 -0
  1014. data/src/core/xds/grpc/xds_certificate_provider.cc +7 -7
  1015. data/src/core/xds/grpc/xds_client_grpc.cc +12 -16
  1016. data/src/core/xds/grpc/xds_client_grpc.h +0 -4
  1017. data/src/core/xds/grpc/xds_cluster.h +1 -0
  1018. data/src/core/xds/grpc/xds_cluster_parser.cc +5 -20
  1019. data/src/core/xds/grpc/xds_cluster_parser.h +0 -2
  1020. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -4
  1021. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +0 -2
  1022. data/src/core/xds/grpc/xds_common_types.cc +96 -91
  1023. data/src/core/xds/grpc/xds_common_types.h +36 -54
  1024. data/src/core/xds/grpc/xds_common_types_parser.cc +191 -414
  1025. data/src/core/xds/grpc/xds_common_types_parser.h +25 -10
  1026. data/src/core/xds/grpc/xds_endpoint.cc +1 -1
  1027. data/src/core/xds/grpc/xds_endpoint_parser.cc +18 -20
  1028. data/src/core/xds/grpc/xds_grpc_service_parser.cc +179 -0
  1029. data/src/core/{filter/blackboard.cc → xds/grpc/xds_grpc_service_parser.h} +14 -13
  1030. data/src/core/xds/grpc/xds_http_composite_filter.cc +53 -32
  1031. data/src/core/xds/grpc/xds_http_composite_filter.h +10 -6
  1032. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +421 -0
  1033. data/src/core/xds/grpc/xds_http_ext_proc_filter.h +89 -0
  1034. data/src/core/xds/grpc/xds_http_fault_filter.cc +9 -161
  1035. data/src/core/xds/grpc/xds_http_fault_filter.h +20 -12
  1036. data/src/core/xds/grpc/xds_http_filter.cc +4 -2
  1037. data/src/core/xds/grpc/xds_http_filter.h +11 -20
  1038. data/src/core/xds/grpc/xds_http_filter_registry.cc +10 -137
  1039. data/src/core/xds/grpc/xds_http_filter_registry.h +7 -59
  1040. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +36 -131
  1041. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +30 -17
  1042. data/src/core/xds/grpc/xds_http_rbac_filter.cc +406 -37
  1043. data/src/core/xds/grpc/xds_http_rbac_filter.h +1 -3
  1044. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +8 -162
  1045. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +20 -12
  1046. data/src/core/xds/grpc/xds_lb_policy_registry.cc +0 -274
  1047. data/src/core/xds/grpc/xds_lb_policy_registry.h +7 -3
  1048. data/src/core/xds/grpc/xds_listener.cc +2 -0
  1049. data/src/core/xds/grpc/xds_listener.h +5 -0
  1050. data/src/core/xds/grpc/xds_listener_parser.cc +28 -19
  1051. data/src/core/xds/grpc/xds_matcher.h +2 -2
  1052. data/src/core/xds/grpc/xds_matcher_parse.h +3 -1
  1053. data/src/core/xds/grpc/xds_metadata_parser.cc +6 -3
  1054. data/src/core/xds/grpc/xds_metadata_parser.h +2 -0
  1055. data/src/core/xds/grpc/xds_route_config.cc +2 -0
  1056. data/src/core/xds/grpc/xds_route_config.h +4 -2
  1057. data/src/core/xds/grpc/xds_route_config_parser.cc +21 -93
  1058. data/src/core/xds/grpc/xds_route_config_parser.h +0 -3
  1059. data/src/core/xds/grpc/xds_routing.cc +192 -120
  1060. data/src/core/xds/grpc/xds_routing.h +92 -32
  1061. data/src/core/xds/grpc/xds_server_grpc.cc +22 -13
  1062. data/src/core/xds/grpc/xds_server_grpc.h +16 -2
  1063. data/src/core/xds/grpc/xds_server_grpc_interface.h +10 -0
  1064. data/src/core/xds/grpc/xds_tls_context.cc +117 -0
  1065. data/src/core/xds/grpc/xds_tls_context.h +76 -0
  1066. data/src/core/xds/grpc/xds_tls_context_parser.cc +275 -0
  1067. data/src/core/xds/grpc/xds_tls_context_parser.h +35 -0
  1068. data/src/core/xds/grpc/xds_transport_grpc.cc +243 -95
  1069. data/src/core/xds/grpc/xds_transport_grpc.h +50 -9
  1070. data/src/core/xds/xds_client/lrs_client.cc +26 -27
  1071. data/src/core/xds/xds_client/xds_bootstrap.cc +4 -16
  1072. data/src/core/xds/xds_client/xds_client.cc +21 -31
  1073. data/src/core/xds/xds_client/xds_transport.h +52 -3
  1074. data/src/ruby/ext/grpc/rb_byte_buffer.c +1 -0
  1075. data/src/ruby/ext/grpc/rb_call.c +29 -15
  1076. data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
  1077. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  1078. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  1079. data/src/ruby/ext/grpc/rb_channel_credentials.c +1 -0
  1080. data/src/ruby/ext/grpc/rb_completion_queue.c +7 -5
  1081. data/src/ruby/ext/grpc/rb_compression_options.c +1 -0
  1082. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +8 -4
  1083. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +12 -6
  1084. data/src/ruby/ext/grpc/rb_server.c +1 -0
  1085. data/src/ruby/ext/grpc/rb_server_credentials.c +1 -0
  1086. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +1 -0
  1087. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +1 -0
  1088. data/src/ruby/lib/grpc/core/call_credentials.rb +86 -0
  1089. data/src/ruby/lib/grpc/core/channel_credentials.rb +69 -0
  1090. data/src/ruby/lib/grpc/core/credentials_helper.rb +126 -0
  1091. data/src/ruby/lib/grpc/generic/client_stub.rb +86 -73
  1092. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  1093. data/src/ruby/lib/grpc/version.rb +1 -1
  1094. data/src/ruby/lib/grpc.rb +25 -0
  1095. data/src/ruby/pb/README.md +1 -1
  1096. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  1097. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -1
  1098. data/src/ruby/pb/test/client.rb +5 -4
  1099. data/src/ruby/spec/call_credentials_spec.rb +52 -2
  1100. data/src/ruby/spec/call_spec.rb +14 -0
  1101. data/src/ruby/spec/credentials_helper_spec.rb +80 -0
  1102. data/src/ruby/spec/generic/client_stub_spec.rb +27 -4
  1103. data/src/ruby/spec/generic/server_interceptors_spec.rb +14 -3
  1104. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  1105. data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
  1106. data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
  1107. data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
  1108. data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  1109. data/third_party/abseil-cpp/absl/base/casts.h +135 -2
  1110. data/third_party/abseil-cpp/absl/base/config.h +63 -41
  1111. data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
  1112. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  1113. data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  1114. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
  1115. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
  1116. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  1117. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  1118. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  1119. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
  1120. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
  1121. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
  1122. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  1123. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
  1124. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  1125. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  1126. data/third_party/abseil-cpp/absl/base/macros.h +76 -37
  1127. data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
  1128. data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
  1129. data/third_party/abseil-cpp/absl/base/options.h +46 -18
  1130. data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
  1131. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  1132. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  1133. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
  1134. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  1135. data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
  1136. data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
  1137. data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
  1138. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
  1139. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
  1140. data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
  1141. data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
  1142. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
  1143. data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
  1144. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  1145. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
  1146. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
  1147. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
  1148. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
  1149. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
  1150. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
  1151. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
  1152. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
  1153. data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
  1154. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
  1155. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
  1156. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
  1157. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
  1158. data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
  1159. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
  1160. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  1161. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  1162. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  1163. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  1164. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  1165. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
  1166. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  1167. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  1168. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  1169. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  1170. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
  1171. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
  1172. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
  1173. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  1174. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
  1175. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  1176. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  1177. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
  1178. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
  1179. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
  1180. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  1181. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
  1182. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
  1183. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  1184. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
  1185. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  1186. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  1187. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  1188. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  1189. data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
  1190. data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
  1191. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  1192. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
  1193. data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
  1194. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  1195. data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
  1196. data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
  1197. data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
  1198. data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
  1199. data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
  1200. data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
  1201. data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
  1202. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
  1203. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  1204. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
  1205. data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
  1206. data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
  1207. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
  1208. data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
  1209. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  1210. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  1211. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
  1212. data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
  1213. data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
  1214. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  1215. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
  1216. data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
  1217. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  1218. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  1219. data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
  1220. data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
  1221. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  1222. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  1223. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
  1224. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  1225. data/third_party/abseil-cpp/absl/log/log.h +2 -2
  1226. data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  1227. data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
  1228. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  1229. data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
  1230. data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
  1231. data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
  1232. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  1233. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  1234. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
  1235. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  1236. data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
  1237. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  1238. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  1239. data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
  1240. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  1241. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  1242. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
  1243. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  1244. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  1245. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  1246. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  1247. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  1248. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
  1249. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  1250. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  1251. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  1252. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
  1253. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  1254. data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
  1255. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  1256. data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  1257. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  1258. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  1259. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
  1260. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
  1261. data/third_party/abseil-cpp/absl/status/status.cc +66 -70
  1262. data/third_party/abseil-cpp/absl/status/status.h +254 -23
  1263. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  1264. data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
  1265. data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
  1266. data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
  1267. data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
  1268. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  1269. data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
  1270. data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
  1271. data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  1272. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
  1273. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  1274. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
  1275. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
  1276. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  1277. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  1278. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  1279. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
  1280. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
  1281. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  1282. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  1283. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  1284. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  1285. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
  1286. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
  1287. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
  1288. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  1289. data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
  1290. data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
  1291. data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  1292. data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
  1293. data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
  1294. data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
  1295. data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
  1296. data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
  1297. data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
  1298. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  1299. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  1300. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
  1301. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  1302. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  1303. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  1304. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
  1305. data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
  1306. data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
  1307. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  1308. data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
  1309. data/third_party/abseil-cpp/absl/time/clock.h +3 -0
  1310. data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
  1311. data/third_party/abseil-cpp/absl/time/format.cc +3 -10
  1312. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  1313. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
  1314. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  1315. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  1316. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  1317. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  1318. data/third_party/abseil-cpp/absl/time/time.cc +4 -4
  1319. data/third_party/abseil-cpp/absl/time/time.h +14 -13
  1320. data/third_party/abseil-cpp/absl/types/compare.h +64 -63
  1321. data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
  1322. data/third_party/abseil-cpp/absl/types/optional.h +31 -4
  1323. data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  1324. data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
  1325. data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  1326. data/third_party/abseil-cpp/absl/types/span.h +67 -38
  1327. data/third_party/abseil-cpp/absl/types/variant.h +75 -18
  1328. data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
  1329. data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
  1330. data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
  1331. data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
  1332. data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
  1333. data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
  1334. data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
  1335. data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
  1336. data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
  1337. data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
  1338. data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
  1339. data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
  1340. data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
  1341. data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
  1342. data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
  1343. data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
  1344. data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
  1345. data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
  1346. data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
  1347. data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
  1348. data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
  1349. data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
  1350. data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
  1351. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
  1352. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
  1353. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
  1354. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
  1355. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
  1356. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
  1357. data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
  1358. data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
  1359. data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
  1360. data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
  1361. data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
  1362. data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
  1363. data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
  1364. data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
  1365. data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
  1366. data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
  1367. data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
  1368. data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
  1369. data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
  1370. data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
  1371. data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
  1372. data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
  1373. data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
  1374. data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
  1375. data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
  1376. data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
  1377. data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
  1378. data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
  1379. data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
  1380. data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
  1381. data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
  1382. data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
  1383. data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
  1384. data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
  1385. data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
  1386. data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
  1387. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
  1388. data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
  1389. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
  1390. data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
  1391. data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
  1392. data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
  1393. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
  1394. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
  1395. data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
  1396. data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
  1397. data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
  1398. data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
  1399. data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
  1400. data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
  1401. data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
  1402. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
  1403. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
  1404. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
  1405. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
  1406. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
  1407. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
  1408. data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
  1409. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
  1410. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
  1411. data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
  1412. data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
  1413. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
  1414. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
  1415. data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
  1416. data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
  1417. data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
  1418. data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
  1419. data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
  1420. data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
  1421. data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
  1422. data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
  1423. data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
  1424. data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
  1425. data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
  1426. data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
  1427. data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
  1428. data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
  1429. data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
  1430. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
  1431. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  1432. data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
  1433. data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
  1434. data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
  1435. data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
  1436. data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
  1437. data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
  1438. data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
  1439. data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
  1440. data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
  1441. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
  1442. data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
  1443. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
  1444. data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
  1445. data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
  1446. data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
  1447. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
  1448. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
  1449. data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
  1450. data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
  1451. data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
  1452. data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
  1453. data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
  1454. data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
  1455. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
  1456. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
  1457. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
  1458. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
  1459. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
  1460. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
  1461. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
  1462. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
  1463. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
  1464. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
  1465. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
  1466. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
  1467. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
  1468. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
  1469. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
  1470. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
  1471. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
  1472. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
  1473. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
  1474. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
  1475. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
  1476. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
  1477. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
  1478. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
  1479. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
  1480. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
  1481. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
  1482. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
  1483. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
  1484. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
  1485. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
  1486. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
  1487. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
  1488. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
  1489. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
  1490. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
  1491. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
  1492. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
  1493. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
  1494. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
  1495. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
  1496. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
  1497. data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
  1498. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
  1499. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
  1500. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
  1501. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
  1502. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
  1503. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
  1504. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
  1505. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
  1506. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
  1507. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
  1508. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
  1509. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
  1510. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
  1511. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
  1512. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
  1513. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
  1514. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
  1515. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
  1516. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
  1517. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
  1518. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
  1519. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
  1520. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
  1521. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
  1522. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
  1523. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
  1524. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  1525. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
  1526. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
  1527. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
  1528. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
  1529. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
  1530. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
  1531. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
  1532. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
  1533. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  1534. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
  1535. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
  1536. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
  1537. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
  1538. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
  1539. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
  1540. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
  1541. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
  1542. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
  1543. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
  1544. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
  1545. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
  1546. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
  1547. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
  1548. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
  1549. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
  1550. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
  1551. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
  1552. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
  1553. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
  1554. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
  1555. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
  1556. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
  1557. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
  1558. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
  1559. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
  1560. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
  1561. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
  1562. data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
  1563. data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
  1564. data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
  1565. data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
  1566. data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
  1567. data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
  1568. data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
  1569. data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
  1570. data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
  1571. data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
  1572. data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
  1573. data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
  1574. data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
  1575. data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
  1576. data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
  1577. data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
  1578. data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
  1579. data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
  1580. data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
  1581. data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
  1582. data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
  1583. data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
  1584. data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
  1585. data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
  1586. data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
  1587. data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
  1588. data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
  1589. data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
  1590. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
  1591. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
  1592. data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
  1593. data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
  1594. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
  1595. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
  1596. data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
  1597. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
  1598. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
  1599. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
  1600. data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
  1601. data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
  1602. data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
  1603. data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
  1604. data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
  1605. data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
  1606. data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
  1607. data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
  1608. data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
  1609. data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
  1610. data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
  1611. data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
  1612. data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
  1613. data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
  1614. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
  1615. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
  1616. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
  1617. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
  1618. data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
  1619. data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
  1620. data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
  1621. data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
  1622. data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
  1623. data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
  1624. data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
  1625. data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
  1626. data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
  1627. data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
  1628. data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
  1629. data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
  1630. data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
  1631. data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
  1632. data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
  1633. data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
  1634. data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
  1635. data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
  1636. data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
  1637. data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
  1638. data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
  1639. data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
  1640. data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
  1641. data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
  1642. data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
  1643. data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
  1644. data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
  1645. data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
  1646. data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
  1647. data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
  1648. data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
  1649. data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
  1650. data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
  1651. data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
  1652. data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
  1653. data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
  1654. data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
  1655. data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
  1656. data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
  1657. data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
  1658. data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
  1659. data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
  1660. data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
  1661. data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
  1662. data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
  1663. data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
  1664. data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
  1665. data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
  1666. data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
  1667. data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
  1668. data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
  1669. data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
  1670. data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
  1671. data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
  1672. data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
  1673. data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
  1674. data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
  1675. data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
  1676. data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
  1677. data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
  1678. data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
  1679. data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
  1680. data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
  1681. data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
  1682. data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
  1683. data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
  1684. data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
  1685. data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
  1686. data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
  1687. data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
  1688. data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
  1689. data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
  1690. data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
  1691. data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
  1692. data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
  1693. data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
  1694. data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
  1695. data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
  1696. data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
  1697. data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
  1698. data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
  1699. data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
  1700. data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
  1701. data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
  1702. data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
  1703. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
  1704. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
  1705. data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
  1706. data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
  1707. data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
  1708. data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
  1709. data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
  1710. data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
  1711. data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
  1712. data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
  1713. data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
  1714. data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
  1715. data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
  1716. data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
  1717. data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
  1718. data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
  1719. data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
  1720. data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
  1721. data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
  1722. data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
  1723. data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
  1724. data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
  1725. data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
  1726. data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
  1727. data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
  1728. data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
  1729. data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
  1730. data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
  1731. data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
  1732. data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
  1733. data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
  1734. data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
  1735. data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
  1736. data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
  1737. data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
  1738. data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
  1739. data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
  1740. data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
  1741. data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
  1742. data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
  1743. data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
  1744. data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
  1745. data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
  1746. data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
  1747. data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
  1748. data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
  1749. data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
  1750. data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
  1751. data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
  1752. data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
  1753. data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
  1754. data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
  1755. data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
  1756. data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
  1757. data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
  1758. data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
  1759. data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
  1760. data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
  1761. data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
  1762. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
  1763. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
  1764. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
  1765. data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
  1766. data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
  1767. data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
  1768. data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
  1769. data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
  1770. data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
  1771. data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
  1772. data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
  1773. data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
  1774. data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
  1775. data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
  1776. data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
  1777. data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
  1778. data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
  1779. data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
  1780. data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
  1781. data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
  1782. data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
  1783. data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
  1784. data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
  1785. data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
  1786. data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
  1787. data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
  1788. data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
  1789. data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
  1790. data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
  1791. data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
  1792. data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
  1793. data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
  1794. data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
  1795. data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
  1796. data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
  1797. data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
  1798. data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
  1799. data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
  1800. data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
  1801. data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
  1802. data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
  1803. data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
  1804. data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
  1805. data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
  1806. data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
  1807. data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
  1808. data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
  1809. data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
  1810. data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
  1811. data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
  1812. data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
  1813. data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
  1814. data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
  1815. data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
  1816. data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
  1817. data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
  1818. data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
  1819. data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
  1820. data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
  1821. data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
  1822. data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
  1823. data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
  1824. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  1825. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  1826. data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
  1827. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
  1828. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
  1829. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
  1830. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
  1831. data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
  1832. data/third_party/upb/upb/base/error_handler.h +79 -0
  1833. data/third_party/upb/upb/base/internal/log2.h +29 -5
  1834. data/third_party/upb/upb/generated_code_support.h +1 -0
  1835. data/third_party/upb/upb/hash/common.c +129 -14
  1836. data/third_party/upb/upb/hash/common.h +1 -1
  1837. data/third_party/upb/upb/hash/ext_table.h +65 -0
  1838. data/third_party/upb/upb/lex/strtod.c +14 -5
  1839. data/third_party/upb/upb/mem/arena.c +113 -95
  1840. data/third_party/upb/upb/mem/internal/arena.h +13 -8
  1841. data/third_party/upb/upb/message/accessors.c +2 -3
  1842. data/third_party/upb/upb/message/accessors.h +32 -12
  1843. data/third_party/upb/upb/message/array.c +51 -2
  1844. data/third_party/upb/upb/message/array.h +10 -0
  1845. data/third_party/upb/upb/message/copy.c +18 -34
  1846. data/third_party/upb/upb/message/internal/accessors.h +15 -49
  1847. data/third_party/upb/upb/message/internal/array.h +1 -1
  1848. data/third_party/upb/upb/message/internal/map.h +1 -1
  1849. data/third_party/upb/upb/message/internal/message.c +8 -1
  1850. data/third_party/upb/upb/message/internal/message.h +40 -10
  1851. data/third_party/upb/upb/message/message.c +3 -2
  1852. data/third_party/upb/upb/message/value.h +0 -6
  1853. data/third_party/upb/upb/mini_descriptor/decode.c +78 -59
  1854. data/third_party/upb/upb/mini_descriptor/link.c +8 -6
  1855. data/third_party/upb/upb/mini_table/extension_registry.c +17 -49
  1856. data/third_party/upb/upb/mini_table/extension_registry.h +5 -17
  1857. data/third_party/upb/upb/mini_table/generated_registry.c +180 -0
  1858. data/third_party/upb/upb/mini_table/generated_registry.h +66 -0
  1859. data/third_party/upb/upb/mini_table/internal/extension.h +5 -3
  1860. data/third_party/upb/upb/mini_table/internal/field.h +7 -5
  1861. data/third_party/upb/upb/mini_table/internal/generated_registry.h +37 -0
  1862. data/third_party/upb/upb/mini_table/internal/message.c +0 -18
  1863. data/third_party/upb/upb/mini_table/internal/message.h +24 -41
  1864. data/third_party/upb/upb/mini_table/internal/size_log2.h +2 -1
  1865. data/third_party/upb/upb/mini_table/internal/sub.h +2 -5
  1866. data/third_party/upb/upb/mini_table/message.h +34 -13
  1867. data/third_party/upb/upb/port/atomic.h +180 -74
  1868. data/third_party/upb/upb/port/def.inc +194 -29
  1869. data/third_party/upb/upb/port/sanitizers.h +15 -0
  1870. data/third_party/upb/upb/port/undef.inc +6 -2
  1871. data/third_party/upb/upb/reflection/common.h +0 -6
  1872. data/third_party/upb/upb/reflection/def.hpp +8 -12
  1873. data/third_party/upb/upb/reflection/def_pool.c +85 -33
  1874. data/third_party/upb/upb/reflection/def_pool.h +38 -8
  1875. data/third_party/upb/upb/reflection/def_type.h +3 -0
  1876. data/third_party/upb/upb/reflection/enum_def.c +45 -33
  1877. data/third_party/upb/upb/reflection/enum_def.h +8 -4
  1878. data/third_party/upb/upb/reflection/enum_reserved_range.c +7 -3
  1879. data/third_party/upb/upb/reflection/enum_value_def.c +14 -29
  1880. data/third_party/upb/upb/reflection/enum_value_def.h +5 -4
  1881. data/third_party/upb/upb/reflection/extension_range.c +15 -14
  1882. data/third_party/upb/upb/reflection/extension_range.h +7 -4
  1883. data/third_party/upb/upb/reflection/field_def.c +114 -96
  1884. data/third_party/upb/upb/reflection/field_def.h +3 -3
  1885. data/third_party/upb/upb/reflection/file_def.c +71 -65
  1886. data/third_party/upb/upb/reflection/file_def.h +4 -5
  1887. data/third_party/upb/upb/reflection/internal/def_builder.c +22 -14
  1888. data/third_party/upb/upb/reflection/internal/def_builder.h +44 -38
  1889. data/third_party/upb/upb/reflection/internal/def_pool.h +5 -1
  1890. data/third_party/upb/upb/reflection/internal/enum_def.h +6 -4
  1891. data/third_party/upb/upb/reflection/internal/enum_reserved_range.h +3 -2
  1892. data/third_party/upb/upb/reflection/internal/enum_value_def.h +7 -4
  1893. data/third_party/upb/upb/reflection/internal/extension_range.h +4 -3
  1894. data/third_party/upb/upb/reflection/internal/field_def.h +15 -12
  1895. data/third_party/upb/upb/reflection/internal/file_def.h +8 -1
  1896. data/third_party/upb/upb/reflection/internal/message_def.h +10 -7
  1897. data/third_party/upb/upb/reflection/internal/message_reserved_range.h +3 -1
  1898. data/third_party/upb/upb/reflection/internal/method_def.h +6 -6
  1899. data/third_party/upb/upb/reflection/internal/oneof_def.h +6 -6
  1900. data/third_party/upb/upb/reflection/internal/service_def.h +9 -6
  1901. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  1902. data/third_party/upb/upb/reflection/message_def.c +46 -53
  1903. data/third_party/upb/upb/reflection/message_def.h +6 -7
  1904. data/third_party/upb/upb/reflection/message_reserved_range.c +7 -6
  1905. data/third_party/upb/upb/reflection/method_def.c +22 -20
  1906. data/third_party/upb/upb/reflection/method_def.h +4 -4
  1907. data/third_party/upb/upb/reflection/oneof_def.c +17 -15
  1908. data/third_party/upb/upb/reflection/oneof_def.h +6 -3
  1909. data/third_party/upb/upb/reflection/service_def.c +50 -23
  1910. data/third_party/upb/upb/reflection/service_def.h +7 -4
  1911. data/third_party/upb/upb/text/internal/encode.c +7 -10
  1912. data/third_party/upb/upb/wire/decode.c +269 -430
  1913. data/third_party/upb/upb/wire/decode.h +6 -45
  1914. data/third_party/upb/upb/wire/decode_fast/combinations.h +7 -3
  1915. data/third_party/upb/upb/wire/decode_fast/select.c +7 -2
  1916. data/third_party/upb/upb/wire/encode.c +144 -106
  1917. data/third_party/upb/upb/wire/encode.h +6 -2
  1918. data/third_party/upb/upb/wire/eps_copy_input_stream.c +36 -7
  1919. data/third_party/upb/upb/wire/eps_copy_input_stream.h +94 -380
  1920. data/third_party/upb/upb/wire/internal/decoder.c +1 -14
  1921. data/third_party/upb/upb/wire/internal/decoder.h +84 -24
  1922. data/third_party/upb/upb/wire/internal/eps_copy_input_stream.h +339 -0
  1923. data/third_party/upb/upb/wire/internal/reader.h +29 -12
  1924. data/third_party/upb/upb/wire/reader.c +35 -22
  1925. data/third_party/upb/upb/wire/reader.h +11 -18
  1926. data/third_party/utf8_range/utf8_range.c +1 -1
  1927. data/third_party/utf8_range/utf8_range.h +2 -1
  1928. metadata +158 -96
  1929. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +0 -117
  1930. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +0 -109
  1931. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +0 -80
  1932. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +0 -86
  1933. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +0 -83
  1934. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +0 -91
  1935. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
  1936. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
  1937. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +0 -217
  1938. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +0 -835
  1939. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +0 -108
  1940. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +0 -73
  1941. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +0 -298
  1942. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +0 -97
  1943. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +0 -38
  1944. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -150
  1945. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -60
  1946. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +0 -199
  1947. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +0 -48
  1948. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +0 -300
  1949. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +0 -84
  1950. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +0 -213
  1951. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +0 -48
  1952. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +0 -716
  1953. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
  1954. data/src/core/lib/iomgr/resolve_address.cc +0 -59
  1955. data/src/core/lib/iomgr/resolve_address.h +0 -125
  1956. data/src/core/lib/iomgr/resolve_address_impl.h +0 -58
  1957. data/src/core/lib/iomgr/resolve_address_posix.cc +0 -184
  1958. data/src/core/lib/iomgr/resolve_address_posix.h +0 -78
  1959. data/src/core/lib/iomgr/resolve_address_windows.cc +0 -169
  1960. data/src/core/lib/iomgr/resolve_address_windows.h +0 -76
  1961. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +0 -781
  1962. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +0 -93
  1963. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +0 -203
  1964. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +0 -838
  1965. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +0 -1237
  1966. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +0 -130
  1967. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +0 -35
  1968. data/src/core/resolver/dns/dns_resolver_plugin.cc +0 -69
  1969. data/src/core/resolver/dns/native/dns_resolver.cc +0 -173
  1970. data/src/core/util/json/json_util.cc +0 -101
  1971. data/src/core/util/json/json_util.h +0 -163
  1972. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
  1973. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
  1974. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
  1975. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  1976. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
  1977. data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
  1978. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
  1979. data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
  1980. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
  1981. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
  1982. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
  1983. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
  1984. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
  1985. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
  1986. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
  1987. data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
  1988. data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
  1989. data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
  1990. data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
  1991. data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
  1992. data/third_party/upb/upb/message/internal/tagged_ptr.h +0 -56
  1993. data/third_party/upb/upb/message/tagged_ptr.h +0 -48
@@ -34,6 +34,7 @@
34
34
  #include "src/core/channelz/channelz.h"
35
35
  #include "src/core/client_channel/buffered_call.h"
36
36
  #include "src/core/client_channel/client_channel_internal.h"
37
+ #include "src/core/client_channel/subchannel_metrics.h"
37
38
  #include "src/core/client_channel/subchannel_pool_interface.h"
38
39
  #include "src/core/client_channel/subchannel_stream_limiter.h"
39
40
  #include "src/core/config/core_configuration.h"
@@ -57,6 +58,7 @@
57
58
  #include "src/core/lib/transport/transport.h"
58
59
  #include "src/core/telemetry/stats.h"
59
60
  #include "src/core/telemetry/stats_data.h"
61
+ #include "src/core/transport/auth_context.h"
60
62
  #include "src/core/util/alloc.h"
61
63
  #include "src/core/util/backoff.h"
62
64
  #include "src/core/util/debug_location.h"
@@ -97,972 +99,56 @@ using ::grpc_event_engine::experimental::EventEngine;
97
99
  // Subchannel::ConnectivityStateWatcherInterface.
98
100
  using TransportConnectivityStateWatcher = ConnectivityStateWatcherInterface;
99
101
 
100
- //
101
- // Subchannel::Call
102
- //
103
-
104
- RefCountedPtr<Subchannel::Call> Subchannel::Call::Ref() {
105
- IncrementRefCount();
106
- return RefCountedPtr<Subchannel::Call>(this);
107
- }
108
-
109
- RefCountedPtr<Subchannel::Call> Subchannel::Call::Ref(
110
- const DebugLocation& location, const char* reason) {
111
- IncrementRefCount(location, reason);
112
- return RefCountedPtr<Subchannel::Call>(this);
113
- }
114
-
115
- //
116
- // Subchannel
117
- //
118
-
119
- RefCountedPtr<Subchannel> Subchannel::Create(
120
- OrphanablePtr<SubchannelConnector> connector,
121
- const grpc_resolved_address& address, const ChannelArgs& args) {
122
- if (!IsSubchannelConnectionScalingEnabled()) {
123
- return OldSubchannel::Create(std::move(connector), address, args);
124
- }
125
- return NewSubchannel::Create(std::move(connector), address, args);
126
- }
127
-
128
- Subchannel::Subchannel()
129
- : DualRefCounted<Subchannel>(GRPC_TRACE_FLAG_ENABLED(subchannel_refcount)
130
- ? "Subchannel"
131
- : nullptr) {}
132
-
133
- ChannelArgs Subchannel::MakeSubchannelArgs(
134
- const ChannelArgs& channel_args, const ChannelArgs& address_args,
135
- const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
136
- const std::string& channel_default_authority) {
137
- // Note that we start with the channel-level args and then apply the
138
- // per-address args, so that if a value is present in both, the one
139
- // in the channel-level args is used. This is particularly important
140
- // for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
141
- // resolvers to set on a per-address basis only if the application
142
- // did not explicitly set it at the channel level.
143
- return channel_args.UnionWith(address_args)
144
- .SetObject(subchannel_pool)
145
- // If we haven't already set the default authority arg (i.e., it
146
- // was not explicitly set by the application nor overridden by
147
- // the resolver), add it from the channel's default.
148
- .SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
149
- // Remove channel args that should not affect subchannel
150
- // uniqueness.
151
- .Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
152
- .Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
153
- .Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL)
154
- .Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL_CAP)
155
- .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
156
- // Remove all keys with the no-subchannel prefix.
157
- .RemoveAllKeysWithPrefix(GRPC_ARG_NO_SUBCHANNEL_PREFIX);
158
- }
159
-
160
- //
161
- // OldSubchannel::ConnectedSubchannel
162
- //
163
-
164
- class OldSubchannel::ConnectedSubchannel
165
- : public RefCounted<ConnectedSubchannel> {
166
- public:
167
- const ChannelArgs& args() const { return args_; }
168
-
169
- virtual void StartWatch(
170
- grpc_pollset_set* interested_parties,
171
- OrphanablePtr<TransportConnectivityStateWatcher> watcher) = 0;
172
-
173
- // Methods for v3 stack.
174
- virtual void Ping(absl::AnyInvocable<void(absl::Status)> on_ack) = 0;
175
- virtual RefCountedPtr<UnstartedCallDestination> unstarted_call_destination()
176
- const = 0;
177
-
178
- // Methods for legacy stack.
179
- virtual RefCountedPtr<Call> CreateCall(CreateCallArgs args,
180
- grpc_error_handle* error) = 0;
181
- virtual void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) = 0;
182
-
183
- protected:
184
- explicit ConnectedSubchannel(const ChannelArgs& args)
185
- : RefCounted<ConnectedSubchannel>(
186
- GRPC_TRACE_FLAG_ENABLED(subchannel_refcount) ? "ConnectedSubchannel"
187
- : nullptr),
188
- args_(args) {}
189
-
190
- private:
191
- ChannelArgs args_;
192
- };
193
-
194
- //
195
- // OldSubchannel::LegacyConnectedSubchannel
196
- //
197
-
198
- class OldSubchannel::LegacyConnectedSubchannel final
199
- : public ConnectedSubchannel {
200
- public:
201
- LegacyConnectedSubchannel(
202
- RefCountedPtr<grpc_channel_stack> channel_stack, const ChannelArgs& args,
203
- RefCountedPtr<channelz::SubchannelNode> channelz_node)
204
- : ConnectedSubchannel(args),
205
- channelz_node_(std::move(channelz_node)),
206
- channel_stack_(std::move(channel_stack)) {}
207
-
208
- ~LegacyConnectedSubchannel() override {
209
- channel_stack_.reset(DEBUG_LOCATION, "ConnectedSubchannel");
210
- }
211
-
212
- void StartWatch(
213
- grpc_pollset_set* interested_parties,
214
- OrphanablePtr<TransportConnectivityStateWatcher> watcher) override {
215
- grpc_transport_op* op = grpc_make_transport_op(nullptr);
216
- op->start_connectivity_watch = std::move(watcher);
217
- op->start_connectivity_watch_state = GRPC_CHANNEL_READY;
218
- op->bind_pollset_set = interested_parties;
219
- grpc_channel_element* elem =
220
- grpc_channel_stack_element(channel_stack_.get(), 0);
221
- elem->filter->start_transport_op(elem, op);
222
- }
223
-
224
- void Ping(absl::AnyInvocable<void(absl::Status)>) override {
225
- Crash("call v3 ping method called in legacy impl");
226
- }
227
-
228
- RefCountedPtr<UnstartedCallDestination> unstarted_call_destination()
229
- const override {
230
- Crash("call v3 unstarted_call_destination method called in legacy impl");
231
- }
232
-
233
- RefCountedPtr<Call> CreateCall(CreateCallArgs args,
234
- grpc_error_handle* error) override {
235
- const size_t allocation_size =
236
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(SubchannelCall)) +
237
- channel_stack_->call_stack_size;
238
- Arena* arena = args.arena;
239
- return RefCountedPtr<SubchannelCall>(
240
- new (arena->Alloc(allocation_size)) SubchannelCall(
241
- RefAsSubclass<LegacyConnectedSubchannel>(), args, error));
242
- }
243
-
244
- void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) override {
245
- grpc_transport_op* op = grpc_make_transport_op(nullptr);
246
- op->send_ping.on_initiate = on_initiate;
247
- op->send_ping.on_ack = on_ack;
248
- grpc_channel_element* elem =
249
- grpc_channel_stack_element(channel_stack_.get(), 0);
250
- elem->filter->start_transport_op(elem, op);
251
- }
252
-
253
- private:
254
- class SubchannelCall final : public Call {
255
- public:
256
- SubchannelCall(
257
- RefCountedPtr<LegacyConnectedSubchannel> connected_subchannel,
258
- CreateCallArgs args, grpc_error_handle* error);
259
-
260
- void StartTransportStreamOpBatch(
261
- grpc_transport_stream_op_batch* batch) override;
262
-
263
- void SetAfterCallStackDestroy(grpc_closure* closure) override;
264
-
265
- // When refcount drops to 0, destroys itself and the associated call stack,
266
- // but does NOT free the memory because it's in the call arena.
267
- void Unref() override;
268
- void Unref(const DebugLocation& location, const char* reason) override;
269
-
270
- private:
271
- // If channelz is enabled, intercepts recv_trailing so that we may check the
272
- // status and associate it to a subchannel.
273
- void MaybeInterceptRecvTrailingMetadata(
274
- grpc_transport_stream_op_batch* batch);
275
-
276
- static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
277
-
278
- // Interface of RefCounted<>.
279
- void IncrementRefCount() override;
280
- void IncrementRefCount(const DebugLocation& location,
281
- const char* reason) override;
282
-
283
- static void Destroy(void* arg, grpc_error_handle error);
284
-
285
- RefCountedPtr<LegacyConnectedSubchannel> connected_subchannel_;
286
- grpc_closure* after_call_stack_destroy_ = nullptr;
287
- // State needed to support channelz interception of recv trailing metadata.
288
- grpc_closure recv_trailing_metadata_ready_;
289
- grpc_closure* original_recv_trailing_metadata_ = nullptr;
290
- grpc_metadata_batch* recv_trailing_metadata_ = nullptr;
291
- Timestamp deadline_;
292
- };
293
-
294
- RefCountedPtr<channelz::SubchannelNode> channelz_node_;
295
- RefCountedPtr<grpc_channel_stack> channel_stack_;
296
- };
297
-
298
- //
299
- // OldSubchannel::LegacyConnectedSubchannel::SubchannelCall
300
- //
301
-
302
- OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::SubchannelCall(
303
- RefCountedPtr<LegacyConnectedSubchannel> connected_subchannel,
304
- CreateCallArgs args, grpc_error_handle* error)
305
- : connected_subchannel_(std::move(connected_subchannel)),
306
- deadline_(args.deadline) {
307
- grpc_call_stack* callstk = SUBCHANNEL_CALL_TO_CALL_STACK(this);
308
- const grpc_call_element_args call_args = {
309
- callstk, // call_stack
310
- nullptr, // server_transport_data
311
- args.start_time, // start_time
312
- args.deadline, // deadline
313
- args.arena, // arena
314
- args.call_combiner // call_combiner
315
- };
316
- *error = grpc_call_stack_init(connected_subchannel_->channel_stack_.get(), 1,
317
- SubchannelCall::Destroy, this, &call_args);
318
- if (GPR_UNLIKELY(!error->ok())) {
319
- LOG(ERROR) << "error: " << StatusToString(*error);
320
- return;
321
- }
322
- grpc_call_stack_set_pollset_or_pollset_set(callstk, args.pollent);
323
- if (connected_subchannel_->channelz_node_ != nullptr) {
324
- connected_subchannel_->channelz_node_->RecordCallStarted();
325
- }
326
- }
327
-
328
- void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::
329
- StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch) {
330
- MaybeInterceptRecvTrailingMetadata(batch);
331
- grpc_call_stack* call_stack = SUBCHANNEL_CALL_TO_CALL_STACK(this);
332
- grpc_call_element* top_elem = grpc_call_stack_element(call_stack, 0);
333
- GRPC_TRACE_LOG(channel, INFO)
334
- << "OP[" << top_elem->filter->name << ":" << top_elem
335
- << "]: " << grpc_transport_stream_op_batch_string(batch, false);
336
- top_elem->filter->start_transport_stream_op_batch(top_elem, batch);
337
- }
338
-
339
- void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::
340
- SetAfterCallStackDestroy(grpc_closure* closure) {
341
- GRPC_CHECK_EQ(after_call_stack_destroy_, nullptr);
342
- GRPC_CHECK_NE(closure, nullptr);
343
- after_call_stack_destroy_ = closure;
344
- }
345
-
346
- void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::Unref() {
347
- GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(this), "");
348
- }
349
-
350
- void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::Unref(
351
- const DebugLocation& /*location*/, const char* reason) {
352
- GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(this), reason);
353
- }
354
-
355
- void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::Destroy(
356
- void* arg, grpc_error_handle /*error*/) {
357
- SubchannelCall* self = static_cast<SubchannelCall*>(arg);
358
- // Keep some members before destroying the subchannel call.
359
- grpc_closure* after_call_stack_destroy = self->after_call_stack_destroy_;
360
- RefCountedPtr<ConnectedSubchannel> connected_subchannel =
361
- std::move(self->connected_subchannel_);
362
- // Destroy the subchannel call.
363
- self->~SubchannelCall();
364
- // Destroy the call stack. This should be after destroying the subchannel
365
- // call, because call->after_call_stack_destroy(), if not null, will free
366
- // the call arena.
367
- grpc_call_stack_destroy(SUBCHANNEL_CALL_TO_CALL_STACK(self), nullptr,
368
- after_call_stack_destroy);
369
- // Automatically reset connected_subchannel. This should be after destroying
370
- // the call stack, because destroying call stack needs access to the channel
371
- // stack.
372
- }
373
-
374
- void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::
375
- MaybeInterceptRecvTrailingMetadata(grpc_transport_stream_op_batch* batch) {
376
- // only intercept payloads with recv trailing.
377
- if (!batch->recv_trailing_metadata) return;
378
- // only add interceptor is channelz is enabled.
379
- if (connected_subchannel_->channelz_node_ == nullptr) return;
380
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_, RecvTrailingMetadataReady,
381
- this, grpc_schedule_on_exec_ctx);
382
- // save some state needed for the interception callback.
383
- GRPC_CHECK_EQ(recv_trailing_metadata_, nullptr);
384
- recv_trailing_metadata_ =
385
- batch->payload->recv_trailing_metadata.recv_trailing_metadata;
386
- original_recv_trailing_metadata_ =
387
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
388
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
389
- &recv_trailing_metadata_ready_;
390
- }
391
-
392
- namespace {
393
-
394
- // Sets *status based on the rest of the parameters.
395
- void GetCallStatus(grpc_status_code* status, Timestamp deadline,
396
- grpc_metadata_batch* md_batch, grpc_error_handle error) {
397
- if (!error.ok()) {
398
- grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr);
399
- } else {
400
- *status = md_batch->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
401
- }
402
- }
403
-
404
- } // namespace
405
-
406
- void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::
407
- RecvTrailingMetadataReady(void* arg, grpc_error_handle error) {
408
- SubchannelCall* call = static_cast<SubchannelCall*>(arg);
409
- GRPC_CHECK_NE(call->recv_trailing_metadata_, nullptr);
410
- grpc_status_code status = GRPC_STATUS_OK;
411
- GetCallStatus(&status, call->deadline_, call->recv_trailing_metadata_, error);
412
- channelz::SubchannelNode* channelz_node =
413
- call->connected_subchannel_->channelz_node_.get();
414
- GRPC_CHECK_NE(channelz_node, nullptr);
415
- if (status == GRPC_STATUS_OK) {
416
- channelz_node->RecordCallSucceeded();
417
- } else {
418
- channelz_node->RecordCallFailed();
419
- }
420
- Closure::Run(DEBUG_LOCATION, call->original_recv_trailing_metadata_, error);
421
- }
422
-
423
- void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::
424
- IncrementRefCount() {
425
- GRPC_CALL_STACK_REF(SUBCHANNEL_CALL_TO_CALL_STACK(this), "");
426
- }
427
-
428
- void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::
429
- IncrementRefCount(const DebugLocation& /*location*/, const char* reason) {
430
- GRPC_CALL_STACK_REF(SUBCHANNEL_CALL_TO_CALL_STACK(this), reason);
431
- }
432
-
433
- //
434
- // OldSubchannel::NewConnectedSubchannel
435
- //
436
-
437
- class OldSubchannel::NewConnectedSubchannel final : public ConnectedSubchannel {
438
- public:
439
- class TransportCallDestination final : public CallDestination {
440
- public:
441
- explicit TransportCallDestination(OrphanablePtr<ClientTransport> transport)
442
- : transport_(std::move(transport)) {}
443
-
444
- ClientTransport* transport() { return transport_.get(); }
445
-
446
- void HandleCall(CallHandler handler) override {
447
- transport_->StartCall(std::move(handler));
448
- }
449
-
450
- void Orphaned() override { transport_.reset(); }
451
-
452
- private:
453
- OrphanablePtr<ClientTransport> transport_;
454
- };
455
-
456
- NewConnectedSubchannel(
457
- RefCountedPtr<UnstartedCallDestination> call_destination,
458
- RefCountedPtr<TransportCallDestination> transport,
459
- const ChannelArgs& args)
460
- : ConnectedSubchannel(args),
461
- call_destination_(std::move(call_destination)),
462
- transport_(std::move(transport)) {}
463
-
464
- void StartWatch(
465
- grpc_pollset_set*,
466
- OrphanablePtr<TransportConnectivityStateWatcher> watcher) override {
467
- transport_->transport()->StartConnectivityWatch(std::move(watcher));
468
- }
469
-
470
- void Ping(absl::AnyInvocable<void(absl::Status)>) override {
471
- // TODO(ctiller): add new transport API for this in v3 stack
472
- Crash("not implemented");
473
- }
474
-
475
- RefCountedPtr<UnstartedCallDestination> unstarted_call_destination()
476
- const override {
477
- return call_destination_;
478
- }
479
-
480
- RefCountedPtr<Call> CreateCall(CreateCallArgs, grpc_error_handle*) override {
481
- Crash("legacy CreateCall() called on v3 impl");
482
- }
483
-
484
- void Ping(grpc_closure*, grpc_closure*) override {
485
- Crash("legacy ping method called in call v3 impl");
486
- }
487
-
488
- private:
489
- RefCountedPtr<UnstartedCallDestination> call_destination_;
490
- RefCountedPtr<TransportCallDestination> transport_;
491
- };
492
-
493
- //
494
- // OldSubchannel::ConnectedSubchannelStateWatcher
495
- //
496
-
497
- class OldSubchannel::ConnectedSubchannelStateWatcher final
498
- : public AsyncConnectivityStateWatcherInterface {
499
- public:
500
- // Must be instantiated while holding c->mu.
501
- explicit ConnectedSubchannelStateWatcher(WeakRefCountedPtr<OldSubchannel> c)
502
- : subchannel_(std::move(c)) {}
503
-
504
- ~ConnectedSubchannelStateWatcher() override {
505
- subchannel_.reset(DEBUG_LOCATION, "state_watcher");
506
- }
507
-
508
- private:
509
- void OnConnectivityStateChange(grpc_connectivity_state new_state,
510
- const absl::Status& status) override {
511
- OldSubchannel* c = subchannel_.get();
512
- {
513
- MutexLock lock(&c->mu_);
514
- // If we're either shutting down or have already seen this connection
515
- // failure (i.e., c->connected_subchannel_ is null), do nothing.
516
- //
517
- // The transport reports TRANSIENT_FAILURE upon GOAWAY but SHUTDOWN
518
- // upon connection close. So if the server gracefully shuts down,
519
- // we will see TRANSIENT_FAILURE followed by SHUTDOWN, but if not, we
520
- // will see only SHUTDOWN. Either way, we react to the first one we
521
- // see, ignoring anything that happens after that.
522
- if (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE ||
523
- new_state == GRPC_CHANNEL_SHUTDOWN) {
524
- RefCountedPtr<ConnectedSubchannel> connected_subchannel =
525
- std::move(c->connected_subchannel_);
526
- if (connected_subchannel == nullptr) return;
527
- GRPC_TRACE_LOG(subchannel, INFO)
528
- << "subchannel " << c << " " << c->key_.ToString()
529
- << ": Connected subchannel " << connected_subchannel.get()
530
- << " reports " << ConnectivityStateName(new_state) << ": "
531
- << status;
532
- // If the subchannel was created from an endpoint, then we report
533
- // TRANSIENT_FAILURE here instead of IDLE. The subchannel will never
534
- // leave TRANSIENT_FAILURE state, because there is no way for us to
535
- // establish a new connection.
536
- //
537
- // Otherwise, we report IDLE here. Note that even though we're not
538
- // reporting TRANSIENT_FAILURE, we pass along the status from the
539
- // transport, since it may have keepalive info attached to it that the
540
- // channel needs.
541
- // TODO(roth): Consider whether there's a cleaner way to propagate the
542
- // keepalive info.
543
- c->SetConnectivityStateLocked(c->created_from_endpoint_
544
- ? GRPC_CHANNEL_TRANSIENT_FAILURE
545
- : GRPC_CHANNEL_IDLE,
546
- status);
547
- c->backoff_.Reset();
548
- }
549
- }
550
- }
551
-
552
- WeakRefCountedPtr<OldSubchannel> subchannel_;
553
- };
554
-
555
- //
556
- // OldSubchannel::ConnectivityStateWatcherList
557
- //
558
-
559
- void OldSubchannel::ConnectivityStateWatcherList::AddWatcherLocked(
560
- RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
561
- watchers_.insert(std::move(watcher));
562
- }
563
-
564
- void OldSubchannel::ConnectivityStateWatcherList::RemoveWatcherLocked(
565
- ConnectivityStateWatcherInterface* watcher) {
566
- watchers_.erase(watcher);
567
- }
568
-
569
- void OldSubchannel::ConnectivityStateWatcherList::NotifyLocked(
570
- grpc_connectivity_state state, const absl::Status& status) {
571
- for (const auto& watcher : watchers_) {
572
- subchannel_->work_serializer_.Run([watcher, state, status]() {
573
- watcher->OnConnectivityStateChange(state, status);
574
- });
575
- }
576
- }
577
-
578
- void OldSubchannel::ConnectivityStateWatcherList::NotifyOnKeepaliveUpdateLocked(
579
- Duration new_keepalive_time) {
580
- for (const auto& watcher : watchers_) {
581
- subchannel_->work_serializer_.Run([watcher, new_keepalive_time]() {
582
- watcher->OnKeepaliveUpdate(new_keepalive_time);
583
- });
584
- }
585
- }
586
-
587
- uint32_t
588
- OldSubchannel::ConnectivityStateWatcherList::GetMaxConnectionsPerSubchannel()
589
- const {
590
- uint32_t max_connections_per_subchannel = 1;
591
- for (const auto& watcher : watchers_) {
592
- max_connections_per_subchannel =
593
- std::max(max_connections_per_subchannel,
594
- watcher->max_connections_per_subchannel());
595
- }
596
- return max_connections_per_subchannel;
597
- }
598
-
599
- //
600
- // OldSubchannel
601
- //
602
-
603
- namespace {
604
-
605
- BackOff::Options ParseArgsForBackoffValues(const ChannelArgs& args,
606
- Duration* min_connect_timeout) {
607
- const std::optional<Duration> fixed_reconnect_backoff =
608
- args.GetDurationFromIntMillis("grpc.testing.fixed_reconnect_backoff_ms");
609
- if (fixed_reconnect_backoff.has_value()) {
610
- const Duration backoff =
611
- std::max(Duration::Milliseconds(100), *fixed_reconnect_backoff);
612
- *min_connect_timeout = backoff;
613
- return BackOff::Options()
614
- .set_initial_backoff(backoff)
615
- .set_multiplier(1.0)
616
- .set_jitter(0.0)
617
- .set_max_backoff(backoff);
618
- }
619
- const Duration initial_backoff = std::max(
620
- Duration::Milliseconds(100),
621
- args.GetDurationFromIntMillis(GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS)
622
- .value_or(Duration::Seconds(
623
- GRPC_SUBCHANNEL_INITIAL_CONNECT_BACKOFF_SECONDS)));
624
- *min_connect_timeout =
625
- std::max(Duration::Milliseconds(100),
626
- args.GetDurationFromIntMillis(GRPC_ARG_MIN_RECONNECT_BACKOFF_MS)
627
- .value_or(Duration::Seconds(
628
- GRPC_SUBCHANNEL_RECONNECT_MIN_TIMEOUT_SECONDS)));
629
- const Duration max_backoff =
630
- std::max(Duration::Milliseconds(100),
631
- args.GetDurationFromIntMillis(GRPC_ARG_MAX_RECONNECT_BACKOFF_MS)
632
- .value_or(Duration::Seconds(
633
- GRPC_SUBCHANNEL_RECONNECT_MAX_BACKOFF_SECONDS)));
634
- return BackOff::Options()
635
- .set_initial_backoff(initial_backoff)
636
- .set_multiplier(GRPC_SUBCHANNEL_RECONNECT_BACKOFF_MULTIPLIER)
637
- .set_jitter(GRPC_SUBCHANNEL_RECONNECT_JITTER)
638
- .set_max_backoff(max_backoff);
639
- }
640
-
641
- } // namespace
642
-
643
- OldSubchannel::OldSubchannel(SubchannelKey key,
644
- OrphanablePtr<SubchannelConnector> connector,
645
- const ChannelArgs& args)
646
- : key_(std::move(key)),
647
- created_from_endpoint_(args.Contains(GRPC_ARG_SUBCHANNEL_ENDPOINT)),
648
- args_(args),
649
- pollset_set_(grpc_pollset_set_create()),
650
- connector_(std::move(connector)),
651
- watcher_list_(this),
652
- work_serializer_(args_.GetObjectRef<EventEngine>()),
653
- backoff_(ParseArgsForBackoffValues(args_, &min_connect_timeout_)),
654
- event_engine_(args_.GetObjectRef<EventEngine>()) {
655
- // A grpc_init is added here to ensure that grpc_shutdown does not happen
656
- // until the subchannel is destroyed. Subchannels can persist longer than
657
- // channels because they maybe reused/shared among multiple channels. As a
658
- // result the subchannel destruction happens asynchronously to channel
659
- // destruction. If the last channel destruction triggers a grpc_shutdown
660
- // before the last subchannel destruction, then there maybe race conditions
661
- // triggering segmentation faults. To prevent this issue, we call a
662
- // grpc_init here and a grpc_shutdown in the subchannel destructor.
663
- InitInternally();
664
- global_stats().IncrementClientSubchannelsCreated();
665
- GRPC_CLOSURE_INIT(&on_connecting_finished_, OnConnectingFinished, this,
666
- grpc_schedule_on_exec_ctx);
667
- // Check proxy mapper to determine address to connect to and channel
668
- // args to use.
669
- address_for_connect_ = CoreConfiguration::Get()
670
- .proxy_mapper_registry()
671
- .MapAddress(key_.address(), &args_)
672
- .value_or(key_.address());
673
- // Initialize channelz.
674
- const bool channelz_enabled = args_.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
675
- .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT);
676
- if (channelz_enabled) {
677
- const size_t channel_tracer_max_memory = Clamp(
678
- args_.GetInt(GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE)
679
- .value_or(GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT),
680
- 0, INT_MAX);
681
- channelz_node_ = MakeRefCounted<channelz::SubchannelNode>(
682
- grpc_sockaddr_to_uri(&key_.address())
683
- .value_or("<unknown address type>"),
684
- channel_tracer_max_memory);
685
- GRPC_CHANNELZ_LOG(channelz_node_) << "subchannel created";
686
- channelz_node_->SetChannelArgs(args_);
687
- args_ = args_.SetObject<channelz::BaseNode>(channelz_node_);
688
- }
689
- }
690
-
691
- OldSubchannel::~OldSubchannel() {
692
- if (channelz_node_ != nullptr) {
693
- GRPC_CHANNELZ_LOG(channelz_node_) << "Subchannel destroyed";
694
- channelz_node_->UpdateConnectivityState(GRPC_CHANNEL_SHUTDOWN);
695
- }
696
- connector_.reset();
697
- grpc_pollset_set_destroy(pollset_set_);
698
- // grpc_shutdown is called here because grpc_init is called in the ctor.
699
- ShutdownInternally();
700
- }
701
-
702
- RefCountedPtr<Subchannel> OldSubchannel::Create(
703
- OrphanablePtr<SubchannelConnector> connector,
704
- const grpc_resolved_address& address, const ChannelArgs& args) {
705
- SubchannelKey key(address, args);
706
- auto* subchannel_pool = args.GetObject<SubchannelPoolInterface>();
707
- GRPC_CHECK_NE(subchannel_pool, nullptr);
708
- RefCountedPtr<OldSubchannel> c =
709
- subchannel_pool->FindSubchannel(key).TakeAsSubclass<OldSubchannel>();
710
- if (c != nullptr) {
711
- return c;
712
- }
713
- c = MakeRefCounted<OldSubchannel>(std::move(key), std::move(connector), args);
714
- if (c->created_from_endpoint_) {
715
- // We don't interact with the subchannel pool in this case.
716
- // Instead, we unconditionally return the newly created subchannel.
717
- // Before returning, we explicitly trigger a connection attempt
718
- // by calling RequestConnection(), which sets the subchannel’s
719
- // connectivity state to CONNECTING.
720
- c->RequestConnection();
721
- return c;
722
- }
723
- // Try to register the subchannel before setting the subchannel pool.
724
- // Otherwise, in case of a registration race, unreffing c in
725
- // RegisterSubchannel() will cause c to be tried to be unregistered, while
726
- // its key maps to a different subchannel.
727
- RefCountedPtr<OldSubchannel> registered =
728
- subchannel_pool->RegisterSubchannel(c->key_, c)
729
- .TakeAsSubclass<OldSubchannel>();
730
- if (registered == c) c->subchannel_pool_ = subchannel_pool->Ref();
731
- return registered;
732
- }
733
-
734
- void OldSubchannel::ThrottleKeepaliveTime(Duration new_keepalive_time) {
735
- MutexLock lock(&mu_);
736
- ThrottleKeepaliveTimeLocked(new_keepalive_time);
737
- }
738
-
739
- void OldSubchannel::ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) {
740
- // Only update the value if the new keepalive time is larger.
741
- if (new_keepalive_time > keepalive_time_) {
742
- keepalive_time_ = new_keepalive_time;
743
- GRPC_TRACE_LOG(subchannel, INFO)
744
- << "subchannel " << this << " " << key_.ToString()
745
- << ": throttling keepalive time to " << new_keepalive_time;
746
- args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, new_keepalive_time.millis());
747
- }
748
- }
749
-
750
- channelz::SubchannelNode* OldSubchannel::channelz_node() {
751
- return channelz_node_.get();
752
- }
753
-
754
- void OldSubchannel::WatchConnectivityState(
755
- RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
756
- MutexLock lock(&mu_);
757
- grpc_pollset_set* interested_parties = watcher->interested_parties();
758
- if (interested_parties != nullptr) {
759
- grpc_pollset_set_add_pollset_set(pollset_set_, interested_parties);
760
- }
761
- work_serializer_.Run(
762
- [watcher, state = state_, status = status_]() {
763
- watcher->OnConnectivityStateChange(state, status);
764
- },
765
- DEBUG_LOCATION);
766
- watcher_list_.AddWatcherLocked(std::move(watcher));
767
- }
768
-
769
- void OldSubchannel::CancelConnectivityStateWatch(
770
- ConnectivityStateWatcherInterface* watcher) {
771
- MutexLock lock(&mu_);
772
- grpc_pollset_set* interested_parties = watcher->interested_parties();
773
- if (interested_parties != nullptr) {
774
- grpc_pollset_set_del_pollset_set(pollset_set_, interested_parties);
775
- }
776
- watcher_list_.RemoveWatcherLocked(watcher);
777
- }
778
-
779
- void OldSubchannel::RequestConnection() {
780
- MutexLock lock(&mu_);
781
- if (state_ == GRPC_CHANNEL_IDLE) {
782
- StartConnectingLocked();
783
- }
784
- }
785
-
786
- void OldSubchannel::ResetBackoff() {
787
- // Hold a ref to ensure cancellation and subsequent deletion of the closure
788
- // does not eliminate the last ref and destroy the Subchannel before the
789
- // method returns.
790
- auto self = WeakRef(DEBUG_LOCATION, "ResetBackoff");
791
- MutexLock lock(&mu_);
792
- backoff_.Reset();
793
- if (state_ == GRPC_CHANNEL_TRANSIENT_FAILURE &&
794
- event_engine_->Cancel(retry_timer_handle_)) {
795
- OnRetryTimerLocked();
796
- } else if (state_ == GRPC_CHANNEL_CONNECTING) {
797
- next_attempt_time_ = Timestamp::Now();
798
- }
799
- }
800
-
801
- void OldSubchannel::Orphaned() {
802
- // The subchannel_pool is only used once here in this subchannel, so the
803
- // access can be outside of the lock.
804
- if (subchannel_pool_ != nullptr) {
805
- subchannel_pool_->UnregisterSubchannel(key_, this);
806
- subchannel_pool_.reset();
807
- }
808
- MutexLock lock(&mu_);
809
- GRPC_CHECK(!shutdown_);
810
- shutdown_ = true;
811
- connector_.reset();
812
- connected_subchannel_.reset();
813
- }
814
-
815
- void OldSubchannel::GetOrAddDataProducer(
816
- UniqueTypeName type,
817
- std::function<void(DataProducerInterface**)> get_or_add) {
818
- MutexLock lock(&mu_);
819
- auto it = data_producer_map_.emplace(type, nullptr).first;
820
- get_or_add(&it->second);
821
- }
822
-
823
- void OldSubchannel::RemoveDataProducer(DataProducerInterface* data_producer) {
824
- MutexLock lock(&mu_);
825
- auto it = data_producer_map_.find(data_producer->type());
826
- if (it != data_producer_map_.end() && it->second == data_producer) {
827
- data_producer_map_.erase(it);
828
- }
829
- }
830
-
831
- // Note: Must be called with a state that is different from the current state.
832
- void OldSubchannel::SetConnectivityStateLocked(grpc_connectivity_state state,
833
- const absl::Status& status) {
834
- state_ = state;
835
- if (status.ok()) {
836
- status_ = status;
837
- } else {
838
- // Augment status message to include IP address.
839
- status_ = absl::Status(status.code(),
840
- absl::StrCat(grpc_sockaddr_to_uri(&key_.address())
841
- .value_or("<unknown address type>"),
842
- ": ", status.message()));
843
- status.ForEachPayload(
844
- [this](absl::string_view key, const absl::Cord& value)
845
- // Want to use ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_) here,
846
- // but that won't work, because we can't pass the lock
847
- // annotation through absl::Status::ForEachPayload().
848
- ABSL_NO_THREAD_SAFETY_ANALYSIS { status_.SetPayload(key, value); });
849
- }
850
- if (channelz_node_ != nullptr) {
851
- channelz_node_->UpdateConnectivityState(state);
852
- if (status.ok()) {
853
- GRPC_CHANNELZ_LOG(channelz_node_)
854
- << "Subchannel connectivity state changed to "
855
- << ConnectivityStateName(state);
856
- } else {
857
- GRPC_CHANNELZ_LOG(channelz_node_)
858
- << "Subchannel connectivity state changed to "
859
- << ConnectivityStateName(state) << ": " << status;
860
- }
861
- }
862
- // Notify watchers.
863
- watcher_list_.NotifyLocked(state, status_);
864
- }
865
-
866
- void OldSubchannel::OnRetryTimer() {
867
- MutexLock lock(&mu_);
868
- OnRetryTimerLocked();
869
- }
870
-
871
- void OldSubchannel::OnRetryTimerLocked() {
872
- if (shutdown_) return;
873
- GRPC_TRACE_LOG(subchannel, INFO)
874
- << "subchannel " << this << " " << key_.ToString()
875
- << ": backoff delay elapsed, reporting IDLE";
876
- SetConnectivityStateLocked(GRPC_CHANNEL_IDLE, absl::OkStatus());
877
- }
878
-
879
- void OldSubchannel::StartConnectingLocked() {
880
- // Set next attempt time.
881
- const Timestamp now = Timestamp::Now();
882
- const Timestamp min_deadline = now + min_connect_timeout_;
883
- next_attempt_time_ = now + backoff_.NextAttemptDelay();
884
- // Report CONNECTING.
885
- SetConnectivityStateLocked(GRPC_CHANNEL_CONNECTING, absl::OkStatus());
886
- // Start connection attempt.
887
- SubchannelConnector::Args args;
888
- args.address = &address_for_connect_;
889
- args.interested_parties = pollset_set_;
890
- args.deadline = std::max(next_attempt_time_, min_deadline);
891
- args.channel_args = args_;
892
- WeakRef(DEBUG_LOCATION, "Connect").release(); // Ref held by callback.
893
- connector_->Connect(args, &connecting_result_, &on_connecting_finished_);
894
- }
895
-
896
- void OldSubchannel::OnConnectingFinished(void* arg, grpc_error_handle error) {
897
- WeakRefCountedPtr<OldSubchannel> c(static_cast<OldSubchannel*>(arg));
898
- {
899
- MutexLock lock(&c->mu_);
900
- c->OnConnectingFinishedLocked(error);
901
- }
902
- c.reset(DEBUG_LOCATION, "Connect");
903
- }
102
+ namespace {
904
103
 
905
- void OldSubchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
906
- if (shutdown_) {
907
- connecting_result_.Reset();
908
- return;
909
- }
910
- // If we didn't get a transport or we fail to publish it, report
911
- // TRANSIENT_FAILURE and start the retry timer.
912
- // Note that if the connection attempt took longer than the backoff
913
- // time, then the timer will fire immediately, and we will quickly
914
- // transition back to IDLE.
915
- if (connecting_result_.transport == nullptr || !PublishTransportLocked()) {
916
- const Duration time_until_next_attempt =
917
- next_attempt_time_ - Timestamp::Now();
918
- GRPC_TRACE_LOG(subchannel, INFO)
919
- << "subchannel " << this << " " << key_.ToString()
920
- << ": connect failed (" << StatusToString(error) << ")"
921
- << (created_from_endpoint_
922
- ? ", no retry will be attempted (created from endpoint); "
923
- "remaining in TRANSIENT_FAILURE"
924
- : ", backing off for " +
925
- std::to_string(time_until_next_attempt.millis()) + " ms");
926
- SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
927
- grpc_error_to_absl_status(error));
928
- if (created_from_endpoint_) return;
929
- retry_timer_handle_ = event_engine_->RunAfter(
930
- time_until_next_attempt,
931
- [self = WeakRef(DEBUG_LOCATION, "RetryTimer")
932
- .TakeAsSubclass<OldSubchannel>()]() mutable {
933
- {
934
- ExecCtx exec_ctx;
935
- self->OnRetryTimer();
936
- // Subchannel deletion might require an active ExecCtx. So if
937
- // self.reset() is not called here, the WeakRefCountedPtr
938
- // destructor may run after the ExecCtx declared in the callback
939
- // is destroyed. Since subchannel may get destroyed when the
940
- // WeakRefCountedPtr destructor runs, it may not have an active
941
- // ExecCtx - thus leading to crashes.
942
- self.reset();
943
- }
944
- });
945
- }
946
- }
947
-
948
- bool OldSubchannel::PublishTransportLocked() {
949
- auto socket_node = connecting_result_.transport->GetSocketNode();
950
- if (connecting_result_.transport->filter_stack_transport() != nullptr) {
951
- // Construct channel stack.
952
- // Builder takes ownership of transport.
953
- ChannelStackBuilderImpl builder(
954
- "subchannel", GRPC_CLIENT_SUBCHANNEL,
955
- connecting_result_.channel_args.SetObject(
956
- std::exchange(connecting_result_.transport, nullptr)));
957
- if (!CoreConfiguration::Get().channel_init().CreateStack(&builder)) {
958
- return false;
959
- }
960
- absl::StatusOr<RefCountedPtr<grpc_channel_stack>> stack = builder.Build();
961
- if (!stack.ok()) {
962
- connecting_result_.Reset();
963
- LOG(ERROR) << "subchannel " << this << " " << key_.ToString()
964
- << ": error initializing subchannel stack: " << stack.status();
965
- return false;
966
- }
967
- connected_subchannel_ = MakeRefCounted<LegacyConnectedSubchannel>(
968
- std::move(*stack), args_, channelz_node_);
969
- } else {
970
- OrphanablePtr<ClientTransport> transport(
971
- std::exchange(connecting_result_.transport, nullptr)
972
- ->client_transport());
973
- InterceptionChainBuilder builder(
974
- connecting_result_.channel_args.SetObject(transport.get()));
975
- if (channelz_node_ != nullptr) {
976
- // TODO(ctiller): If/when we have a good way to access the subchannel
977
- // from a filter (maybe GetContext<Subchannel>?), consider replacing
978
- // these two hooks with a filter so that we can avoid storing two
979
- // separate refs to the channelz node in each connection.
980
- builder.AddOnClientInitialMetadata(
981
- [channelz_node = channelz_node_](ClientMetadata&) {
982
- channelz_node->RecordCallStarted();
983
- });
984
- builder.AddOnServerTrailingMetadata(
985
- [channelz_node = channelz_node_](ServerMetadata& metadata) {
986
- if (IsStatusOk(metadata)) {
987
- channelz_node->RecordCallSucceeded();
988
- } else {
989
- channelz_node->RecordCallFailed();
990
- }
991
- });
992
- }
993
- CoreConfiguration::Get().channel_init().AddToInterceptionChainBuilder(
994
- GRPC_CLIENT_SUBCHANNEL, builder);
995
- auto transport_destination =
996
- MakeRefCounted<NewConnectedSubchannel::TransportCallDestination>(
997
- std::move(transport));
998
- auto call_destination = builder.Build(transport_destination);
999
- if (!call_destination.ok()) {
1000
- connecting_result_.Reset();
1001
- LOG(ERROR) << "subchannel " << this << " " << key_.ToString()
1002
- << ": error initializing subchannel stack: "
1003
- << call_destination.status();
1004
- return false;
1005
- }
1006
- connected_subchannel_ = MakeRefCounted<NewConnectedSubchannel>(
1007
- std::move(*call_destination), std::move(transport_destination), args_);
1008
- }
1009
- connecting_result_.Reset();
1010
- // Publish.
1011
- GRPC_TRACE_LOG(subchannel, INFO)
1012
- << "subchannel " << this << " " << key_.ToString()
1013
- << ": new connected subchannel at " << connected_subchannel_.get();
1014
- if (channelz_node_ != nullptr) {
1015
- if (socket_node != nullptr) {
1016
- socket_node->AddParent(channelz_node_.get());
104
+ constexpr absl::string_view kSecurityLevelUnknown = "unknown";
105
+ constexpr absl::string_view kSecurityLevelNone = "none";
106
+ constexpr absl::string_view kSecurityLevelIntegrityOnly = "integrity_only";
107
+ constexpr absl::string_view kSecurityLevelPrivacyAndIntegrity =
108
+ "privacy_and_integrity";
109
+
110
+ absl::string_view GetSecurityLevelFromArgs(const ChannelArgs& args) {
111
+ auto auth_context = args.GetObject<grpc_auth_context>();
112
+ if (auth_context != nullptr) {
113
+ grpc_auth_property_iterator it = grpc_auth_context_find_properties_by_name(
114
+ auth_context, GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME);
115
+ const grpc_auth_property* prop = grpc_auth_property_iterator_next(&it);
116
+ if (prop != nullptr) {
117
+ absl::string_view tsi_level(prop->value, prop->value_length);
118
+ if (tsi_level == "TSI_SECURITY_NONE") {
119
+ return kSecurityLevelNone;
120
+ } else if (tsi_level == "TSI_INTEGRITY_ONLY") {
121
+ return kSecurityLevelIntegrityOnly;
122
+ } else if (tsi_level == "TSI_PRIVACY_AND_INTEGRITY") {
123
+ return kSecurityLevelPrivacyAndIntegrity;
124
+ }
1017
125
  }
1018
126
  }
1019
- connected_subchannel_->StartWatch(
1020
- pollset_set_, MakeOrphanable<ConnectedSubchannelStateWatcher>(
1021
- WeakRef(DEBUG_LOCATION, "state_watcher")
1022
- .TakeAsSubclass<OldSubchannel>()));
1023
- // Report initial state.
1024
- SetConnectivityStateLocked(GRPC_CHANNEL_READY, absl::Status());
1025
- return true;
1026
- }
1027
-
1028
- RefCountedPtr<Subchannel::Call> OldSubchannel::CreateCall(
1029
- CreateCallArgs args, grpc_error_handle* error) {
1030
- auto connected_subchannel = GetConnectedSubchannel();
1031
- if (connected_subchannel == nullptr) return nullptr;
1032
- return connected_subchannel->CreateCall(args, error);
127
+ return kSecurityLevelUnknown;
1033
128
  }
1034
129
 
1035
- RefCountedPtr<UnstartedCallDestination> OldSubchannel::call_destination() {
1036
- auto connected_subchannel = GetConnectedSubchannel();
1037
- if (connected_subchannel == nullptr) return nullptr;
1038
- return connected_subchannel->unstarted_call_destination();
1039
- }
130
+ } // namespace
1040
131
 
1041
- void OldSubchannel::Ping(absl::AnyInvocable<void(absl::Status)>) {
1042
- // TODO(ctiller): Implement
1043
- }
132
+ //
133
+ // Subchannel::Call
134
+ //
1044
135
 
1045
- absl::Status OldSubchannel::Ping(grpc_closure* on_initiate,
1046
- grpc_closure* on_ack) {
1047
- auto connected_subchannel = GetConnectedSubchannel();
1048
- if (connected_subchannel == nullptr) {
1049
- return absl::UnavailableError("no connection");
1050
- }
1051
- connected_subchannel->Ping(on_initiate, on_ack);
1052
- return absl::OkStatus();
136
+ RefCountedPtr<Subchannel::Call> Subchannel::Call::Ref() {
137
+ IncrementRefCount();
138
+ return RefCountedPtr<Subchannel::Call>(this);
1053
139
  }
1054
140
 
1055
- RefCountedPtr<OldSubchannel::ConnectedSubchannel>
1056
- OldSubchannel::GetConnectedSubchannel() {
1057
- MutexLock lock(&mu_);
1058
- return connected_subchannel_;
141
+ RefCountedPtr<Subchannel::Call> Subchannel::Call::Ref(
142
+ const DebugLocation& location, const char* reason) {
143
+ IncrementRefCount(location, reason);
144
+ return RefCountedPtr<Subchannel::Call>(this);
1059
145
  }
1060
146
 
1061
147
  //
1062
- // NewSubchannel::ConnectedSubchannel
148
+ // Subchannel::ConnectedSubchannel
1063
149
  //
1064
150
 
1065
- class NewSubchannel::ConnectedSubchannel
151
+ class Subchannel::ConnectedSubchannel
1066
152
  : public DualRefCounted<ConnectedSubchannel> {
1067
153
  public:
1068
154
  ~ConnectedSubchannel() override {
@@ -1070,7 +156,7 @@ class NewSubchannel::ConnectedSubchannel
1070
156
  }
1071
157
 
1072
158
  const ChannelArgs& args() const { return args_; }
1073
- NewSubchannel* subchannel() const { return subchannel_.get(); }
159
+ Subchannel* subchannel() const { return subchannel_.get(); }
1074
160
 
1075
161
  virtual void StartWatch(
1076
162
  grpc_pollset_set* interested_parties,
@@ -1086,6 +172,7 @@ class NewSubchannel::ConnectedSubchannel
1086
172
  grpc_error_handle* error) = 0;
1087
173
  virtual void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) = 0;
1088
174
 
175
+ absl::string_view security_level() const { return security_level_; }
1089
176
  // Returns true if there is quota for another RPC to start on this
1090
177
  // connection.
1091
178
  GRPC_MUST_USE_RESULT bool SetMaxConcurrentStreams(
@@ -1107,7 +194,7 @@ class NewSubchannel::ConnectedSubchannel
1107
194
  bool ReturnQuotaForRpc() { return stream_limiter_.ReturnQuotaForRpc(); }
1108
195
 
1109
196
  protected:
1110
- explicit ConnectedSubchannel(WeakRefCountedPtr<NewSubchannel> subchannel,
197
+ explicit ConnectedSubchannel(WeakRefCountedPtr<Subchannel> subchannel,
1111
198
  const ChannelArgs& args,
1112
199
  uint32_t max_concurrent_streams)
1113
200
  : DualRefCounted<ConnectedSubchannel>(
@@ -1115,23 +202,24 @@ class NewSubchannel::ConnectedSubchannel
1115
202
  : nullptr),
1116
203
  subchannel_(std::move(subchannel)),
1117
204
  args_(args),
205
+ security_level_(GetSecurityLevelFromArgs(args)),
1118
206
  stream_limiter_(max_concurrent_streams) {}
1119
207
 
1120
208
  private:
1121
- WeakRefCountedPtr<NewSubchannel> subchannel_;
209
+ WeakRefCountedPtr<Subchannel> subchannel_;
1122
210
  ChannelArgs args_;
211
+ const absl::string_view security_level_;
1123
212
  SubchannelStreamLimiter stream_limiter_;
1124
213
  };
1125
214
 
1126
215
  //
1127
- // NewSubchannel::LegacyConnectedSubchannel
216
+ // Subchannel::LegacyConnectedSubchannel
1128
217
  //
1129
218
 
1130
- class NewSubchannel::LegacyConnectedSubchannel final
1131
- : public ConnectedSubchannel {
219
+ class Subchannel::LegacyConnectedSubchannel final : public ConnectedSubchannel {
1132
220
  public:
1133
221
  LegacyConnectedSubchannel(
1134
- WeakRefCountedPtr<NewSubchannel> subchannel,
222
+ WeakRefCountedPtr<Subchannel> subchannel,
1135
223
  RefCountedPtr<grpc_channel_stack> channel_stack, const ChannelArgs& args,
1136
224
  RefCountedPtr<channelz::SubchannelNode> channelz_node,
1137
225
  uint32_t max_concurrent_streams)
@@ -1236,10 +324,10 @@ class NewSubchannel::LegacyConnectedSubchannel final
1236
324
  };
1237
325
 
1238
326
  //
1239
- // NewSubchannel::LegacyConnectedSubchannel::SubchannelCall
327
+ // Subchannel::LegacyConnectedSubchannel::SubchannelCall
1240
328
  //
1241
329
 
1242
- NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::SubchannelCall(
330
+ Subchannel::LegacyConnectedSubchannel::SubchannelCall::SubchannelCall(
1243
331
  RefCountedPtr<LegacyConnectedSubchannel> connected_subchannel,
1244
332
  CreateCallArgs args, grpc_error_handle* error)
1245
333
  : connected_subchannel_(std::move(connected_subchannel)),
@@ -1268,7 +356,7 @@ NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::SubchannelCall(
1268
356
  }
1269
357
  }
1270
358
 
1271
- void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
359
+ void Subchannel::LegacyConnectedSubchannel::SubchannelCall::
1272
360
  StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch) {
1273
361
  GRPC_TRACE_LOG(subchannel_call, INFO)
1274
362
  << "subchannel " << connected_subchannel_->subchannel() << " connection "
@@ -1283,23 +371,23 @@ void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
1283
371
  top_elem->filter->start_transport_stream_op_batch(top_elem, batch);
1284
372
  }
1285
373
 
1286
- void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
374
+ void Subchannel::LegacyConnectedSubchannel::SubchannelCall::
1287
375
  SetAfterCallStackDestroy(grpc_closure* closure) {
1288
376
  GRPC_CHECK_EQ(after_call_stack_destroy_, nullptr);
1289
377
  GRPC_CHECK_NE(closure, nullptr);
1290
378
  after_call_stack_destroy_ = closure;
1291
379
  }
1292
380
 
1293
- void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::Unref() {
381
+ void Subchannel::LegacyConnectedSubchannel::SubchannelCall::Unref() {
1294
382
  GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(this), "");
1295
383
  }
1296
384
 
1297
- void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::Unref(
385
+ void Subchannel::LegacyConnectedSubchannel::SubchannelCall::Unref(
1298
386
  const DebugLocation& /*location*/, const char* reason) {
1299
387
  GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(this), reason);
1300
388
  }
1301
389
 
1302
- void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::Destroy(
390
+ void Subchannel::LegacyConnectedSubchannel::SubchannelCall::Destroy(
1303
391
  void* arg, grpc_error_handle /*error*/) {
1304
392
  SubchannelCall* self = static_cast<SubchannelCall*>(arg);
1305
393
  // Just in case we didn't already take care of this in the
@@ -1321,7 +409,7 @@ void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::Destroy(
1321
409
  // stack.
1322
410
  }
1323
411
 
1324
- void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
412
+ void Subchannel::LegacyConnectedSubchannel::SubchannelCall::
1325
413
  MaybeInterceptRecvTrailingMetadata(grpc_transport_stream_op_batch* batch) {
1326
414
  // only intercept payloads with recv trailing.
1327
415
  if (!batch->recv_trailing_metadata) return;
@@ -1337,7 +425,21 @@ void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
1337
425
  &recv_trailing_metadata_ready_;
1338
426
  }
1339
427
 
1340
- void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
428
+ namespace {
429
+
430
+ // Sets *status based on the rest of the parameters.
431
+ void GetCallStatus(grpc_status_code* status, Timestamp deadline,
432
+ grpc_metadata_batch* md_batch, grpc_error_handle error) {
433
+ if (!error.ok()) {
434
+ grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr);
435
+ } else {
436
+ *status = md_batch->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
437
+ }
438
+ }
439
+
440
+ } // namespace
441
+
442
+ void Subchannel::LegacyConnectedSubchannel::SubchannelCall::
1341
443
  RecvTrailingMetadataReady(void* arg, grpc_error_handle error) {
1342
444
  SubchannelCall* call = static_cast<SubchannelCall*>(arg);
1343
445
  GRPC_CHECK_NE(call->recv_trailing_metadata_, nullptr);
@@ -1359,8 +461,7 @@ void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
1359
461
  Closure::Run(DEBUG_LOCATION, call->original_recv_trailing_metadata_, error);
1360
462
  }
1361
463
 
1362
- void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
1363
- MaybeReturnQuota() {
464
+ void Subchannel::LegacyConnectedSubchannel::SubchannelCall::MaybeReturnQuota() {
1364
465
  if (returned_quota_) return; // Already returned.
1365
466
  returned_quota_ = true;
1366
467
  GRPC_TRACE_LOG(subchannel_call, INFO)
@@ -1372,23 +473,23 @@ void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
1372
473
  }
1373
474
  }
1374
475
 
1375
- void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
476
+ void Subchannel::LegacyConnectedSubchannel::SubchannelCall::
1376
477
  IncrementRefCount() {
1377
478
  GRPC_CALL_STACK_REF(SUBCHANNEL_CALL_TO_CALL_STACK(this), "");
1378
479
  }
1379
480
 
1380
- void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::
1381
- IncrementRefCount(const DebugLocation& /*location*/, const char* reason) {
481
+ void Subchannel::LegacyConnectedSubchannel::SubchannelCall::IncrementRefCount(
482
+ const DebugLocation& /*location*/, const char* reason) {
1382
483
  GRPC_CALL_STACK_REF(SUBCHANNEL_CALL_TO_CALL_STACK(this), reason);
1383
484
  }
1384
485
 
1385
486
  //
1386
- // NewSubchannel::QueuedCall
487
+ // Subchannel::QueuedCall
1387
488
  //
1388
489
 
1389
- class NewSubchannel::QueuedCall final : public Subchannel::Call {
490
+ class Subchannel::QueuedCall final : public Subchannel::Call {
1390
491
  public:
1391
- QueuedCall(WeakRefCountedPtr<NewSubchannel> subchannel, CreateCallArgs args);
492
+ QueuedCall(WeakRefCountedPtr<Subchannel> subchannel, CreateCallArgs args);
1392
493
  ~QueuedCall() override;
1393
494
 
1394
495
  void StartTransportStreamOpBatch(
@@ -1407,10 +508,10 @@ class NewSubchannel::QueuedCall final : public Subchannel::Call {
1407
508
  }
1408
509
 
1409
510
  void ResumeOnConnectionLocked(ConnectedSubchannel* connected_subchannel)
1410
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&NewSubchannel::mu_);
511
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&Subchannel::mu_);
1411
512
 
1412
513
  void FailLocked(absl::Status status)
1413
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&NewSubchannel::mu_);
514
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&Subchannel::mu_);
1414
515
 
1415
516
  private:
1416
517
  // Allow RefCountedPtr<> to access IncrementRefCount().
@@ -1429,7 +530,7 @@ class NewSubchannel::QueuedCall final : public Subchannel::Call {
1429
530
  static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
1430
531
 
1431
532
  RefCount ref_count_;
1432
- WeakRefCountedPtr<NewSubchannel> subchannel_;
533
+ WeakRefCountedPtr<Subchannel> subchannel_;
1433
534
  CreateCallArgs args_;
1434
535
 
1435
536
  // Note that unlike in the resolver and LB code, the subchannel code
@@ -1438,7 +539,7 @@ class NewSubchannel::QueuedCall final : public Subchannel::Call {
1438
539
  // and try to resume it before buffered_call_ contains any batches.
1439
540
  // In that case, we will not be holding the call combiner here, so we
1440
541
  // need a mutex for synchronization.
1441
- Mutex mu_ ABSL_ACQUIRED_AFTER(NewSubchannel::mu_);
542
+ Mutex mu_ ABSL_ACQUIRED_AFTER(Subchannel::mu_);
1442
543
  grpc_closure* after_call_stack_destroy_ ABSL_GUARDED_BY(&mu_) = nullptr;
1443
544
  grpc_error_handle cancel_error_ ABSL_GUARDED_BY(&mu_);
1444
545
  BufferedCall buffered_call_ ABSL_GUARDED_BY(&mu_);
@@ -1451,7 +552,7 @@ class NewSubchannel::QueuedCall final : public Subchannel::Call {
1451
552
  // don't try to dequeue this call after it's been cancelled.
1452
553
  QueuedCall*& queue_entry_;
1453
554
 
1454
- Canceller* canceller_ ABSL_GUARDED_BY(&NewSubchannel::mu_);
555
+ Canceller* canceller_ ABSL_GUARDED_BY(&Subchannel::mu_);
1455
556
 
1456
557
  std::atomic<bool> is_retriable_{false};
1457
558
  grpc_closure recv_trailing_metadata_ready_;
@@ -1467,7 +568,7 @@ class NewSubchannel::QueuedCall final : public Subchannel::Call {
1467
568
  // the call is cancelled. In that case, it removes the call from the
1468
569
  // queue and fails any pending batches, thus immediately releasing the
1469
570
  // call combiner and allowing the cancellation to proceed.
1470
- class NewSubchannel::QueuedCall::Canceller final {
571
+ class Subchannel::QueuedCall::Canceller final {
1471
572
  public:
1472
573
  explicit Canceller(RefCountedPtr<QueuedCall> call) : call_(std::move(call)) {
1473
574
  GRPC_CLOSURE_INIT(&cancel_, CancelLocked, this, nullptr);
@@ -1479,7 +580,7 @@ class NewSubchannel::QueuedCall::Canceller final {
1479
580
  auto* self = static_cast<Canceller*>(arg);
1480
581
  bool cancelled = false;
1481
582
  {
1482
- MutexLock lock(&self->call_->subchannel_->mu_);
583
+ MutexLock lock(self->call_->subchannel_->mu_);
1483
584
  if (self->call_->canceller_ == self && !error.ok()) {
1484
585
  GRPC_TRACE_LOG(subchannel_call, INFO)
1485
586
  << "subchannel " << self->call_->subchannel_.get()
@@ -1491,7 +592,7 @@ class NewSubchannel::QueuedCall::Canceller final {
1491
592
  }
1492
593
  }
1493
594
  if (cancelled) {
1494
- MutexLock lock(&self->call_->mu_);
595
+ MutexLock lock(self->call_->mu_);
1495
596
  // Fail pending batches on the call.
1496
597
  self->call_->buffered_call_.Fail(
1497
598
  error, BufferedCall::YieldCallCombinerIfPendingBatchesFound);
@@ -1503,8 +604,8 @@ class NewSubchannel::QueuedCall::Canceller final {
1503
604
  grpc_closure cancel_;
1504
605
  };
1505
606
 
1506
- NewSubchannel::QueuedCall::QueuedCall(
1507
- WeakRefCountedPtr<NewSubchannel> subchannel, CreateCallArgs args)
607
+ Subchannel::QueuedCall::QueuedCall(WeakRefCountedPtr<Subchannel> subchannel,
608
+ CreateCallArgs args)
1508
609
  : subchannel_(std::move(subchannel)),
1509
610
  args_(args),
1510
611
  buffered_call_(args_.call_combiner, &subchannel_call_trace),
@@ -1515,7 +616,7 @@ NewSubchannel::QueuedCall::QueuedCall(
1515
616
  canceller_ = new Canceller(Ref().TakeAsSubclass<QueuedCall>());
1516
617
  }
1517
618
 
1518
- NewSubchannel::QueuedCall::~QueuedCall() {
619
+ Subchannel::QueuedCall::~QueuedCall() {
1519
620
  GRPC_TRACE_LOG(subchannel_call, INFO) << "subchannel " << subchannel_.get()
1520
621
  << ": destroying queued call " << this;
1521
622
  if (after_call_stack_destroy_ != nullptr) {
@@ -1523,10 +624,9 @@ NewSubchannel::QueuedCall::~QueuedCall() {
1523
624
  }
1524
625
  }
1525
626
 
1526
- void NewSubchannel::QueuedCall::SetAfterCallStackDestroy(
1527
- grpc_closure* closure) {
627
+ void Subchannel::QueuedCall::SetAfterCallStackDestroy(grpc_closure* closure) {
1528
628
  GRPC_CHECK_NE(closure, nullptr);
1529
- MutexLock lock(&mu_);
629
+ MutexLock lock(mu_);
1530
630
  if (subchannel_call_ != nullptr) {
1531
631
  subchannel_call_->SetAfterCallStackDestroy(closure);
1532
632
  } else {
@@ -1535,13 +635,13 @@ void NewSubchannel::QueuedCall::SetAfterCallStackDestroy(
1535
635
  }
1536
636
  }
1537
637
 
1538
- void NewSubchannel::QueuedCall::StartTransportStreamOpBatch(
638
+ void Subchannel::QueuedCall::StartTransportStreamOpBatch(
1539
639
  grpc_transport_stream_op_batch* batch) {
1540
640
  GRPC_TRACE_LOG(subchannel_call, INFO)
1541
641
  << "subchannel " << subchannel_.get() << " queued call " << this
1542
642
  << ": starting batch: "
1543
643
  << grpc_transport_stream_op_batch_string(batch, false);
1544
- MutexLock lock(&mu_);
644
+ MutexLock lock(mu_);
1545
645
  // If we already have a real subchannel call, pass the batch down to it.
1546
646
  if (subchannel_call_ != nullptr) {
1547
647
  subchannel_call_->StartTransportStreamOpBatch(batch);
@@ -1588,7 +688,7 @@ void NewSubchannel::QueuedCall::StartTransportStreamOpBatch(
1588
688
  }
1589
689
  }
1590
690
 
1591
- void NewSubchannel::QueuedCall::RecvTrailingMetadataReady(
691
+ void Subchannel::QueuedCall::RecvTrailingMetadataReady(
1592
692
  void* arg, grpc_error_handle error) {
1593
693
  QueuedCall* call = static_cast<QueuedCall*>(arg);
1594
694
  GRPC_CHECK_NE(call->recv_trailing_metadata_, nullptr);
@@ -1599,14 +699,14 @@ void NewSubchannel::QueuedCall::RecvTrailingMetadataReady(
1599
699
  Closure::Run(DEBUG_LOCATION, call->original_recv_trailing_metadata_, error);
1600
700
  }
1601
701
 
1602
- void NewSubchannel::QueuedCall::ResumeOnConnectionLocked(
702
+ void Subchannel::QueuedCall::ResumeOnConnectionLocked(
1603
703
  ConnectedSubchannel* connected_subchannel) {
1604
704
  GRPC_TRACE_LOG(subchannel_call, INFO)
1605
705
  << "subchannel " << subchannel_.get() << " queued call " << this
1606
706
  << ": resuming on connected_subchannel " << connected_subchannel;
1607
707
  canceller_ = nullptr;
1608
708
  queue_entry_ = nullptr;
1609
- MutexLock lock(&mu_);
709
+ MutexLock lock(mu_);
1610
710
  grpc_error_handle error;
1611
711
  subchannel_call_ = connected_subchannel->CreateCall(args_, &error);
1612
712
  if (after_call_stack_destroy_ != nullptr) {
@@ -1616,7 +716,7 @@ void NewSubchannel::QueuedCall::ResumeOnConnectionLocked(
1616
716
  // It's possible that the subchannel will get quota for the call
1617
717
  // and try to resume it before buffered_call_ contains any batches.
1618
718
  // In that case, we will not be holding the call combiner here, so we
1619
- // must not yeild it. That's why we use
719
+ // must not yield it. That's why we use
1620
720
  // YieldCallCombinerIfPendingBatchesFound here.
1621
721
  if (!error.ok()) {
1622
722
  buffered_call_.Fail(error,
@@ -1632,24 +732,24 @@ void NewSubchannel::QueuedCall::ResumeOnConnectionLocked(
1632
732
  }
1633
733
  }
1634
734
 
1635
- void NewSubchannel::QueuedCall::FailLocked(absl::Status status) {
735
+ void Subchannel::QueuedCall::FailLocked(absl::Status status) {
1636
736
  GRPC_TRACE_LOG(subchannel_call, INFO)
1637
737
  << "subchannel " << subchannel_.get() << " queued call " << this
1638
738
  << ": failing: " << status;
1639
739
  canceller_ = nullptr;
1640
740
  queue_entry_ = nullptr;
1641
741
  is_retriable_.store(true);
1642
- MutexLock lock(&mu_);
742
+ MutexLock lock(mu_);
1643
743
  cancel_error_ = status;
1644
744
  buffered_call_.Fail(status,
1645
745
  BufferedCall::YieldCallCombinerIfPendingBatchesFound);
1646
746
  }
1647
747
 
1648
748
  //
1649
- // NewSubchannel::NewConnectedSubchannel
749
+ // Subchannel::NewConnectedSubchannel
1650
750
  //
1651
751
 
1652
- class NewSubchannel::NewConnectedSubchannel final : public ConnectedSubchannel {
752
+ class Subchannel::NewConnectedSubchannel final : public ConnectedSubchannel {
1653
753
  public:
1654
754
  class TransportCallDestination final : public CallDestination {
1655
755
  public:
@@ -1669,7 +769,7 @@ class NewSubchannel::NewConnectedSubchannel final : public ConnectedSubchannel {
1669
769
  };
1670
770
 
1671
771
  NewConnectedSubchannel(
1672
- WeakRefCountedPtr<NewSubchannel> subchannel,
772
+ WeakRefCountedPtr<Subchannel> subchannel,
1673
773
  RefCountedPtr<UnstartedCallDestination> call_destination,
1674
774
  RefCountedPtr<TransportCallDestination> transport,
1675
775
  const ChannelArgs& args, uint32_t max_concurrent_streams)
@@ -1690,7 +790,8 @@ class NewSubchannel::NewConnectedSubchannel final : public ConnectedSubchannel {
1690
790
  }
1691
791
 
1692
792
  void Ping(absl::AnyInvocable<void(absl::Status)>) override {
1693
- // TODO(ctiller): add new transport API for this in v3 stack
793
+ // TODO(akshitpatel) : [PH2][P2][Client] : add new transport API for this in
794
+ // v3 stack
1694
795
  Crash("not implemented");
1695
796
  }
1696
797
 
@@ -1713,10 +814,10 @@ class NewSubchannel::NewConnectedSubchannel final : public ConnectedSubchannel {
1713
814
  };
1714
815
 
1715
816
  //
1716
- // NewSubchannel::ConnectionStateWatcher
817
+ // Subchannel::ConnectionStateWatcher
1717
818
  //
1718
819
 
1719
- class NewSubchannel::ConnectionStateWatcher final
820
+ class Subchannel::ConnectionStateWatcher final
1720
821
  : public Transport::StateWatcher {
1721
822
  public:
1722
823
  explicit ConnectionStateWatcher(
@@ -1725,12 +826,22 @@ class NewSubchannel::ConnectionStateWatcher final
1725
826
 
1726
827
  void OnDisconnect(absl::Status status,
1727
828
  DisconnectInfo disconnect_info) override {
1728
- NewSubchannel* subchannel = connected_subchannel_->subchannel();
829
+ Subchannel* subchannel = connected_subchannel_->subchannel();
1729
830
  GRPC_TRACE_LOG(subchannel, INFO)
1730
831
  << "subchannel " << subchannel << " " << subchannel->key_.ToString()
1731
832
  << ": connected subchannel " << connected_subchannel_.get()
1732
- << " reports disconnection: " << status;
1733
- MutexLock lock(&subchannel->mu_);
833
+ << " reports disconnection: " << status
834
+ << " (reason=" << disconnect_info.reason << ", http2_error_code="
835
+ << (disconnect_info.http2_error_code.has_value()
836
+ ? http2::Http2Status::DebugGetCode(
837
+ *disconnect_info.http2_error_code)
838
+ : "<unset>")
839
+ << ", keepalive_time="
840
+ << (disconnect_info.keepalive_time.has_value()
841
+ ? disconnect_info.keepalive_time->ToString()
842
+ : "<unset>")
843
+ << ")";
844
+ MutexLock lock(subchannel->mu_);
1734
845
  // Handle keepalive update.
1735
846
  if (disconnect_info.keepalive_time.has_value()) {
1736
847
  subchannel->ThrottleKeepaliveTimeLocked(*disconnect_info.keepalive_time);
@@ -1739,6 +850,50 @@ class NewSubchannel::ConnectionStateWatcher final
1739
850
  }
1740
851
  // Remove the connection from the subchannel's list of connections.
1741
852
  subchannel->RemoveConnectionLocked(connected_subchannel_.get());
853
+ if (subchannel->stats_plugin_group_ != nullptr) {
854
+ // Determine disconnect reason from DisconnectInfo
855
+ std::string disconnect_reason;
856
+ if (subchannel->shutdown_) {
857
+ disconnect_reason = "subchannel shutdown";
858
+ } else {
859
+ switch (disconnect_info.reason) {
860
+ case DisconnectReason::kGoaway:
861
+ if (disconnect_info.http2_error_code.has_value()) {
862
+ disconnect_reason = absl::StrCat(
863
+ "GOAWAY ", http2::Http2Status::DebugGetCode(
864
+ *disconnect_info.http2_error_code));
865
+ } else {
866
+ disconnect_reason = "GOAWAY UNKNOWN";
867
+ }
868
+ break;
869
+ case DisconnectReason::kConnectionReset:
870
+ disconnect_reason = "connection reset";
871
+ break;
872
+ case DisconnectReason::kConnectionTimedOut:
873
+ disconnect_reason = "connection timed out";
874
+ break;
875
+ case DisconnectReason::kConnectionAborted:
876
+ disconnect_reason = "connection aborted";
877
+ break;
878
+ case DisconnectReason::kSocketError:
879
+ disconnect_reason = "socket error";
880
+ break;
881
+ case DisconnectReason::kUnknown:
882
+ disconnect_reason = "unknown";
883
+ break;
884
+ }
885
+ }
886
+ auto scope = subchannel->stats_plugin_group_->GetCollectionScope();
887
+ SubchannelMetricsDomainDisconnections::GetStorage(
888
+ scope, subchannel->target_, subchannel->backend_service_,
889
+ subchannel->locality_, disconnect_reason)
890
+ ->Increment(SubchannelMetricsDomainDisconnections::kDisconnections);
891
+ SubchannelConnectionsDomainOpenConnections::GetStorage(
892
+ scope, subchannel->target_, connected_subchannel_->security_level(),
893
+ subchannel->backend_service_, subchannel->locality_)
894
+ ->Decrement(
895
+ SubchannelConnectionsDomainOpenConnections::kOpenConnections);
896
+ }
1742
897
  // If this was the last connection, then fail all queued RPCs and
1743
898
  // update the connectivity state.
1744
899
  if (subchannel->connections_.empty()) {
@@ -1756,7 +911,7 @@ class NewSubchannel::ConnectionStateWatcher final
1756
911
  uint32_t max_concurrent_streams,
1757
912
  std::unique_ptr<MaxConcurrentStreamsUpdateDoneHandle> /*on_done*/)
1758
913
  override {
1759
- NewSubchannel* subchannel = connected_subchannel_->subchannel();
914
+ Subchannel* subchannel = connected_subchannel_->subchannel();
1760
915
  GRPC_TRACE_LOG(subchannel, INFO)
1761
916
  << "subchannel " << subchannel << " " << subchannel->key_.ToString()
1762
917
  << ": connection " << connected_subchannel_.get()
@@ -1776,20 +931,20 @@ class NewSubchannel::ConnectionStateWatcher final
1776
931
  };
1777
932
 
1778
933
  //
1779
- // NewSubchannel::ConnectivityStateWatcherList
934
+ // Subchannel::ConnectivityStateWatcherList
1780
935
  //
1781
936
 
1782
- void NewSubchannel::ConnectivityStateWatcherList::AddWatcherLocked(
937
+ void Subchannel::ConnectivityStateWatcherList::AddWatcherLocked(
1783
938
  RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
1784
939
  watchers_.insert(std::move(watcher));
1785
940
  }
1786
941
 
1787
- void NewSubchannel::ConnectivityStateWatcherList::RemoveWatcherLocked(
942
+ void Subchannel::ConnectivityStateWatcherList::RemoveWatcherLocked(
1788
943
  ConnectivityStateWatcherInterface* watcher) {
1789
944
  watchers_.erase(watcher);
1790
945
  }
1791
946
 
1792
- void NewSubchannel::ConnectivityStateWatcherList::NotifyLocked(
947
+ void Subchannel::ConnectivityStateWatcherList::NotifyLocked(
1793
948
  grpc_connectivity_state state, const absl::Status& status) {
1794
949
  for (const auto& watcher : watchers_) {
1795
950
  subchannel_->work_serializer_.Run([watcher, state, status]() {
@@ -1798,7 +953,7 @@ void NewSubchannel::ConnectivityStateWatcherList::NotifyLocked(
1798
953
  }
1799
954
  }
1800
955
 
1801
- void NewSubchannel::ConnectivityStateWatcherList::NotifyOnKeepaliveUpdateLocked(
956
+ void Subchannel::ConnectivityStateWatcherList::NotifyOnKeepaliveUpdateLocked(
1802
957
  Duration new_keepalive_time) {
1803
958
  for (const auto& watcher : watchers_) {
1804
959
  subchannel_->work_serializer_.Run([watcher, new_keepalive_time]() {
@@ -1808,7 +963,7 @@ void NewSubchannel::ConnectivityStateWatcherList::NotifyOnKeepaliveUpdateLocked(
1808
963
  }
1809
964
 
1810
965
  uint32_t
1811
- NewSubchannel::ConnectivityStateWatcherList::GetMaxConnectionsPerSubchannel()
966
+ Subchannel::ConnectivityStateWatcherList::GetMaxConnectionsPerSubchannel()
1812
967
  const {
1813
968
  uint32_t max_connections_per_subchannel = 1;
1814
969
  for (const auto& watcher : watchers_) {
@@ -1820,13 +975,56 @@ NewSubchannel::ConnectivityStateWatcherList::GetMaxConnectionsPerSubchannel()
1820
975
  }
1821
976
 
1822
977
  //
1823
- // NewSubchannel
978
+ // Subchannel
1824
979
  //
1825
980
 
1826
- NewSubchannel::NewSubchannel(SubchannelKey key,
1827
- OrphanablePtr<SubchannelConnector> connector,
1828
- const ChannelArgs& args)
1829
- : key_(std::move(key)),
981
+ namespace {
982
+
983
+ BackOff::Options ParseArgsForBackoffValues(const ChannelArgs& args,
984
+ Duration* min_connect_timeout) {
985
+ const std::optional<Duration> fixed_reconnect_backoff =
986
+ args.GetDurationFromIntMillis("grpc.testing.fixed_reconnect_backoff_ms");
987
+ if (fixed_reconnect_backoff.has_value()) {
988
+ const Duration backoff =
989
+ std::max(Duration::Milliseconds(100), *fixed_reconnect_backoff);
990
+ *min_connect_timeout = backoff;
991
+ return BackOff::Options()
992
+ .set_initial_backoff(backoff)
993
+ .set_multiplier(1.0)
994
+ .set_jitter(0.0)
995
+ .set_max_backoff(backoff);
996
+ }
997
+ const Duration initial_backoff = std::max(
998
+ Duration::Milliseconds(100),
999
+ args.GetDurationFromIntMillis(GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS)
1000
+ .value_or(Duration::Seconds(
1001
+ GRPC_SUBCHANNEL_INITIAL_CONNECT_BACKOFF_SECONDS)));
1002
+ *min_connect_timeout =
1003
+ std::max(Duration::Milliseconds(100),
1004
+ args.GetDurationFromIntMillis(GRPC_ARG_MIN_RECONNECT_BACKOFF_MS)
1005
+ .value_or(Duration::Seconds(
1006
+ GRPC_SUBCHANNEL_RECONNECT_MIN_TIMEOUT_SECONDS)));
1007
+ const Duration max_backoff =
1008
+ std::max(Duration::Milliseconds(100),
1009
+ args.GetDurationFromIntMillis(GRPC_ARG_MAX_RECONNECT_BACKOFF_MS)
1010
+ .value_or(Duration::Seconds(
1011
+ GRPC_SUBCHANNEL_RECONNECT_MAX_BACKOFF_SECONDS)));
1012
+ return BackOff::Options()
1013
+ .set_initial_backoff(initial_backoff)
1014
+ .set_multiplier(GRPC_SUBCHANNEL_RECONNECT_BACKOFF_MULTIPLIER)
1015
+ .set_jitter(GRPC_SUBCHANNEL_RECONNECT_JITTER)
1016
+ .set_max_backoff(max_backoff);
1017
+ }
1018
+
1019
+ } // namespace
1020
+
1021
+ Subchannel::Subchannel(SubchannelKey key,
1022
+ OrphanablePtr<SubchannelConnector> connector,
1023
+ const ChannelArgs& args)
1024
+ : DualRefCounted<Subchannel>(GRPC_TRACE_FLAG_ENABLED(subchannel_refcount)
1025
+ ? "Subchannel"
1026
+ : nullptr),
1027
+ key_(std::move(key)),
1830
1028
  created_from_endpoint_(args.Contains(GRPC_ARG_SUBCHANNEL_ENDPOINT)),
1831
1029
  args_(args),
1832
1030
  pollset_set_(grpc_pollset_set_create()),
@@ -1834,7 +1032,17 @@ NewSubchannel::NewSubchannel(SubchannelKey key,
1834
1032
  watcher_list_(this),
1835
1033
  work_serializer_(args_.GetObjectRef<EventEngine>()),
1836
1034
  backoff_(ParseArgsForBackoffValues(args_, &min_connect_timeout_)),
1837
- event_engine_(args_.GetObjectRef<EventEngine>()) {
1035
+ event_engine_(args_.GetObjectRef<EventEngine>()),
1036
+ stats_plugin_group_(
1037
+ args_.GetObjectRef<GlobalStatsPluginRegistry::StatsPluginGroup>()),
1038
+ target_(args_.GetString(GRPC_ARG_DEFAULT_AUTHORITY).value_or("")),
1039
+ backend_service_(args_.GetString(GRPC_ARG_BACKEND_SERVICE).value_or("")),
1040
+ locality_(args_.GetString(GRPC_ARG_LB_LOCALITY).value_or("")) {
1041
+ if (stats_plugin_group_ != nullptr) {
1042
+ attempts_storage_ = SubchannelMetricsDomainAttempts::GetStorage(
1043
+ stats_plugin_group_->GetCollectionScope(), target_, backend_service_,
1044
+ locality_);
1045
+ }
1838
1046
  GRPC_TRACE_LOG(subchannel, INFO)
1839
1047
  << "subchannel " << this << " " << key_.ToString() << ": created";
1840
1048
  // A grpc_init is added here to ensure that grpc_shutdown does not happen
@@ -1873,7 +1081,7 @@ NewSubchannel::NewSubchannel(SubchannelKey key,
1873
1081
  }
1874
1082
  }
1875
1083
 
1876
- NewSubchannel::~NewSubchannel() {
1084
+ Subchannel::~Subchannel() {
1877
1085
  if (channelz_node_ != nullptr) {
1878
1086
  GRPC_CHANNELZ_LOG(channelz_node_) << "Subchannel destroyed";
1879
1087
  channelz_node_->UpdateConnectivityState(GRPC_CHANNEL_SHUTDOWN);
@@ -1884,18 +1092,18 @@ NewSubchannel::~NewSubchannel() {
1884
1092
  ShutdownInternally();
1885
1093
  }
1886
1094
 
1887
- RefCountedPtr<Subchannel> NewSubchannel::Create(
1095
+ RefCountedPtr<Subchannel> Subchannel::Create(
1888
1096
  OrphanablePtr<SubchannelConnector> connector,
1889
1097
  const grpc_resolved_address& address, const ChannelArgs& args) {
1890
1098
  SubchannelKey key(address, args);
1891
1099
  auto* subchannel_pool = args.GetObject<SubchannelPoolInterface>();
1892
1100
  GRPC_CHECK_NE(subchannel_pool, nullptr);
1893
- RefCountedPtr<NewSubchannel> c =
1894
- subchannel_pool->FindSubchannel(key).TakeAsSubclass<NewSubchannel>();
1101
+ RefCountedPtr<Subchannel> c =
1102
+ subchannel_pool->FindSubchannel(key).TakeAsSubclass<Subchannel>();
1895
1103
  if (c != nullptr) {
1896
1104
  return c;
1897
1105
  }
1898
- c = MakeRefCounted<NewSubchannel>(std::move(key), std::move(connector), args);
1106
+ c = MakeRefCounted<Subchannel>(std::move(key), std::move(connector), args);
1899
1107
  if (c->created_from_endpoint_) {
1900
1108
  // We don't interact with the subchannel pool in this case.
1901
1109
  // Instead, we unconditionally return the newly created subchannel.
@@ -1909,19 +1117,19 @@ RefCountedPtr<Subchannel> NewSubchannel::Create(
1909
1117
  // Otherwise, in case of a registration race, unreffing c in
1910
1118
  // RegisterSubchannel() will cause c to be tried to be unregistered, while
1911
1119
  // its key maps to a different subchannel.
1912
- RefCountedPtr<NewSubchannel> registered =
1120
+ RefCountedPtr<Subchannel> registered =
1913
1121
  subchannel_pool->RegisterSubchannel(c->key_, c)
1914
- .TakeAsSubclass<NewSubchannel>();
1122
+ .TakeAsSubclass<Subchannel>();
1915
1123
  if (registered == c) c->subchannel_pool_ = subchannel_pool->Ref();
1916
1124
  return registered;
1917
1125
  }
1918
1126
 
1919
- void NewSubchannel::ThrottleKeepaliveTime(Duration new_keepalive_time) {
1920
- MutexLock lock(&mu_);
1127
+ void Subchannel::ThrottleKeepaliveTime(Duration new_keepalive_time) {
1128
+ MutexLock lock(mu_);
1921
1129
  ThrottleKeepaliveTimeLocked(new_keepalive_time);
1922
1130
  }
1923
1131
 
1924
- void NewSubchannel::ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) {
1132
+ void Subchannel::ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) {
1925
1133
  // Only update the value if the new keepalive time is larger.
1926
1134
  if (new_keepalive_time > keepalive_time_) {
1927
1135
  keepalive_time_ = new_keepalive_time;
@@ -1932,13 +1140,13 @@ void NewSubchannel::ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) {
1932
1140
  }
1933
1141
  }
1934
1142
 
1935
- channelz::SubchannelNode* NewSubchannel::channelz_node() {
1143
+ channelz::SubchannelNode* Subchannel::channelz_node() {
1936
1144
  return channelz_node_.get();
1937
1145
  }
1938
1146
 
1939
- void NewSubchannel::WatchConnectivityState(
1147
+ void Subchannel::WatchConnectivityState(
1940
1148
  RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
1941
- MutexLock lock(&mu_);
1149
+ MutexLock lock(mu_);
1942
1150
  grpc_pollset_set* interested_parties = watcher->interested_parties();
1943
1151
  if (interested_parties != nullptr) {
1944
1152
  grpc_pollset_set_add_pollset_set(pollset_set_, interested_parties);
@@ -1954,9 +1162,9 @@ void NewSubchannel::WatchConnectivityState(
1954
1162
  RetryQueuedRpcsLocked();
1955
1163
  }
1956
1164
 
1957
- void NewSubchannel::CancelConnectivityStateWatch(
1165
+ void Subchannel::CancelConnectivityStateWatch(
1958
1166
  ConnectivityStateWatcherInterface* watcher) {
1959
- MutexLock lock(&mu_);
1167
+ MutexLock lock(mu_);
1960
1168
  grpc_pollset_set* interested_parties = watcher->interested_parties();
1961
1169
  if (interested_parties != nullptr) {
1962
1170
  grpc_pollset_set_del_pollset_set(pollset_set_, interested_parties);
@@ -1964,24 +1172,24 @@ void NewSubchannel::CancelConnectivityStateWatch(
1964
1172
  watcher_list_.RemoveWatcherLocked(watcher);
1965
1173
  }
1966
1174
 
1967
- void NewSubchannel::RequestConnection() {
1175
+ void Subchannel::RequestConnection() {
1968
1176
  GRPC_TRACE_LOG(subchannel, INFO)
1969
1177
  << "subchannel " << this << " " << key_.ToString()
1970
1178
  << ": RequestConnection()";
1971
- MutexLock lock(&mu_);
1179
+ MutexLock lock(mu_);
1972
1180
  if (state_ == GRPC_CHANNEL_IDLE) {
1973
1181
  StartConnectingLocked();
1974
1182
  }
1975
1183
  }
1976
1184
 
1977
- void NewSubchannel::ResetBackoff() {
1185
+ void Subchannel::ResetBackoff() {
1978
1186
  GRPC_TRACE_LOG(subchannel, INFO)
1979
1187
  << "subchannel " << this << " " << key_.ToString() << ": ResetBackoff()";
1980
1188
  // Hold a ref to ensure cancellation and subsequent deletion of the closure
1981
1189
  // does not eliminate the last ref and destroy the Subchannel before the
1982
1190
  // method returns.
1983
1191
  auto self = WeakRef(DEBUG_LOCATION, "ResetBackoff");
1984
- MutexLock lock(&mu_);
1192
+ MutexLock lock(mu_);
1985
1193
  backoff_.Reset();
1986
1194
  if (retry_timer_handle_.has_value() &&
1987
1195
  event_engine_->Cancel(*retry_timer_handle_)) {
@@ -1991,7 +1199,7 @@ void NewSubchannel::ResetBackoff() {
1991
1199
  }
1992
1200
  }
1993
1201
 
1994
- void NewSubchannel::Orphaned() {
1202
+ void Subchannel::Orphaned() {
1995
1203
  GRPC_TRACE_LOG(subchannel, INFO)
1996
1204
  << "subchannel " << this << " " << key_.ToString() << ": shutting down";
1997
1205
  // The subchannel_pool is only used once here in this subchannel, so the
@@ -2000,7 +1208,7 @@ void NewSubchannel::Orphaned() {
2000
1208
  subchannel_pool_->UnregisterSubchannel(key_, this);
2001
1209
  subchannel_pool_.reset();
2002
1210
  }
2003
- MutexLock lock(&mu_);
1211
+ MutexLock lock(mu_);
2004
1212
  GRPC_CHECK(!shutdown_);
2005
1213
  shutdown_ = true;
2006
1214
  connector_.reset();
@@ -2010,16 +1218,16 @@ void NewSubchannel::Orphaned() {
2010
1218
  }
2011
1219
  }
2012
1220
 
2013
- void NewSubchannel::GetOrAddDataProducer(
1221
+ void Subchannel::GetOrAddDataProducer(
2014
1222
  UniqueTypeName type,
2015
1223
  std::function<void(DataProducerInterface**)> get_or_add) {
2016
- MutexLock lock(&mu_);
1224
+ MutexLock lock(mu_);
2017
1225
  auto it = data_producer_map_.emplace(type, nullptr).first;
2018
1226
  get_or_add(&it->second);
2019
1227
  }
2020
1228
 
2021
- void NewSubchannel::RemoveDataProducer(DataProducerInterface* data_producer) {
2022
- MutexLock lock(&mu_);
1229
+ void Subchannel::RemoveDataProducer(DataProducerInterface* data_producer) {
1230
+ MutexLock lock(mu_);
2023
1231
  auto it = data_producer_map_.find(data_producer->type());
2024
1232
  if (it != data_producer_map_.end() && it->second == data_producer) {
2025
1233
  data_producer_map_.erase(it);
@@ -2037,12 +1245,12 @@ absl::Status PrependAddressToStatusMessage(const SubchannelKey& key,
2037
1245
 
2038
1246
  } // namespace
2039
1247
 
2040
- void NewSubchannel::SetLastFailureLocked(const absl::Status& status) {
1248
+ void Subchannel::SetLastFailureLocked(const absl::Status& status) {
2041
1249
  // Augment status message to include IP address.
2042
1250
  last_failure_status_ = PrependAddressToStatusMessage(key_, status);
2043
1251
  }
2044
1252
 
2045
- grpc_connectivity_state NewSubchannel::ComputeConnectivityStateLocked() const {
1253
+ grpc_connectivity_state Subchannel::ComputeConnectivityStateLocked() const {
2046
1254
  // If we have at least one connection, report READY.
2047
1255
  if (!connections_.empty()) return GRPC_CHANNEL_READY;
2048
1256
  // If we were created from an endpoint and the connection is closed,
@@ -2059,13 +1267,13 @@ grpc_connectivity_state NewSubchannel::ComputeConnectivityStateLocked() const {
2059
1267
  return GRPC_CHANNEL_IDLE;
2060
1268
  }
2061
1269
 
2062
- absl::Status NewSubchannel::ConnectivityStatusToReportLocked() const {
1270
+ absl::Status Subchannel::ConnectivityStatusToReportLocked() const {
2063
1271
  // Report status in TRANSIENT_FAILURE state.
2064
1272
  if (state_ == GRPC_CHANNEL_TRANSIENT_FAILURE) return last_failure_status_;
2065
1273
  return absl::OkStatus();
2066
1274
  }
2067
1275
 
2068
- void NewSubchannel::MaybeUpdateConnectivityStateLocked() {
1276
+ void Subchannel::MaybeUpdateConnectivityStateLocked() {
2069
1277
  // Determine what state we are in.
2070
1278
  grpc_connectivity_state new_state = ComputeConnectivityStateLocked();
2071
1279
  // If we're already in that state, no need to report a change.
@@ -2093,7 +1301,7 @@ void NewSubchannel::MaybeUpdateConnectivityStateLocked() {
2093
1301
  watcher_list_.NotifyLocked(new_state, status);
2094
1302
  }
2095
1303
 
2096
- bool NewSubchannel::RemoveConnectionLocked(
1304
+ bool Subchannel::RemoveConnectionLocked(
2097
1305
  ConnectedSubchannel* connected_subchannel) {
2098
1306
  for (auto it = connections_.begin(); it != connections_.end(); ++it) {
2099
1307
  if (*it == connected_subchannel) {
@@ -2107,12 +1315,12 @@ bool NewSubchannel::RemoveConnectionLocked(
2107
1315
  return false;
2108
1316
  }
2109
1317
 
2110
- void NewSubchannel::OnRetryTimer() {
2111
- MutexLock lock(&mu_);
1318
+ void Subchannel::OnRetryTimer() {
1319
+ MutexLock lock(mu_);
2112
1320
  OnRetryTimerLocked();
2113
1321
  }
2114
1322
 
2115
- void NewSubchannel::OnRetryTimerLocked() {
1323
+ void Subchannel::OnRetryTimerLocked() {
2116
1324
  retry_timer_handle_.reset();
2117
1325
  if (shutdown_) return;
2118
1326
  GRPC_TRACE_LOG(subchannel, INFO)
@@ -2122,7 +1330,7 @@ void NewSubchannel::OnRetryTimerLocked() {
2122
1330
  MaybeUpdateConnectivityStateLocked();
2123
1331
  }
2124
1332
 
2125
- void NewSubchannel::StartConnectingLocked() {
1333
+ void Subchannel::StartConnectingLocked() {
2126
1334
  // Set next attempt time.
2127
1335
  const Timestamp now = Timestamp::Now();
2128
1336
  const Timestamp min_deadline = now + min_connect_timeout_;
@@ -2141,16 +1349,16 @@ void NewSubchannel::StartConnectingLocked() {
2141
1349
  connector_->Connect(args, &connecting_result_, &on_connecting_finished_);
2142
1350
  }
2143
1351
 
2144
- void NewSubchannel::OnConnectingFinished(void* arg, grpc_error_handle error) {
2145
- WeakRefCountedPtr<NewSubchannel> c(static_cast<NewSubchannel*>(arg));
1352
+ void Subchannel::OnConnectingFinished(void* arg, grpc_error_handle error) {
1353
+ WeakRefCountedPtr<Subchannel> c(static_cast<Subchannel*>(arg));
2146
1354
  {
2147
- MutexLock lock(&c->mu_);
1355
+ MutexLock lock(c->mu_);
2148
1356
  c->OnConnectingFinishedLocked(error);
2149
1357
  }
2150
1358
  c.reset(DEBUG_LOCATION, "Connect");
2151
1359
  }
2152
1360
 
2153
- void NewSubchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
1361
+ void Subchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
2154
1362
  connection_attempt_in_flight_ = false;
2155
1363
  if (shutdown_) {
2156
1364
  connecting_result_.Reset();
@@ -2172,11 +1380,16 @@ void NewSubchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
2172
1380
  "remaining in TRANSIENT_FAILURE"
2173
1381
  : ", backing off for " +
2174
1382
  std::to_string(time_until_next_attempt.millis()) + " ms");
1383
+ // Record failed connection attempt
1384
+ if (attempts_storage_ != nullptr) {
1385
+ attempts_storage_->Increment(
1386
+ SubchannelMetricsDomainAttempts::kConnectionAttemptsFailed);
1387
+ }
2175
1388
  if (!created_from_endpoint_) {
2176
1389
  retry_timer_handle_ = event_engine_->RunAfter(
2177
1390
  time_until_next_attempt,
2178
1391
  [self = WeakRef(DEBUG_LOCATION, "RetryTimer")
2179
- .TakeAsSubclass<NewSubchannel>()]() mutable {
1392
+ .TakeAsSubclass<Subchannel>()]() mutable {
2180
1393
  {
2181
1394
  ExecCtx exec_ctx;
2182
1395
  self->OnRetryTimer();
@@ -2190,12 +1403,12 @@ void NewSubchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
2190
1403
  }
2191
1404
  });
2192
1405
  }
2193
- SetLastFailureLocked(grpc_error_to_absl_status(error));
1406
+ SetLastFailureLocked(error);
2194
1407
  MaybeUpdateConnectivityStateLocked();
2195
1408
  }
2196
1409
  }
2197
1410
 
2198
- bool NewSubchannel::PublishTransportLocked() {
1411
+ bool Subchannel::PublishTransportLocked() {
2199
1412
  auto socket_node = connecting_result_.transport->GetSocketNode();
2200
1413
  Transport* transport = connecting_result_.transport;
2201
1414
  RefCountedPtr<ConnectedSubchannel> connected_subchannel;
@@ -2217,8 +1430,9 @@ bool NewSubchannel::PublishTransportLocked() {
2217
1430
  return false;
2218
1431
  }
2219
1432
  connected_subchannel = MakeRefCounted<LegacyConnectedSubchannel>(
2220
- WeakRef().TakeAsSubclass<NewSubchannel>(), std::move(*stack), args_,
2221
- channelz_node_, connecting_result_.max_concurrent_streams);
1433
+ WeakRef().TakeAsSubclass<Subchannel>(), std::move(*stack),
1434
+ connecting_result_.channel_args, channelz_node_,
1435
+ connecting_result_.max_concurrent_streams);
2222
1436
  } else {
2223
1437
  OrphanablePtr<ClientTransport> transport(
2224
1438
  std::exchange(connecting_result_.transport, nullptr)
@@ -2257,8 +1471,8 @@ bool NewSubchannel::PublishTransportLocked() {
2257
1471
  return false;
2258
1472
  }
2259
1473
  connected_subchannel = MakeRefCounted<NewConnectedSubchannel>(
2260
- WeakRef().TakeAsSubclass<NewSubchannel>(), std::move(*call_destination),
2261
- std::move(transport_destination), args_,
1474
+ WeakRef().TakeAsSubclass<Subchannel>(), std::move(*call_destination),
1475
+ std::move(transport_destination), connecting_result_.channel_args,
2262
1476
  connecting_result_.max_concurrent_streams);
2263
1477
  }
2264
1478
  connecting_result_.Reset();
@@ -2275,6 +1489,19 @@ bool NewSubchannel::PublishTransportLocked() {
2275
1489
  socket_node->AddParent(channelz_node_.get());
2276
1490
  }
2277
1491
  }
1492
+ // Record successful connection attempt
1493
+ if (attempts_storage_ != nullptr) {
1494
+ attempts_storage_->Increment(
1495
+ SubchannelMetricsDomainAttempts::kConnectionAttemptsSucceeded);
1496
+ }
1497
+ if (stats_plugin_group_ != nullptr) {
1498
+ auto scope = stats_plugin_group_->GetCollectionScope();
1499
+ SubchannelConnectionsDomainOpenConnections::GetStorage(
1500
+ scope, target_, connected_subchannel->security_level(),
1501
+ backend_service_, locality_)
1502
+ ->Increment(
1503
+ SubchannelConnectionsDomainOpenConnections::kOpenConnections);
1504
+ }
2278
1505
  transport->StartWatch(
2279
1506
  MakeRefCounted<ConnectionStateWatcher>(connected_subchannel->WeakRef()));
2280
1507
  connections_.push_back(std::move(connected_subchannel));
@@ -2283,11 +1510,11 @@ bool NewSubchannel::PublishTransportLocked() {
2283
1510
  return true;
2284
1511
  }
2285
1512
 
2286
- RefCountedPtr<Subchannel::Call> NewSubchannel::CreateCall(
1513
+ RefCountedPtr<Subchannel::Call> Subchannel::CreateCall(
2287
1514
  CreateCallArgs args, grpc_error_handle* error) {
2288
1515
  RefCountedPtr<ConnectedSubchannel> connected_subchannel;
2289
1516
  {
2290
- MutexLock lock(&mu_);
1517
+ MutexLock lock(mu_);
2291
1518
  // If we hit a race condition where the LB picker chose the subchannel
2292
1519
  // at the same time as the last connection was closed, then tell the
2293
1520
  // channel to re-queue the pick.
@@ -2300,7 +1527,7 @@ RefCountedPtr<Subchannel::Call> NewSubchannel::CreateCall(
2300
1527
  if (connected_subchannel == nullptr) {
2301
1528
  // The QueuedCall object adds itself to queued_calls_.
2302
1529
  auto queued_call = RefCountedPtr<QueuedCall>(args.arena->New<QueuedCall>(
2303
- WeakRef().TakeAsSubclass<NewSubchannel>(), args));
1530
+ WeakRef().TakeAsSubclass<Subchannel>(), args));
2304
1531
  MaybeFailAllQueuedRpcsLocked();
2305
1532
  return queued_call;
2306
1533
  }
@@ -2312,11 +1539,11 @@ RefCountedPtr<Subchannel::Call> NewSubchannel::CreateCall(
2312
1539
  return connected_subchannel->CreateCall(args, error);
2313
1540
  }
2314
1541
 
2315
- RefCountedPtr<UnstartedCallDestination> NewSubchannel::call_destination() {
2316
- // TODO(roth): Implement connection scaling for v3.
1542
+ RefCountedPtr<UnstartedCallDestination> Subchannel::call_destination() {
1543
+ // TODO(roth) : [PH2][P2][Client] : Implement connection scaling for v3.
2317
1544
  RefCountedPtr<ConnectedSubchannel> connected_subchannel;
2318
1545
  {
2319
- MutexLock lock(&mu_);
1546
+ MutexLock lock(mu_);
2320
1547
  if (!connections_.empty()) connected_subchannel = connections_[0];
2321
1548
  }
2322
1549
  if (connected_subchannel == nullptr) return nullptr;
@@ -2331,8 +1558,8 @@ void TestOnlySetSubchannelAlwaysSendCallsToTransport(bool enabled) {
2331
1558
  g_test_only_always_send_calls_to_transport = enabled;
2332
1559
  }
2333
1560
 
2334
- RefCountedPtr<NewSubchannel::ConnectedSubchannel>
2335
- NewSubchannel::ChooseConnectionLocked() {
1561
+ RefCountedPtr<Subchannel::ConnectedSubchannel>
1562
+ Subchannel::ChooseConnectionLocked() {
2336
1563
  // Try to find a connection with quota available for the RPC.
2337
1564
  for (auto& connection : connections_) {
2338
1565
  if (connection->GetQuotaForRpc()) return connection;
@@ -2355,13 +1582,13 @@ NewSubchannel::ChooseConnectionLocked() {
2355
1582
  return nullptr;
2356
1583
  }
2357
1584
 
2358
- void NewSubchannel::RetryQueuedRpcs() {
2359
- MutexLock lock(&mu_);
1585
+ void Subchannel::RetryQueuedRpcs() {
1586
+ MutexLock lock(mu_);
2360
1587
  if (shutdown_) return;
2361
1588
  RetryQueuedRpcsLocked();
2362
1589
  }
2363
1590
 
2364
- void NewSubchannel::RetryQueuedRpcsLocked() {
1591
+ void Subchannel::RetryQueuedRpcsLocked() {
2365
1592
  GRPC_TRACE_LOG(subchannel_call, INFO)
2366
1593
  << "subchannel " << this << " " << key_.ToString()
2367
1594
  << ": retrying RPCs from queue, queue size=" << queued_calls_.size();
@@ -2389,7 +1616,7 @@ void NewSubchannel::RetryQueuedRpcsLocked() {
2389
1616
  }
2390
1617
  }
2391
1618
 
2392
- void NewSubchannel::MaybeFailAllQueuedRpcsLocked() {
1619
+ void Subchannel::MaybeFailAllQueuedRpcsLocked() {
2393
1620
  bool fail_instead_of_queuing =
2394
1621
  args_.GetInt(GRPC_ARG_MAX_CONCURRENT_STREAMS_REJECT_ON_CLIENT)
2395
1622
  .value_or(false);
@@ -2401,7 +1628,7 @@ void NewSubchannel::MaybeFailAllQueuedRpcsLocked() {
2401
1628
  }
2402
1629
  }
2403
1630
 
2404
- void NewSubchannel::FailAllQueuedRpcsLocked(absl::Status status) {
1631
+ void Subchannel::FailAllQueuedRpcsLocked(absl::Status status) {
2405
1632
  GRPC_TRACE_LOG(subchannel_call, INFO)
2406
1633
  << "subchannel " << this << ": failing all queued RPCs: " << status;
2407
1634
  status = PrependAddressToStatusMessage(key_, status);
@@ -2411,15 +1638,14 @@ void NewSubchannel::FailAllQueuedRpcsLocked(absl::Status status) {
2411
1638
  queued_calls_.clear();
2412
1639
  }
2413
1640
 
2414
- void NewSubchannel::Ping(absl::AnyInvocable<void(absl::Status)>) {
1641
+ void Subchannel::Ping(absl::AnyInvocable<void(absl::Status)>) {
2415
1642
  // TODO(ctiller): Implement
2416
1643
  }
2417
1644
 
2418
- absl::Status NewSubchannel::Ping(grpc_closure* on_initiate,
2419
- grpc_closure* on_ack) {
1645
+ absl::Status Subchannel::Ping(grpc_closure* on_initiate, grpc_closure* on_ack) {
2420
1646
  RefCountedPtr<ConnectedSubchannel> connected_subchannel;
2421
1647
  {
2422
- MutexLock lock(&mu_);
1648
+ MutexLock lock(mu_);
2423
1649
  if (!connections_.empty()) connected_subchannel = connections_[0];
2424
1650
  }
2425
1651
  if (connected_subchannel == nullptr) {
@@ -2429,4 +1655,31 @@ absl::Status NewSubchannel::Ping(grpc_closure* on_initiate,
2429
1655
  return absl::OkStatus();
2430
1656
  }
2431
1657
 
1658
+ ChannelArgs Subchannel::MakeSubchannelArgs(
1659
+ const ChannelArgs& channel_args, const ChannelArgs& address_args,
1660
+ const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
1661
+ const std::string& channel_default_authority) {
1662
+ // Note that we start with the channel-level args and then apply the
1663
+ // per-address args, so that if a value is present in both, the one
1664
+ // in the channel-level args is used. This is particularly important
1665
+ // for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
1666
+ // resolvers to set on a per-address basis only if the application
1667
+ // did not explicitly set it at the channel level.
1668
+ return channel_args.UnionWith(address_args)
1669
+ .SetObject(subchannel_pool)
1670
+ // If we haven't already set the default authority arg (i.e., it
1671
+ // was not explicitly set by the application nor overridden by
1672
+ // the resolver), add it from the channel's default.
1673
+ .SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
1674
+ // Remove channel args that should not affect subchannel
1675
+ // uniqueness.
1676
+ .Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
1677
+ .Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
1678
+ .Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL)
1679
+ .Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL_CAP)
1680
+ .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
1681
+ // Remove all keys with the no-subchannel prefix.
1682
+ .RemoveAllKeysWithPrefix(GRPC_ARG_NO_SUBCHANNEL_PREFIX);
1683
+ }
1684
+
2432
1685
  } // namespace grpc_core