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
@@ -47,10 +47,10 @@
47
47
  #include "src/core/ext/transport/chttp2/transport/http2_status.h"
48
48
  #include "src/core/ext/transport/chttp2/transport/http2_transport.h"
49
49
  #include "src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h"
50
- #include "src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h"
51
50
  #include "src/core/ext/transport/chttp2/transport/keepalive.h"
52
51
  #include "src/core/ext/transport/chttp2/transport/message_assembler.h"
53
52
  #include "src/core/ext/transport/chttp2/transport/ping_promise.h"
53
+ #include "src/core/ext/transport/chttp2/transport/read_context.h"
54
54
  #include "src/core/ext/transport/chttp2/transport/security_frame.h"
55
55
  #include "src/core/ext/transport/chttp2/transport/stream.h"
56
56
  #include "src/core/ext/transport/chttp2/transport/stream_data_queue.h"
@@ -140,20 +140,20 @@ void Http2ClientTransport::PerformOp(grpc_transport_op* op) {
140
140
  void Http2ClientTransport::StartConnectivityWatch(
141
141
  grpc_connectivity_state state,
142
142
  OrphanablePtr<ConnectivityStateWatcherInterface> watcher) {
143
- MutexLock lock(&transport_mutex_);
143
+ MutexLock lock(transport_mutex_);
144
144
  state_tracker_.AddWatcher(state, std::move(watcher));
145
145
  }
146
146
 
147
147
  void Http2ClientTransport::StopConnectivityWatch(
148
148
  ConnectivityStateWatcherInterface* watcher) {
149
- MutexLock lock(&transport_mutex_);
149
+ MutexLock lock(transport_mutex_);
150
150
  state_tracker_.RemoveWatcher(watcher);
151
151
  }
152
152
 
153
153
  void Http2ClientTransport::ReportDisconnection(
154
154
  const absl::Status& status, StateWatcher::DisconnectInfo disconnect_info,
155
155
  const char* reason) {
156
- MutexLock lock(&transport_mutex_);
156
+ MutexLock lock(transport_mutex_);
157
157
  ReportDisconnectionLocked(status, disconnect_info, reason);
158
158
  }
159
159
 
@@ -168,14 +168,14 @@ void Http2ClientTransport::ReportDisconnectionLocked(
168
168
  }
169
169
 
170
170
  void Http2ClientTransport::StartWatch(RefCountedPtr<StateWatcher> watcher) {
171
- MutexLock lock(&transport_mutex_);
171
+ MutexLock lock(transport_mutex_);
172
172
  GRPC_CHECK(watcher_ == nullptr);
173
173
  watcher_ = std::move(watcher);
174
- if (is_transport_closed_) {
174
+ if (shutdown_tracker_.IsShutdownInitiated(transport_mutex_)) {
175
175
  // TODO(tjagtap) : [PH2][P2] : Provide better status message and
176
176
  // disconnect info here.
177
177
  NotifyStateWatcherOnDisconnectLocked(
178
- absl::UnknownError("transport closed before watcher started"), {});
178
+ absl::UnavailableError("transport closed before watcher started"), {});
179
179
  } else {
180
180
  // TODO(tjagtap) : [PH2][P2] : Notify the state watcher of the current
181
181
  // value of the peer's MAX_CONCURRENT_STREAMS setting.
@@ -183,7 +183,7 @@ void Http2ClientTransport::StartWatch(RefCountedPtr<StateWatcher> watcher) {
183
183
  }
184
184
 
185
185
  void Http2ClientTransport::StopWatch(RefCountedPtr<StateWatcher> watcher) {
186
- MutexLock lock(&transport_mutex_);
186
+ MutexLock lock(transport_mutex_);
187
187
  if (watcher_ == watcher) watcher_.reset();
188
188
  }
189
189
 
@@ -219,7 +219,7 @@ absl::Status Http2ClientTransport::AckPing(uint64_t opaque_data) {
219
219
 
220
220
  void Http2ClientTransport::Orphan() {
221
221
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::Orphan Begin";
222
- // Accessing general_party here is not advisable. It may so happen that
222
+ // Accessing transport_party here is not advisable. It may so happen that
223
223
  // the party is already freed/may free up any time. The only guarantee here
224
224
  // is that the transport is still valid.
225
225
  SourceDestructing();
@@ -243,15 +243,18 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2DataFrame&& frame) {
243
243
 
244
244
  RefCountedPtr<Stream> stream = LookupStream(frame.stream_id);
245
245
 
246
- ValueOrHttp2Status<chttp2::FlowControlAction> flow_control_action =
247
- ProcessIncomingDataFrameFlowControl(current_frame_header_, flow_control_,
248
- stream.get());
249
- if (!flow_control_action.IsOk()) {
250
- return ValueOrHttp2Status<chttp2::FlowControlAction>::TakeStatus(
251
- std::move(flow_control_action));
246
+ if (frame.payload.Length() > 0) {
247
+ // DATA frames with empty payload are legitimate frames. CHTTP2 and PH2 send
248
+ // empty DATA frames with END_Stream flag set to true.
249
+ ValueOrHttp2Status<chttp2::FlowControlAction> flow_control_action =
250
+ ProcessIncomingDataFrameFlowControl(
251
+ read_context_.GetCurrentFrameHeader(), flow_control_, stream.get());
252
+ if (!flow_control_action.IsOk()) {
253
+ return ValueOrHttp2Status<chttp2::FlowControlAction>::TakeStatus(
254
+ std::move(flow_control_action));
255
+ }
256
+ ActOnFlowControlAction(flow_control_action.value(), stream.get());
252
257
  }
253
- ActOnFlowControlAction(flow_control_action.value(), stream.get());
254
-
255
258
  if (stream == nullptr) {
256
259
  // TODO(tjagtap) : [PH2][P2] : Implement the correct behaviour later.
257
260
  // RFC9113 : If a DATA frame is received whose stream is not in the "open"
@@ -263,9 +266,6 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2DataFrame&& frame) {
263
266
  return Http2Status::Ok();
264
267
  }
265
268
 
266
- // TODO(akshitpatel) : [PH2][P3] : We should add a check to reset stream if
267
- // the stream state is kIdle as well.
268
-
269
269
  Http2Status stream_status = stream->CanStreamReceiveDataFrames();
270
270
  if (!stream_status.IsOk()) {
271
271
  return stream_status;
@@ -300,8 +300,7 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2DataFrame&& frame) {
300
300
  if (message != nullptr) {
301
301
  GRPC_HTTP2_CLIENT_DLOG
302
302
  << "Http2ClientTransport::ProcessIncomingFrame(DataFrame) "
303
- "SpawnPushMessage "
304
- << message->DebugString();
303
+ "SpawnPushMessage ";
305
304
  stream->GetCallHandler().SpawnPushMessage(std::move(message));
306
305
  continue;
307
306
  }
@@ -310,26 +309,20 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2DataFrame&& frame) {
310
309
  break;
311
310
  }
312
311
 
313
- // TODO(tjagtap) : [PH2][P2] : List of Tests:
314
- // 1. Data frame with unknown stream ID
315
- // 2. Data frame with only half a message and then end stream
316
- // 3. One data frame with a full message
317
- // 4. Three data frames with one full message
318
- // 5. One data frame with three full messages. All messages should be pushed.
319
- // Will need to mock the call_handler object and test this along with the
320
- // Header reading code. Because we need a stream in place for the lookup to
321
- // work.
322
312
  return Http2Status::Ok();
323
313
  }
324
314
 
325
315
  template <typename T>
326
316
  Http2Status Http2ClientTransport::ProcessIncomingMetadata(T&& frame) {
327
- // State update MUST happen before processing the frame.
328
- incoming_headers_.UpdateState(frame);
329
-
317
+ GRPC_HTTP2_CLIENT_DLOG
318
+ << "Http2ClientTransport::ProcessIncomingMetadata { stream_id="
319
+ << frame.stream_id << ", end_headers=" << frame.end_headers << " }";
330
320
  ping_manager_->ReceivedDataFrame();
331
321
 
332
322
  RefCountedPtr<Stream> stream = LookupStream(frame.stream_id);
323
+ // State update MUST happen before processing the frame.
324
+ read_context_.UpdateState(frame, /*is_existing_stream=*/(stream != nullptr));
325
+
333
326
  if (stream == nullptr) {
334
327
  // TODO(tjagtap) : [PH2][P3] : Implement this.
335
328
  // RFC9113 : The identifier of a newly established stream MUST be
@@ -338,36 +331,33 @@ Http2Status Http2ClientTransport::ProcessIncomingMetadata(T&& frame) {
338
331
  // frame and streams that are reserved using PUSH_PROMISE. An endpoint that
339
332
  // receives an unexpected stream identifier MUST respond with a connection
340
333
  // error (Section 5.4.1) of type PROTOCOL_ERROR.
341
- GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessIncomingMetadata { "
342
- "stream_id="
343
- << frame.stream_id << "} Lookup Failed";
344
- return incoming_headers_.ParseAndDiscardHeaders(
345
- std::move(frame.payload), frame.end_headers, /*stream=*/nullptr,
346
- Http2Status::Ok(), settings_->acked().max_header_list_size());
334
+ return read_context_.ParseAndDiscardHeaders(
335
+ std::move(frame.payload), frame.end_headers, Http2Status::Ok(),
336
+ settings_->acked().max_header_list_size());
347
337
  }
348
338
 
349
- Http2Status validation_status =
350
- ValidateMetadataFrameState(frame, *stream, incoming_headers_,
351
- settings_->acked().max_header_list_size());
339
+ Http2Status validation_status = ValidateMetadataFrameState(
340
+ frame, *stream, read_context_, settings_->acked().max_header_list_size());
352
341
  if (!validation_status.IsOk()) {
353
342
  return validation_status;
354
343
  }
355
344
 
356
- Http2Status append_result = stream->GetHeaderAssembler().AppendFrame(frame);
345
+ Http2Status append_result =
346
+ read_context_.header_assembler().AppendFrame(frame);
357
347
  if (!append_result.IsOk()) {
358
348
  // Frame payload is not consumed if AppendFrame returns a non-OK
359
349
  // status. We need to process it to keep our in consistent state.
360
- return incoming_headers_.ParseAndDiscardHeaders(
361
- std::move(frame.payload), frame.end_headers, stream.get(),
362
- std::move(append_result), settings_->acked().max_header_list_size());
350
+ return read_context_.ParseAndDiscardHeaders(
351
+ std::move(frame.payload), frame.end_headers, std::move(append_result),
352
+ settings_->acked().max_header_list_size());
363
353
  }
364
354
 
365
355
  Http2Status status = ProcessMetadata(stream);
366
356
  if (!status.IsOk()) {
367
357
  // Frame payload has been moved to the HeaderAssembler. So calling
368
358
  // ParseAndDiscardHeaders with an empty buffer.
369
- return incoming_headers_.ParseAndDiscardHeaders(
370
- SliceBuffer(), frame.end_headers, stream.get(), std::move(status),
359
+ return read_context_.ParseAndDiscardHeaders(
360
+ SliceBuffer(), frame.end_headers, std::move(status),
371
361
  settings_->acked().max_header_list_size());
372
362
  }
373
363
 
@@ -379,9 +369,8 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
379
369
  Http2HeaderFrame&& frame) {
380
370
  // https://www.rfc-editor.org/rfc/rfc9113.html#name-headers
381
371
  GRPC_HTTP2_CLIENT_DLOG
382
- << "Http2ClientTransport::ProcessIncomingFrame(HeaderFrame) { stream_id="
383
- << frame.stream_id << ", end_headers=" << frame.end_headers
384
- << ", end_stream=" << frame.end_stream << " }";
372
+ << "Http2ClientTransport::ProcessIncomingFrame(HeaderFrame) end_stream="
373
+ << frame.end_stream;
385
374
  return ProcessIncomingMetadata(std::forward<Http2HeaderFrame>(frame));
386
375
  }
387
376
 
@@ -393,15 +382,13 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
393
382
  "stream_id="
394
383
  << frame.stream_id << ", error_code=" << frame.error_code << " }";
395
384
 
385
+ read_context_.OnResetFrameReceived();
396
386
  Http2ErrorCode error_code = FrameErrorCodeToHttp2ErrorCode(frame.error_code);
397
387
  absl::Status status = absl::Status(ErrorCodeToAbslStatusCode(error_code),
398
388
  "Reset stream frame received.");
399
389
  RefCountedPtr<Stream> stream = LookupStream(frame.stream_id);
400
390
  if (stream != nullptr) {
401
- stream->MarkHalfClosedRemote();
402
- BeginCloseStream(std::move(stream),
403
- /*reset_stream_error_code=*/std::nullopt,
404
- CancelledServerMetadataFromStatus(status));
391
+ HandleStreamStateChange(*stream, stream->OnResetReceived(status));
405
392
  }
406
393
 
407
394
  // In case of stream error, we do not want the Read Loop to be broken. Hence
@@ -418,33 +405,30 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
418
405
  << frame.ack << ", settings length=" << frame.settings.size() << "}";
419
406
 
420
407
  if (!frame.ack) {
421
- Http2Status status = ValidateSettingsValues(frame.settings);
422
- if (!status.IsOk()) {
423
- return status;
408
+ read_context_.OnSettingsFrameReceived();
409
+ Http2Status s = settings_->BufferPeerSettings(std::move(frame.settings));
410
+ if (!s.IsOk()) {
411
+ return s;
424
412
  }
425
- settings_->BufferPeerSettings(std::move(frame.settings));
426
413
  absl::Status trigger_write_status = TriggerWriteCycle();
427
414
  if (!trigger_write_status.ok()) {
428
415
  return ToHttpOkOrConnError(trigger_write_status);
429
416
  }
430
-
431
417
  if (GPR_UNLIKELY(!settings_->IsFirstPeerSettingsApplied())) {
432
418
  // Apply the first settings before we read any other frames.
433
- reader_state_.SetPauseReadLoop();
419
+ read_context_.SetPauseReadLoop();
434
420
  }
435
421
  } else {
436
- if (settings_->OnSettingsAckReceived()) {
437
- incoming_headers_.SetMaxHeaderTableSize(
438
- settings_->acked().header_table_size());
439
- ActOnFlowControlAction(flow_control_.SetAckedInitialWindow(
440
- settings_->acked().initial_window_size()),
441
- /*stream=*/nullptr);
442
- } else {
443
- // CHTTP2 returns a connection error for an unsolicited SETTINGS ACK.
444
- // However, we ignore it in PH2 since RFC 9113 doesn't explicitly mandate
445
- // an error.
446
- LOG(ERROR) << "Settings ack received without sending settings. Ignore.";
422
+ Http2Status status = settings_->OnSettingsAckReceived();
423
+ if (!status.IsOk()) {
424
+ return status;
447
425
  }
426
+ read_context_.SetMaxHeaderTableSize(settings_->acked().header_table_size());
427
+ read_context_.header_assembler().MaybeSetAllowTrueBinaryMetadataAcked(
428
+ settings_->acked().allow_true_binary_metadata());
429
+ ActOnFlowControlAction(flow_control_.SetAckedInitialWindow(
430
+ settings_->acked().initial_window_size()),
431
+ /*stream=*/nullptr);
448
432
  }
449
433
 
450
434
  return Http2Status::Ok();
@@ -458,17 +442,9 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2PingFrame&& frame) {
458
442
  if (frame.ack) {
459
443
  return ToHttpOkOrConnError(AckPing(frame.opaque));
460
444
  } else {
445
+ read_context_.OnPingFrameReceived();
461
446
  if (test_only_ack_pings_) {
462
- // TODO(akshitpatel) : [PH2][P2] : Have a counter to track number
463
- // of pending induced frames (Ping/Settings Ack). This is to
464
- // ensure that if write is taking a long time, we can stop reads
465
- // and prioritize writes. RFC9113: PING responses SHOULD be given
466
- // higher priority than any other frame.
467
447
  ping_manager_->AddPendingPingAck(frame.opaque);
468
- // TODO(akshitpatel) : [PH2][P2] : This is done assuming that the
469
- // other ProcessFrame promises may return stream or connection
470
- // failures. If this does not turn out to be true, consider
471
- // returning absl::Status here.
472
448
  return ToHttpOkOrConnError(TriggerWriteCycle());
473
449
  } else {
474
450
  GRPC_HTTP2_CLIENT_DLOG
@@ -504,17 +480,6 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
504
480
  }
505
481
  SetMaxAllowedStreamId(last_stream_id);
506
482
 
507
- bool close_transport = false;
508
- {
509
- MutexLock lock(&transport_mutex_);
510
- if (CanCloseTransportLocked()) {
511
- close_transport = true;
512
- GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessIncomingFrame("
513
- "GoawayFrame) "
514
- "stream_list_ is empty";
515
- }
516
- }
517
-
518
483
  StateWatcher::DisconnectInfo disconnect_info;
519
484
  disconnect_info.reason = Transport::StateWatcher::kGoaway;
520
485
  disconnect_info.http2_error_code =
@@ -536,29 +501,10 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
536
501
  keepalive_time_.millis() > max_keepalive_time_millis
537
502
  ? INT_MAX
538
503
  : keepalive_time_.millis() * KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
539
- if (!IsSubchannelConnectionScalingEnabled()) {
540
- status.SetPayload(kKeepaliveThrottlingKey,
541
- absl::Cord(std::to_string(throttled_keepalive_time)));
542
- }
543
504
  disconnect_info.keepalive_time =
544
505
  Duration::Milliseconds(throttled_keepalive_time);
545
506
  }
546
507
 
547
- if (close_transport) {
548
- // TODO(akshitpatel) : [PH2][P3] : Ideally the error here should be
549
- // kNoError. However, Http2Status does not support kNoError. We should
550
- // revisit this and update the error code.
551
- MaybeSpawnCloseTransport(Http2Status::Http2ConnectionError(
552
- FrameErrorCodeToHttp2ErrorCode((
553
- frame.error_code ==
554
- Http2ErrorCodeToFrameErrorCode(Http2ErrorCode::kNoError)
555
- ? Http2ErrorCodeToFrameErrorCode(Http2ErrorCode::kInternalError)
556
- : frame.error_code)),
557
- frame.debug_data.empty()
558
- ? std::string("GOAWAY received")
559
- : std::string(frame.debug_data.as_string_view())));
560
- }
561
-
562
508
  // lie: use transient failure from the transport to indicate goaway has been
563
509
  // received.
564
510
  ReportDisconnection(status, disconnect_info, "got_goaway");
@@ -604,16 +550,12 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
604
550
  Http2ContinuationFrame&& frame) {
605
551
  // https://www.rfc-editor.org/rfc/rfc9113.html#name-continuation
606
552
  GRPC_HTTP2_CLIENT_DLOG
607
- << "Http2ClientTransport::ProcessIncomingFrame(ContinuationFrame) { "
608
- "stream_id="
609
- << frame.stream_id << ", end_headers=" << frame.end_headers << " }";
553
+ << "Http2ClientTransport::ProcessIncomingFrame(ContinuationFrame)";
610
554
  return ProcessIncomingMetadata(std::forward<Http2ContinuationFrame>(frame));
611
555
  }
612
556
 
613
557
  Http2Status Http2ClientTransport::ProcessIncomingFrame(
614
558
  Http2SecurityFrame&& frame) {
615
- GRPC_HTTP2_CLIENT_DLOG
616
- << "Http2ClientTransport::ProcessIncomingFrame(SecurityFrame) ";
617
559
  if (settings_->IsSecurityFrameExpected()) {
618
560
  security_frame_handler_->ProcessPayload(std::move(frame.payload));
619
561
  }
@@ -624,8 +566,6 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
624
566
  GRPC_UNUSED Http2UnknownFrame&& frame) {
625
567
  // RFC9113: Implementations MUST ignore and discard frames of
626
568
  // unknown types.
627
- GRPC_HTTP2_CLIENT_DLOG
628
- << "Http2ClientTransport::ProcessIncomingFrame(UnknownFrame) ";
629
569
  return Http2Status::Ok();
630
570
  }
631
571
 
@@ -637,30 +577,27 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
637
577
 
638
578
  Http2Status Http2ClientTransport::ProcessMetadata(
639
579
  RefCountedPtr<Stream> stream) {
640
- HeaderAssembler& assembler = stream->GetHeaderAssembler();
580
+ HeaderAssembler& assembler = read_context_.header_assembler();
641
581
  CallHandler& call = stream->GetCallHandler();
642
582
 
643
583
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessMetadata";
644
584
  if (assembler.IsReady()) {
645
585
  ValueOrHttp2Status<ServerMetadataHandle> read_result =
646
- assembler.ReadMetadata(incoming_headers_.parser(),
647
- !incoming_headers_.HeaderHasEndStream(),
586
+ assembler.ReadMetadata(read_context_.parser(),
587
+ !read_context_.HeaderHasEndStream(),
648
588
  /*max_header_list_size_soft_limit=*/
649
- incoming_headers_.soft_limit(),
589
+ read_context_.soft_limit(),
650
590
  /*max_header_list_size_hard_limit=*/
651
591
  settings_->acked().max_header_list_size());
652
592
  if (read_result.IsOk()) {
653
593
  ServerMetadataHandle metadata = TakeValue(std::move(read_result));
654
- if (incoming_headers_.HeaderHasEndStream()) {
655
- stream->MarkHalfClosedRemote();
656
- stream->SetTrailingMetadataReceived();
657
- BeginCloseStream(std::move(stream),
658
- /*reset_stream_error_code=*/std::nullopt,
659
- std::move(metadata));
594
+ if (read_context_.HeaderHasEndStream()) {
595
+ HandleStreamStateChange(
596
+ *stream, stream->OnTrailingMetadataReceived(std::move(metadata)));
660
597
  } else {
661
598
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessMetadata "
662
599
  "SpawnPushServerInitialMetadata";
663
- metadata->Set(PeerString(), incoming_headers_.peer_string());
600
+ metadata->Set(PeerString(), read_context_.peer_string());
664
601
  stream->SetInitialMetadataReceived();
665
602
  call.SpawnPushServerInitialMetadata(std::move(metadata));
666
603
  }
@@ -684,71 +621,68 @@ auto Http2ClientTransport::ReadAndProcessOneFrame() {
684
621
  EndpointReadSlice(kFrameHeaderSize),
685
622
  // Parse the frame header.
686
623
  [this](Slice header_bytes) {
687
- GRPC_HTTP2_CLIENT_DLOG
688
- << "Http2ClientTransport::ReadAndProcessOneFrame Parse "
689
- << header_bytes.as_string_view();
690
624
  Http2FrameHeader header = Http2FrameHeader::Parse(header_bytes.begin());
691
625
  // Validate the incoming frame as per the current state of the transport
692
- Http2Status status = ValidateFrameHeader(
693
- /*max_frame_size_setting*/ settings_->acked().max_frame_size(),
694
- /*incoming_header_in_progress*/
695
- incoming_headers_.IsWaitingForContinuationFrame(),
696
- /*incoming_header_stream_id*/
697
- incoming_headers_.GetStreamId(),
698
- /*current_frame_header*/ header,
626
+ Http2Status status = read_context_.ValidateHeader(
627
+ /*max_frame_size_setting=*/settings_->acked().max_frame_size(),
628
+ /*current_frame_header=*/header,
699
629
  /*last_stream_id=*/GetLastStreamId(),
700
- /*is_client=*/kIsClient, /*is_first_settings_processed=*/
630
+ /*is_first_settings_processed=*/
701
631
  settings_->IsFirstPeerSettingsApplied());
702
632
 
703
633
  if (GPR_UNLIKELY(!status.IsOk())) {
704
634
  GRPC_DCHECK(status.GetType() ==
705
635
  Http2Status::Http2ErrorType::kConnectionError);
706
- return HandleError(std::nullopt, std::move(status));
636
+ return HandleError(/*stream=*/nullptr, std::move(status));
707
637
  }
708
- GRPC_HTTP2_CLIENT_DLOG
709
- << "Http2ClientTransport::ReadAndProcessOneFrame "
710
- "Validated Frame Header:"
711
- << header.ToString();
712
- current_frame_header_ = header;
638
+ read_context_.SetCurrentFrameHeader(header);
713
639
  return absl::OkStatus();
714
640
  },
715
641
  // Read the payload of the frame.
716
642
  [this]() {
717
643
  GRPC_HTTP2_CLIENT_DLOG
718
644
  << "Http2ClientTransport::ReadAndProcessOneFrame Read Frame ";
719
- return AssertResultType<absl::Status>(Map(
720
- EndpointRead(current_frame_header_.length),
721
- [this](absl::StatusOr<SliceBuffer>&& payload) {
722
- if (GPR_UNLIKELY(!payload.ok())) {
723
- return payload.status();
724
- }
725
- GRPC_HTTP2_CLIENT_DLOG
726
- << "Http2ClientTransport::ReadAndProcessOneFrame "
727
- "ParseFramePayload payload length: "
728
- << payload.value().Length();
729
- ValueOrHttp2Status<Http2Frame> frame = ParseFramePayload(
730
- current_frame_header_, TakeValue(std::move(payload)));
731
- if (GPR_UNLIKELY(!frame.IsOk())) {
732
- return HandleError(current_frame_header_.stream_id,
733
- ValueOrHttp2Status<Http2Frame>::TakeStatus(
734
- std::move(frame)));
735
- }
736
- Http2Status status =
737
- ProcessOneIncomingFrame(TakeValue(std::move(frame)));
738
- if (GPR_UNLIKELY(!status.IsOk())) {
739
- return HandleError(current_frame_header_.stream_id,
740
- std::move(status));
741
- }
742
- return absl::OkStatus();
743
- }));
645
+ return AssertResultType<absl::Status>(
646
+ Map(EndpointRead(read_context_.GetCurrentFrameHeader().length),
647
+ [this](absl::StatusOr<SliceBuffer>&& payload) {
648
+ if (GPR_UNLIKELY(!payload.ok())) {
649
+ return payload.status();
650
+ }
651
+ GRPC_HTTP2_CLIENT_DLOG
652
+ << "Http2ClientTransport::ReadAndProcessOneFrame "
653
+ "ParseFramePayload payload length: "
654
+ << payload.value().Length();
655
+ ValueOrHttp2Status<Http2Frame> frame =
656
+ ParseFramePayload(read_context_.GetCurrentFrameHeader(),
657
+ TakeValue(std::move(payload)));
658
+ if (GPR_UNLIKELY(!frame.IsOk())) {
659
+ return HandleError(
660
+ LookupStream(
661
+ read_context_.GetCurrentFrameHeader().stream_id),
662
+ ValueOrHttp2Status<Http2Frame>::TakeStatus(
663
+ std::move(frame)));
664
+ }
665
+ Http2Status status =
666
+ ProcessOneIncomingFrame(TakeValue(std::move(frame)));
667
+ if (GPR_UNLIKELY(!status.IsOk())) {
668
+ return HandleError(
669
+ LookupStream(
670
+ read_context_.GetCurrentFrameHeader().stream_id),
671
+ std::move(status));
672
+ }
673
+ return absl::OkStatus();
674
+ }));
744
675
  },
745
676
  [this]() -> Poll<absl::Status> {
746
- return reader_state_.MaybePauseReadLoop();
677
+ Poll<absl::Status> poll_result = read_context_.MaybePauseReadLoop();
678
+ if (poll_result.pending()) {
679
+ TriggerWriteCycleOrHandleError();
680
+ }
681
+ return poll_result;
747
682
  }));
748
683
  }
749
684
 
750
685
  auto Http2ClientTransport::ReadLoop() {
751
- GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ReadLoop Factory";
752
686
  return AssertResultType<absl::Status>(Loop([this]() {
753
687
  return TrySeq(ReadAndProcessOneFrame(), []() -> LoopCtl<absl::Status> {
754
688
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ReadLoop Continue";
@@ -760,39 +694,26 @@ auto Http2ClientTransport::ReadLoop() {
760
694
  ///////////////////////////////////////////////////////////////////////////////
761
695
  // Flow Control for the Transport
762
696
 
763
- auto Http2ClientTransport::FlowControlPeriodicUpdateLoop() {
764
- GRPC_HTTP2_CLIENT_DLOG
765
- << "Http2ClientTransport::FlowControlPeriodicUpdateLoop Factory";
766
- return AssertResultType<absl::Status>(
767
- Loop([this]() {
768
- GRPC_HTTP2_CLIENT_DLOG
769
- << "Http2ClientTransport::FlowControlPeriodicUpdateLoop Loop";
770
- return TrySeq(
771
- // TODO(tjagtap) [PH2][P2][BDP] Remove this static sleep when the
772
- // BDP code is done.
773
- Sleep(chttp2::kFlowControlPeriodicUpdateTimer),
774
- [this]() -> Poll<absl::Status> {
775
- GRPC_HTTP2_CLIENT_DLOG
776
- << "Http2ClientTransport::FlowControlPeriodicUpdateLoop "
777
- "PeriodicUpdate()";
778
- chttp2::FlowControlAction action = flow_control_.PeriodicUpdate();
779
- bool is_action_empty = action == chttp2::FlowControlAction();
780
- // This may trigger a write cycle
781
- ActOnFlowControlAction(action, nullptr);
782
- if (is_action_empty) {
783
- // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is
784
- // done. We must continue to do PeriodicUpdate once BDP is in
785
- // place.
786
- MutexLock lock(&transport_mutex_);
787
- if (GetActiveStreamCountLocked() == 0) {
788
- AddPeriodicUpdatePromiseWaker();
789
- return Pending{};
790
- }
791
- }
792
- return absl::OkStatus();
793
- },
794
- []() -> LoopCtl<absl::Status> { return Continue{}; });
795
- }));
697
+ auto Http2ClientTransport::BdpLoop() {
698
+ return AssertResultType<absl::Status>(Loop([this]() {
699
+ return TrySeq(
700
+ flow_control_.WaitForBdpActivation(),
701
+ [this]() {
702
+ // TODO(akshitpatel) : [PH2][P1] : Reset the keepalive ping timer
703
+ // when a BDP ping is sent, similar to CHTTP2's start_bdp_ping_locked.
704
+ TriggerWriteCycleOrHandleError();
705
+ return ping_manager_->RequestPing(
706
+ [this] { flow_control_.StartBdpPing(); },
707
+ /*important=*/false);
708
+ },
709
+ [this]() {
710
+ Duration sleep_duration = flow_control_.CompleteBdpPing();
711
+ chttp2::FlowControlAction action = flow_control_.PeriodicUpdate();
712
+ ActOnFlowControlAction(action, nullptr);
713
+ return Sleep(sleep_duration);
714
+ },
715
+ []() -> LoopCtl<absl::Status> { return Continue{}; });
716
+ }));
796
717
  }
797
718
 
798
719
  // Equivalent to grpc_chttp2_act_on_flowctl_action in chttp2_transport.cc
@@ -816,9 +737,7 @@ void Http2ClientTransport::ActOnFlowControlAction(
816
737
  }
817
738
  }
818
739
 
819
- ActOnFlowControlActionSettings(
820
- action, settings_->mutable_local(),
821
- enable_preferred_rx_crypto_frame_advertisement_);
740
+ ActOnFlowControlActionSettings(action, settings_->mutable_local());
822
741
 
823
742
  if (action.AnyUpdateImmediately()) {
824
743
  // Prioritize sending flow control updates over reading data. If we
@@ -826,7 +745,7 @@ void Http2ClientTransport::ActOnFlowControlAction(
826
745
  // exhaust the flow control window. This prevents us from sending window
827
746
  // updates to the peer, causing the peer to block unnecessarily while
828
747
  // waiting for flow control tokens.
829
- reader_state_.SetPauseReadLoop();
748
+ read_context_.SetPauseReadLoop();
830
749
  if (!TriggerWriteCycleOrHandleError()) {
831
750
  return;
832
751
  }
@@ -837,7 +756,7 @@ void Http2ClientTransport::ActOnFlowControlAction(
837
756
  }
838
757
 
839
758
  absl::Status Http2ClientTransport::UpdateAllStreamsWritability() {
840
- MutexLock lock(&transport_mutex_);
759
+ MutexLock lock(transport_mutex_);
841
760
  GRPC_HTTP2_CLIENT_DLOG
842
761
  << "Http2ClientTransport::UpdateAllStreamsWritability total streams: "
843
762
  << stream_list_.size();
@@ -892,11 +811,6 @@ absl::Status Http2ClientTransport::PrepareControlFrames() {
892
811
  // by a SETTINGS frame, which MAY be empty.
893
812
  settings_->MaybeGetSettingsAndSettingsAckFrames(flow_control_,
894
813
  frame_sender);
895
- // TODO(tjagtap) [PH2][P2][Server] : This will be opposite for server. We
896
- // must read before we write for the server. So the ReadLoop will be Spawned
897
- // just after the constructor, and the write loop should be spawned only
898
- // after the first SETTINGS frame is completely received.
899
- //
900
814
  // Because the client is expected to write before it reads, we spawn the
901
815
  // ReadLoop of the client only after the first write is queued.
902
816
  SpawnGuardedTransportParty("ReadLoop", UntilTransportClosed(ReadLoop()));
@@ -911,14 +825,13 @@ absl::Status Http2ClientTransport::PrepareControlFrames() {
911
825
  // 5. Custom gRPC security frame
912
826
 
913
827
  goaway_manager_.MaybeGetSerializedGoawayFrame(frame_sender);
914
- bool should_spawn_security_frame_loop = false;
828
+ ApplySettingsResult apply_settings_result;
915
829
 
916
830
  const uint32_t old_initial_window_size =
917
831
  settings_->peer().initial_window_size();
918
- http2::Http2ErrorCode apply_status =
919
- settings_->MaybeReportAndApplyBufferedPeerSettings(
920
- event_engine_.get(), should_spawn_security_frame_loop);
921
-
832
+ const http2::Http2ErrorCode apply_status =
833
+ settings_->MaybeReportAndApplyBufferedPeerSettings(event_engine_.get(),
834
+ apply_settings_result);
922
835
  if (apply_status == http2::Http2ErrorCode::kNoError) {
923
836
  const uint32_t new_initial_window_size =
924
837
  settings_->peer().initial_window_size();
@@ -936,7 +849,7 @@ absl::Status Http2ClientTransport::PrepareControlFrames() {
936
849
  }
937
850
  }
938
851
 
939
- if (should_spawn_security_frame_loop) {
852
+ if (apply_settings_result.should_spawn_security_frame_loop) {
940
853
  const SecurityFrameHandler::EndpointExtensionState state =
941
854
  security_frame_handler_->Initialize(event_engine_);
942
855
  if (state.is_set) {
@@ -957,7 +870,7 @@ absl::Status Http2ClientTransport::PrepareControlFrames() {
957
870
  }
958
871
 
959
872
  if (apply_status != http2::Http2ErrorCode::kNoError) {
960
- return HandleError(std::nullopt,
873
+ return HandleError(/*stream=*/nullptr,
961
874
  Http2Status::Http2ConnectionError(
962
875
  apply_status, "Failed to apply incoming settings"));
963
876
  }
@@ -985,7 +898,7 @@ void Http2ClientTransport::NotifyFramesWriteDone() {
985
898
  // Notify Control modules that we have sent the frames.
986
899
  // All notifications are expected to be synchronous.
987
900
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::NotifyFramesWriteDone";
988
- reader_state_.ResumeReadLoopIfPaused();
901
+ read_context_.ResumeReadLoopIfPaused();
989
902
  MaybeSpawnPingTimeout(ping_manager_->NotifyPingSent());
990
903
  goaway_manager_.NotifyGoawaySent();
991
904
  MaybeSpawnWaitForSettingsTimeout();
@@ -1043,7 +956,7 @@ absl::Status Http2ClientTransport::DequeueStreamFrames(
1043
956
  "enqueue stream "
1044
957
  << stream->GetStreamId() << " with status: " << status;
1045
958
  // Close transport if we fail to enqueue stream.
1046
- return HandleError(std::nullopt, ToHttpOkOrConnError(status));
959
+ return HandleError(/*stream=*/nullptr, ToHttpOkOrConnError(status));
1047
960
  }
1048
961
  }
1049
962
 
@@ -1060,7 +973,7 @@ absl::Status Http2ClientTransport::DequeueStreamFrames(
1060
973
  << "Http2ClientTransport::DequeueStreamFrames InitialMetadataDequeued "
1061
974
  "stream_id = "
1062
975
  << stream->GetStreamId();
1063
- stream->SentInitialMetadata();
976
+ stream->OnInitialMetadataSent();
1064
977
  // After this point, initial metadata is guaranteed to be sent out.
1065
978
  AddToStreamList(stream);
1066
979
  }
@@ -1069,28 +982,16 @@ absl::Status Http2ClientTransport::DequeueStreamFrames(
1069
982
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::DequeueStreamFrames "
1070
983
  "HalfCloseDequeued stream_id = "
1071
984
  << stream->GetStreamId();
1072
- stream->MarkHalfClosedLocal();
1073
-
1074
- if (stream->IsTrailingMetadataReceived()) {
1075
- CloseStream(*stream, CloseStreamArgs{/*close_reads=*/true,
1076
- /*close_writes=*/true});
1077
- }
985
+ HandleStreamStateChange(*stream, stream->OnHalfCloseSent());
1078
986
  }
1079
987
  if (result.IsResetStreamDequeued()) {
1080
988
  GRPC_HTTP2_CLIENT_DLOG
1081
989
  << "Http2ClientTransport::DequeueStreamFrames ResetStreamDequeued "
1082
990
  "stream_id = "
1083
991
  << stream->GetStreamId();
1084
- stream->MarkHalfClosedLocal();
1085
- CloseStream(*stream, CloseStreamArgs{/*close_reads=*/true,
1086
- /*close_writes=*/true});
992
+ HandleStreamStateChange(*stream, stream->OnResetSent());
1087
993
  }
1088
994
 
1089
- // Update the write_bytes_remaining_ based on the bytes consumed
1090
- // in the current dequeue.
1091
- // Note: We do tend to overestimate the bytes consumed here. This may result
1092
- // in sending less data than target_write_size_.
1093
-
1094
995
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::DequeueStreamFrames "
1095
996
  "After dequeue: "
1096
997
  << write_cycle.DebugString()
@@ -1126,10 +1027,6 @@ auto Http2ClientTransport::MultiplexerLoop() {
1126
1027
  }
1127
1028
  NotifyUrgentFramesWriteDone();
1128
1029
  WriteCycle& write_cycle = transport_write_context_.GetWriteCycle();
1129
- GRPC_HTTP2_CLIENT_DLOG
1130
- << "Http2ClientTransport::MultiplexerLoop "
1131
- << "Starting to iterate over writable stream list "
1132
- << write_cycle.DebugString();
1133
1030
  // Drain all the writable streams till we have written
1134
1031
  // max_write_size_ bytes of data or there is no more data to send.
1135
1032
  // In some cases, we may write more than max_write_size_ bytes(like
@@ -1163,9 +1060,7 @@ auto Http2ClientTransport::MultiplexerLoop() {
1163
1060
  "Failed to assign stream id and add to stream list for"
1164
1061
  " stream: "
1165
1062
  << stream.get() << " closing this stream.";
1166
- BeginCloseStream(std::move(stream),
1167
- /*reset_stream_error_code=*/std::nullopt,
1168
- CancelledServerMetadataFromStatus(status));
1063
+ HandleStreamStateChange(*stream, stream->ForceClose(status));
1169
1064
  continue;
1170
1065
  }
1171
1066
  }
@@ -1214,6 +1109,9 @@ auto Http2ClientTransport::MultiplexerLoop() {
1214
1109
  }
1215
1110
 
1216
1111
  absl::Status Http2ClientTransport::InitializeStream(Stream& stream) {
1112
+ if (shutdown_tracker_.IsPartyShutdownInitiated()) {
1113
+ return absl::UnavailableError("Transport closed");
1114
+ }
1217
1115
  absl::StatusOr<uint32_t> next_stream_id = NextStreamId();
1218
1116
  if (!next_stream_id.ok()) {
1219
1117
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::InitializeStream "
@@ -1226,16 +1124,14 @@ absl::Status Http2ClientTransport::InitializeStream(Stream& stream) {
1226
1124
  << next_stream_id.value() << " to stream: " << &stream
1227
1125
  << ", allow_true_binary_metadata:"
1228
1126
  << settings_->peer().allow_true_binary_metadata();
1229
- stream.InitializeClientStream(
1230
- next_stream_id.value(), settings_->peer().allow_true_binary_metadata(),
1231
- settings_->acked().allow_true_binary_metadata());
1127
+ stream.InitializeClientStream(next_stream_id.value(),
1128
+ settings_->peer().allow_true_binary_metadata());
1232
1129
  return absl::OkStatus();
1233
1130
  }
1234
1131
 
1235
1132
  void Http2ClientTransport::AddToStreamList(RefCountedPtr<Stream> stream) {
1236
- bool should_wake_periodic_updates = false;
1237
1133
  {
1238
- MutexLock lock(&transport_mutex_);
1134
+ MutexLock lock(transport_mutex_);
1239
1135
  GRPC_DCHECK(stream != nullptr) << "stream is null";
1240
1136
  GRPC_DCHECK_GT(stream->GetStreamId(), 0u) << "stream id is invalid";
1241
1137
  GRPC_HTTP2_CLIENT_DLOG
@@ -1243,15 +1139,6 @@ void Http2ClientTransport::AddToStreamList(RefCountedPtr<Stream> stream) {
1243
1139
  << stream->GetStreamId();
1244
1140
  const uint32_t stream_id = stream->GetStreamId();
1245
1141
  stream_list_.emplace(stream_id, std::move(stream));
1246
- // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done.
1247
- if (GetActiveStreamCountLocked() == 1) {
1248
- should_wake_periodic_updates = true;
1249
- }
1250
- }
1251
- // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done.
1252
- if (should_wake_periodic_updates) {
1253
- // Release the lock before you wake up another promise on the party.
1254
- WakeupPeriodicUpdatePromise();
1255
1142
  }
1256
1143
  }
1257
1144
 
@@ -1266,9 +1153,9 @@ auto Http2ClientTransport::WaitForSettingsTimeoutOnDone() {
1266
1153
  return [self = RefAsSubclass<Http2ClientTransport>()](absl::Status status) {
1267
1154
  if (!status.ok()) {
1268
1155
  GRPC_UNUSED absl::Status result = self->HandleError(
1269
- std::nullopt, Http2Status::Http2ConnectionError(
1270
- Http2ErrorCode::kProtocolError,
1271
- std::string(RFC9113::kSettingsTimeout)));
1156
+ /*stream=*/nullptr, Http2Status::Http2ConnectionError(
1157
+ Http2ErrorCode::kProtocolError,
1158
+ std::string(RFC9113::kSettingsTimeout)));
1272
1159
  }
1273
1160
  };
1274
1161
  }
@@ -1308,35 +1195,36 @@ Http2ClientTransport::Http2ClientTransport(
1308
1195
  event_engine_(std::move(event_engine)),
1309
1196
  endpoint_(std::move(endpoint)),
1310
1197
  settings_(MakeRefCounted<SettingsPromiseManager>(
1311
- std::move(on_receive_settings))),
1198
+ kIsClient, std::move(on_receive_settings))),
1312
1199
  next_stream_id_(/*Initial Stream ID*/ 1),
1313
1200
  should_reset_ping_clock_(false),
1314
- incoming_headers_(IncomingMetadataTracker::GetPeerString(endpoint_),
1315
- kIsClient),
1201
+ read_context_(MaxNewStreamsPerRead(channel_args), endpoint_, kIsClient,
1202
+ GetMaxSecurityFrameSize(channel_args),
1203
+ GetPingOnRstStreamPercent(channel_args, kIsClient)),
1316
1204
  transport_write_context_(kIsClient),
1317
1205
  ping_manager_(std::nullopt),
1318
1206
  keepalive_manager_(std::nullopt),
1319
1207
  goaway_manager_(GoawayInterfaceImpl::Make(this)),
1320
- security_frame_handler_(MakeRefCounted<SecurityFrameHandler>()),
1321
1208
  memory_owner_(channel_args.GetObject<ResourceQuota>()
1322
1209
  ->memory_quota()
1323
1210
  ->CreateMemoryOwner()),
1324
1211
  flow_control_(
1325
- "PH2_Client",
1212
+ /*peer_name=*/read_context_.peer_string().as_string_view(),
1326
1213
  channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true),
1327
1214
  &memory_owner_),
1215
+ security_frame_handler_(MakeRefCounted<SecurityFrameHandler>()),
1328
1216
  ztrace_collector_(std::make_shared<PromiseHttp2ZTraceCollector>()) {
1329
1217
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::Http2ClientTransport Begin";
1330
- // Initialize the general party and write party.
1218
+ // Initialize the transport party and write party.
1331
1219
  RefCountedPtr<Arena> party_arena = SimpleArenaAllocator(0)->MakeArena();
1332
1220
  party_arena->SetContext<EventEngine>(event_engine_.get());
1333
- general_party_ = Party::Make(std::move(party_arena));
1221
+ transport_party_ = Party::Make(std::move(party_arena));
1334
1222
 
1335
1223
  InitLocalSettings(settings_->mutable_local(), /*is_client=*/kIsClient);
1336
1224
  TransportChannelArgs args;
1337
1225
  ReadChannelArgs(channel_args, args);
1338
1226
 
1339
- ping_manager_.emplace(channel_args, args.ping_timeout,
1227
+ ping_manager_.emplace(channel_args, kIsClient, args.ping_timeout,
1340
1228
  PingSystemInterfaceImpl::Make(this), event_engine_);
1341
1229
 
1342
1230
  // The keepalive loop is only spawned if the keepalive time is not infinity.
@@ -1355,19 +1243,25 @@ Http2ClientTransport::Http2ClientTransport(
1355
1243
  void Http2ClientTransport::SpawnTransportLoops() {
1356
1244
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::SpawnTransportLoops Begin";
1357
1245
  MaybeSpawnKeepaliveLoop();
1358
- SpawnGuardedTransportParty(
1359
- "FlowControlPeriodicUpdateLoop",
1360
- UntilTransportClosed(FlowControlPeriodicUpdateLoop()));
1361
-
1362
1246
  if (!TriggerWriteCycleOrHandleError()) {
1363
1247
  return;
1364
1248
  }
1365
1249
  // For Client, write happens before read. So MultiplexerLoop is spawned first.
1366
1250
  // ReadLoop is spawned after the first write.
1367
1251
  // For Server, read happens before write. So ReadLoop is spawned first.
1368
- // MultiplexerLoop is spawned after the first read.
1369
- SpawnGuardedTransportParty("MultiplexerLoop",
1370
- UntilTransportClosed(MultiplexerLoop()));
1252
+ SpawnGuardedTransportParty(
1253
+ "MultiplexerLoop",
1254
+
1255
+ [self = RefAsSubclass<Http2ClientTransport>()]() {
1256
+ return self->UntilTransportClosed(self->MultiplexerLoop());
1257
+ });
1258
+ if (flow_control_.bdp_probe()) {
1259
+ SpawnGuardedTransportParty(
1260
+ "BdpLoop", [self = RefAsSubclass<Http2ClientTransport>()]() {
1261
+ return self->UntilTransportClosed(self->BdpLoop());
1262
+ });
1263
+ }
1264
+
1371
1265
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::SpawnTransportLoops End";
1372
1266
  }
1373
1267
 
@@ -1379,10 +1273,8 @@ void Http2ClientTransport::ReadChannelArgs(const ChannelArgs& channel_args,
1379
1273
 
1380
1274
  // Assign the channel args to the member variables.
1381
1275
  keepalive_time_ = args.keepalive_time;
1382
- incoming_headers_.set_soft_limit(args.max_header_list_size_soft_limit);
1276
+ read_context_.set_soft_limit(args.max_header_list_size_soft_limit);
1383
1277
  keepalive_permit_without_calls_ = args.keepalive_permit_without_calls;
1384
- enable_preferred_rx_crypto_frame_advertisement_ =
1385
- args.enable_preferred_rx_crypto_frame_advertisement;
1386
1278
  test_only_ack_pings_ = args.test_only_ack_pings;
1387
1279
 
1388
1280
  if (args.initial_sequence_number > 0) {
@@ -1395,9 +1287,9 @@ void Http2ClientTransport::ReadChannelArgs(const ChannelArgs& channel_args,
1395
1287
  }
1396
1288
  }
1397
1289
 
1398
- absl::Status Http2ClientTransport::HandleError(
1399
- const std::optional<uint32_t> stream_id, Http2Status status,
1400
- DebugLocation whence) {
1290
+ absl::Status Http2ClientTransport::HandleError(RefCountedPtr<Stream> stream,
1291
+ Http2Status status,
1292
+ DebugLocation whence) {
1401
1293
  Http2Status::Http2ErrorType error_type = status.GetType();
1402
1294
  GRPC_DCHECK(error_type != Http2Status::Http2ErrorType::kOk);
1403
1295
 
@@ -1405,13 +1297,13 @@ absl::Status Http2ClientTransport::HandleError(
1405
1297
  GRPC_HTTP2_CLIENT_ERROR_DLOG
1406
1298
  << "Http2ClientTransport::HandleError Stream Error:"
1407
1299
  << status.DebugString();
1408
- GRPC_DCHECK(stream_id.has_value());
1300
+ GRPC_DCHECK(stream != nullptr);
1409
1301
  // Passing a cancelled server metadata handle to propagate the error
1410
1302
  // to the upper layers.
1411
1303
  BeginCloseStream(
1412
- LookupStream(stream_id.value()),
1304
+ std::move(stream),
1413
1305
  Http2ErrorCodeToFrameErrorCode(status.GetStreamErrorCode()),
1414
- CancelledServerMetadataFromStatus(status.GetAbslStreamError()), whence);
1306
+ status.GetAbslStreamError(), whence);
1415
1307
  return absl::OkStatus();
1416
1308
  } else if (error_type == Http2Status::Http2ErrorType::kConnectionError) {
1417
1309
  GRPC_HTTP2_CLIENT_ERROR_DLOG
@@ -1424,196 +1316,157 @@ absl::Status Http2ClientTransport::HandleError(
1424
1316
  GPR_UNREACHABLE_CODE(return absl::InternalError("Invalid error type"));
1425
1317
  }
1426
1318
 
1427
- // This function MUST be idempotent. This function MUST be called from the
1428
- // transport party.
1429
- void Http2ClientTransport::CloseStream(Stream& stream, CloseStreamArgs args,
1430
- DebugLocation whence) {
1431
- std::optional<Http2Status> close_transport_error;
1432
-
1433
- {
1434
- // TODO(akshitpatel) : [PH2][P3] : Measure the impact of holding mutex
1435
- // throughout this function.
1436
- MutexLock lock(&transport_mutex_);
1437
- GRPC_HTTP2_CLIENT_DLOG
1438
- << "Http2ClientTransport::CloseStream for stream id: "
1439
- << stream.GetStreamId() << " close_reads=" << args.close_reads
1440
- << " close_writes=" << args.close_writes
1441
- << " incoming_headers_=" << incoming_headers_.DebugString()
1442
- << " location=" << whence.file() << ":" << whence.line();
1443
-
1444
- if (args.close_writes) {
1445
- stream.SetWriteClosed();
1446
- }
1447
-
1448
- if (args.close_reads) {
1449
- GRPC_HTTP2_CLIENT_DLOG
1450
- << "Http2ClientTransport::CloseStream for stream id: "
1451
- << stream.GetStreamId() << " closing stream for reads.";
1452
- // If the stream is closed while reading HEADER/CONTINUATION frames, we
1453
- // should still parse the enqueued buffer to maintain HPACK state between
1454
- // peers.
1455
- if (incoming_headers_.IsWaitingForContinuationFrame()) {
1456
- Http2Status result = incoming_headers_.ParseAndDiscardHeaders(
1457
- SliceBuffer(), /*is_end_headers=*/false, &stream,
1458
- /*original_status=*/Http2Status::Ok(),
1459
- settings_->acked().max_header_list_size());
1460
- if (result.GetType() == Http2Status::Http2ErrorType::kConnectionError) {
1461
- GRPC_HTTP2_CLIENT_DLOG
1462
- << "Http2ClientTransport::CloseStream for stream id: "
1463
- << stream.GetStreamId() << " failed to partially process header: "
1464
- << result.DebugString();
1465
- close_transport_error.emplace(std::move(result));
1466
- }
1467
- }
1468
-
1469
- stream_list_.erase(stream.GetStreamId());
1470
- if (!close_transport_error.has_value() && CanCloseTransportLocked()) {
1471
- // TODO(akshitpatel) : [PH2][P3] : Is kInternalError the right error
1472
- // code to use here? IMO it should be kNoError.
1473
- close_transport_error.emplace(Http2Status::Http2ConnectionError(
1474
- Http2ErrorCode::kInternalError,
1475
- std::string(RFC9113::kLastStreamClosed)));
1319
+ void Http2ClientTransport::HandleStreamStateChange(Stream& stream,
1320
+ StreamStateChange change) {
1321
+ if (change.reads_became_closed) {
1322
+ // If a stream is closing for reads and was actively waiting for a
1323
+ // continuation frame, parse the buffered HEADER/CONTINUATION frames
1324
+ if (read_context_.IsWaitingForContinuationFrame() &&
1325
+ read_context_.GetStreamId() == stream.GetStreamId()) {
1326
+ Http2Status result = read_context_.ParseAndDiscardHeaders(
1327
+ SliceBuffer(), /*is_end_headers=*/false,
1328
+ /*original_status=*/Http2Status::Ok(),
1329
+ settings_->acked().max_header_list_size());
1330
+ if (GPR_UNLIKELY(result.GetType() ==
1331
+ Http2Status::Http2ErrorType::kConnectionError)) {
1332
+ GRPC_HTTP2_CLIENT_DLOG
1333
+ << "Http2ClientTransport::HandleStreamStateChange (DiscardHeaders) "
1334
+ "for "
1335
+ "stream id: "
1336
+ << stream.GetStreamId()
1337
+ << " failed to partially process header: " << result.DebugString();
1338
+ GRPC_UNUSED absl::Status unused =
1339
+ HandleError(/*stream=*/nullptr, std::move(result));
1340
+ return;
1476
1341
  }
1477
1342
  }
1478
1343
  }
1344
+ if (change.stream_became_closed) {
1345
+ CleanupStream(stream);
1346
+ }
1347
+ }
1348
+
1349
+ void Http2ClientTransport::CleanupStream(Stream& stream) {
1350
+ {
1351
+ MutexLock lock(transport_mutex_);
1352
+ stream_list_.erase(stream.GetStreamId());
1353
+ }
1354
+ // Subtract any positive announced window delta of closed stream from the
1355
+ // transport flow control.
1356
+ stream.GetStreamFlowControl().OnStreamClosed();
1357
+ }
1479
1358
 
1480
- if (close_transport_error.has_value()) {
1481
- GRPC_UNUSED absl::Status status = HandleError(
1482
- /*stream_id=*/std::nullopt, std::move(*close_transport_error));
1483
- }
1484
- }
1485
-
1486
- // This function is idempotent and MUST be called from the transport party.
1487
- // All the scenarios that can lead to this function being called are:
1488
- // 1. Reading a RST stream frame: In this case, the stream is immediately
1489
- // closed for reads and writes and removed from the stream_list_.
1490
- // 2. Reading a Trailing Metadata frame: There are two possible scenarios:
1491
- // a. The stream is closed for writes: Close the stream for reads and writes
1492
- // and remove the stream from the stream_list_.
1493
- // b. The stream is NOT closed for writes: Stream is kept open for reads and
1494
- // writes. CallHandler OnDone will trigger sending a half close frame. If
1495
- // before the multiplexer loop triggers sending a half close a RST stream
1496
- // is read, the stream is closed for reads and writes immediately and the
1497
- // half close is discarded. If no RST stream is read, the stream is closed
1498
- // for reads and writes upon sending the half close frame from the
1499
- // multiplexer loop.
1500
- // 3. Hitting error condition in the transport: In this case, RST stream is
1501
- // enqueued and the stream is closed for reads immediately. This implies we
1502
- // reduce the number of active streams inline. When multiplexer loop
1503
- // processes the RST stream frame, the stream ref will dropped. The other
1504
- // stream ref will be dropped when CallHandler's OnDone is executed causing
1505
- // the stream to be destroyed. CallHandlers OnDone also tries to enqueue a
1506
- // RST stream frame. This is a no-op at this point.
1507
- // 4. Application abort: In this case, CallHandler OnDone will enqueue RST
1508
- // stream frame to the stream data queue. The multiplexer loop will send the
1509
- // reset stream frame and close the stream from reads and writes.
1510
- // 5. Transport close: This takes up the same path as case 3.
1511
- // In all the above cases, trailing metadata is pushed to the call spine.
1512
- // Note: The stream ref is held in atmost 3 places:
1513
- // 1. stream_list_ : This is released when the stream is closed for reads.
1514
- // 2. CallHandler OnDone : This is released when Trailing Metadata is pushed to
1515
- // the call spine.
1516
- // 3. List of writable streams : This is released after the final frame is
1517
- // dequeued from the StreamDataQueue.
1518
1359
  void Http2ClientTransport::BeginCloseStream(
1519
- RefCountedPtr<Stream> stream,
1520
- std::optional<uint32_t> reset_stream_error_code,
1521
- ServerMetadataHandle&& metadata, DebugLocation whence) {
1360
+ RefCountedPtr<Stream> stream, uint32_t reset_stream_error_code,
1361
+ absl::Status trailing_metadata_status, DebugLocation whence) {
1362
+ GRPC_DCHECK(!trailing_metadata_status.ok());
1522
1363
  if (stream == nullptr) {
1523
1364
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::BeginCloseStream stream "
1524
1365
  "is null reset_stream_error_code="
1525
- << (reset_stream_error_code.has_value()
1526
- ? absl::StrCat(*reset_stream_error_code)
1527
- : "nullopt")
1528
- << " metadata=" << metadata->DebugString();
1366
+ << reset_stream_error_code;
1529
1367
  return;
1530
1368
  }
1531
1369
 
1532
1370
  GRPC_HTTP2_CLIENT_DLOG
1533
1371
  << "Http2ClientTransport::BeginCloseStream for stream id: "
1534
- << stream->GetStreamId() << " error_code="
1535
- << (reset_stream_error_code.has_value()
1536
- ? absl::StrCat(*reset_stream_error_code)
1537
- : "nullopt")
1538
- << " ServerMetadata=" << metadata->DebugString()
1539
- << " location=" << whence.file() << ":" << whence.line();
1540
-
1541
- bool close_reads = false;
1542
- bool close_writes = false;
1543
- if (metadata->get(GrpcCallWasCancelled())) {
1544
- if (!reset_stream_error_code) {
1545
- // Callers taking this path:
1546
- // 1. Reading a RST stream frame (will not send any frame out).
1547
- // 2. Closing a stream before initial metadata is sent.
1548
- close_reads = true;
1549
- close_writes = true;
1550
- GRPC_HTTP2_CLIENT_DLOG
1551
- << "Http2ClientTransport::BeginCloseStream for stream id: "
1552
- << stream->GetStreamId() << " close_reads= " << close_reads
1553
- << " close_writes= " << close_writes;
1554
- } else {
1555
- // Callers taking this path:
1556
- // 1. Processing Error in transport (will send reset stream from here).
1557
- absl::StatusOr<StreamWritabilityUpdate> enqueue_result =
1558
- stream->EnqueueResetStream(reset_stream_error_code.value());
1559
- GRPC_HTTP2_CLIENT_DLOG << "Enqueued ResetStream with error code="
1560
- << reset_stream_error_code.value()
1561
- << " status=" << enqueue_result.status();
1562
- if (enqueue_result.ok()) {
1563
- GRPC_UNUSED absl::Status status =
1564
- MaybeAddStreamToWritableStreamList(stream, enqueue_result.value());
1565
- }
1566
- close_reads = true;
1567
- GRPC_HTTP2_CLIENT_DLOG
1568
- << "Http2ClientTransport::BeginCloseStream for stream id: "
1569
- << stream->GetStreamId() << " close_reads= " << close_reads
1570
- << " close_writes= " << close_writes;
1571
- }
1572
- } else {
1573
- // Callers taking this path:
1574
- // 1. Reading Trailing Metadata (MAY send half close from OnDone).
1575
- // If a half close frame has already been sent, we should close the stream
1576
- // for reads and writes.
1577
- if (stream->IsHalfClosedLocal() || stream->IsStreamClosed()) {
1578
- close_reads = true;
1579
- close_writes = true;
1580
- GRPC_HTTP2_CLIENT_DLOG
1581
- << "Http2ClientTransport::BeginCloseStream for stream id: "
1582
- << stream->GetStreamId() << " close_reads= " << close_reads
1583
- << " close_writes= " << close_writes;
1584
- }
1585
- }
1586
-
1587
- if (close_reads || close_writes) {
1588
- CloseStream(*stream, CloseStreamArgs{close_reads, close_writes}, whence);
1589
- }
1372
+ << stream->GetStreamId() << " error_code=" << reset_stream_error_code
1373
+ << " status=" << trailing_metadata_status << " location=" << whence.file()
1374
+ << ":" << whence.line();
1590
1375
 
1591
- // If the call was cancelled, the stream MUST be closed for reads.
1592
- GRPC_DCHECK(metadata->get(GrpcCallWasCancelled()) ? close_reads : true);
1376
+ // Enqueue RST_STREAM.
1377
+ EnqueueResetStreamFromTransportParty(stream, reset_stream_error_code);
1378
+ HandleStreamStateChange(
1379
+ *stream, stream->OnInitiateReset(std::move(trailing_metadata_status)));
1380
+ }
1593
1381
 
1594
- // This maybe called multiple times while closing a stream. In CallV3, the
1595
- // flow for pushing server trailing metadata is idempotent. However, there is
1596
- // a subtle difference. When we push server trailing metadata with a cancelled
1597
- // status PushServerTrailingMetadata is spawned inline on the Call party
1598
- // whereas for the non-cancelled status, PushServerTrailingMetadata is
1599
- // spawned in the server_to_client spawn serializer. Because of this, in
1600
- // case when the server pushes trailing metadata (non-cancelled) followed by a
1601
- // RST stream with cancelled status, it is possible that the cancelled
1602
- // trailing metadata (for RST stream) is processed before. This would result
1603
- // in losing the actual status/message pushed by the server.
1604
- // To address this, we push the server trailing metadata to the stream only
1605
- // if it is not pushed already.
1606
- stream->MaybePushServerTrailingMetadata(std::move(metadata));
1382
+ void Http2ClientTransport::EnqueueResetStreamFromTransportParty(
1383
+ RefCountedPtr<Stream> stream, const uint32_t reset_stream_error_code) {
1384
+ const absl::StatusOr<StreamWritabilityUpdate> enqueue_result =
1385
+ stream->EnqueueResetStream(reset_stream_error_code);
1386
+ GRPC_HTTP2_CLIENT_DLOG << "Enqueued ResetStream with error code="
1387
+ << reset_stream_error_code
1388
+ << " status=" << enqueue_result.status();
1389
+ if (GPR_LIKELY(enqueue_result.ok())) {
1390
+ GRPC_UNUSED absl::Status status = MaybeAddStreamToWritableStreamList(
1391
+ std::move(stream), enqueue_result.value());
1392
+ }
1393
+ // This function could be hit multiple times for the same stream. So there is
1394
+ // a chance that we may overcount induced frames.
1395
+ // It is a bug, but not worth fixing for now.
1396
+ read_context_.OnResetFrameEnqueued(reset_stream_error_code);
1607
1397
  }
1608
1398
 
1609
1399
  void Http2ClientTransport::CloseTransport() {
1610
1400
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CloseTransport";
1611
1401
 
1612
- transport_closed_latch_.Set();
1402
+ shutdown_tracker_.MarkShutdownComplete();
1613
1403
  settings_->HandleTransportShutdown(event_engine_.get());
1614
1404
 
1615
- // This is the only place where the general_party_ is reset.
1616
- general_party_.reset();
1405
+ // This is the only place where the transport_party_ is reset.
1406
+ transport_party_.reset();
1407
+ }
1408
+
1409
+ void Http2ClientTransport::CloseAllActiveStreams(
1410
+ absl::flat_hash_map<uint32_t, RefCountedPtr<Stream>>&& stream_list,
1411
+ const Http2Status& http2_status, DebugLocation whence) {
1412
+ // Close all the streams that are still active on the transport.
1413
+ absl::flat_hash_map<uint32_t, RefCountedPtr<Stream>> stream_list_2;
1414
+ {
1415
+ MutexLock lock(transport_mutex_);
1416
+ stream_list_2 = std::move(stream_list_);
1417
+ stream_list_.clear();
1418
+ }
1419
+
1420
+ GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CloseAllActiveStreams "
1421
+ "Cleaning up call stacks";
1422
+
1423
+ auto close_streams =
1424
+ [&](const absl::flat_hash_map<uint32_t, RefCountedPtr<Stream>>& list) {
1425
+ for (const auto& pair : list) {
1426
+ RefCountedPtr<Stream> stream = pair.second;
1427
+ BeginCloseStream(std::move(stream),
1428
+ Http2ErrorCodeToFrameErrorCode(
1429
+ http2_status.GetConnectionErrorCode()),
1430
+ http2_status.GetAbslConnectionError(), whence);
1431
+ }
1432
+ };
1433
+
1434
+ close_streams(stream_list); // Snapshot 1
1435
+ close_streams(stream_list_2); // Snapshot 2
1436
+ }
1437
+
1438
+ auto Http2ClientTransport::CloseTransportFactory(
1439
+ absl::flat_hash_map<uint32_t, RefCountedPtr<Stream>> stream_list,
1440
+ Http2Status http2_status, DebugLocation whence) {
1441
+ return [self = RefAsSubclass<Http2ClientTransport>(),
1442
+ stream_list = std::move(stream_list),
1443
+ http2_status = std::move(http2_status), whence]() mutable {
1444
+ self->shutdown_tracker_.InitiatePartyShutdown();
1445
+ self->security_frame_handler_->OnTransportClosed();
1446
+
1447
+ self->CloseAllActiveStreams(std::move(stream_list), http2_status, whence);
1448
+
1449
+ // RFC9113 : A GOAWAY frame might not immediately precede closing of
1450
+ // the connection; a receiver of a GOAWAY that has no more use for the
1451
+ // connection SHOULD still send a GOAWAY frame before terminating the
1452
+ // connection.
1453
+ return Map(
1454
+ // TODO(akshitpatel) : [PH2][P4] : This is creating a copy of
1455
+ // the debug data. Verify if this is causing a performance
1456
+ // issue.
1457
+ Race(AssertResultType<absl::Status>(self->goaway_manager_.RequestGoaway(
1458
+ http2_status.GetConnectionErrorCode(),
1459
+ /*debug_data=*/
1460
+ Slice::FromCopiedString(
1461
+ http2_status.GetAbslConnectionError().message()),
1462
+ kLastIncomingStreamIdClient, /*immediate=*/true)),
1463
+ // Failsafe to close.
1464
+ Sleep(Duration::Seconds(kGoawaySendTimeoutSeconds))),
1465
+ [self](auto) mutable {
1466
+ self->CloseTransport();
1467
+ return Empty{};
1468
+ });
1469
+ };
1617
1470
  }
1618
1471
 
1619
1472
  void Http2ClientTransport::MaybeSpawnCloseTransport(Http2Status http2_status,
@@ -1627,14 +1480,14 @@ void Http2ClientTransport::MaybeSpawnCloseTransport(Http2Status http2_status,
1627
1480
  // in the MPSC to be drained and block any additional frames from being
1628
1481
  // enqueued. Additionally this also prevents additional frames with non-zero
1629
1482
  // stream_ids from being processed by the read loop.
1630
- ReleasableMutexLock lock(&transport_mutex_);
1631
- if (is_transport_closed_) {
1483
+ ReleasableMutexLock lock(transport_mutex_);
1484
+ if (shutdown_tracker_.IsShutdownInitiated(transport_mutex_)) {
1632
1485
  lock.Release();
1633
1486
  return;
1634
1487
  }
1635
1488
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::MaybeSpawnCloseTransport "
1636
1489
  "Initiating transport close";
1637
- is_transport_closed_ = true;
1490
+ shutdown_tracker_.InitiateShutdown(transport_mutex_);
1638
1491
  absl::flat_hash_map<uint32_t, RefCountedPtr<Stream>> stream_list =
1639
1492
  std::move(stream_list_);
1640
1493
  stream_list_.clear();
@@ -1644,71 +1497,14 @@ void Http2ClientTransport::MaybeSpawnCloseTransport(Http2Status http2_status,
1644
1497
  lock.Release();
1645
1498
 
1646
1499
  SpawnInfallibleTransportParty(
1647
- "CloseTransport", [self = RefAsSubclass<Http2ClientTransport>(),
1648
- stream_list = std::move(stream_list),
1649
- http2_status = std::move(http2_status)]() mutable {
1650
- self->security_frame_handler_->OnTransportClosed();
1651
- GRPC_HTTP2_CLIENT_DLOG
1652
- << "Http2ClientTransport::MaybeSpawnCloseTransport "
1653
- "Cleaning up call stacks";
1654
- // Clean up the call stacks for all active streams.
1655
- for (const auto& pair : stream_list) {
1656
- // There is no merit in transitioning the stream to
1657
- // closed state here as the subsequent lookups would
1658
- // fail. Also, as this is running on the transport
1659
- // party, there would not be concurrent access to the stream.
1660
- RefCountedPtr<Stream> stream = pair.second;
1661
- self->BeginCloseStream(std::move(stream),
1662
- Http2ErrorCodeToFrameErrorCode(
1663
- http2_status.GetConnectionErrorCode()),
1664
- CancelledServerMetadataFromStatus(
1665
- http2_status.GetAbslConnectionError()));
1666
- }
1667
-
1668
- // RFC9113 : A GOAWAY frame might not immediately precede closing of
1669
- // the connection; a receiver of a GOAWAY that has no more use for the
1670
- // connection SHOULD still send a GOAWAY frame before terminating the
1671
- // connection.
1672
- return Map(
1673
- // TODO(akshitpatel) : [PH2][P4] : This is creating a copy of
1674
- // the debug data. Verify if this is causing a performance
1675
- // issue.
1676
- Race(AssertResultType<absl::Status>(
1677
- self->goaway_manager_.RequestGoaway(
1678
- http2_status.GetConnectionErrorCode(),
1679
- /*debug_data=*/
1680
- Slice::FromCopiedString(
1681
- http2_status.GetAbslConnectionError().message()),
1682
- kLastIncomingStreamIdClient, /*immediate=*/true)),
1683
- // Failsafe to close the transport if goaway is not
1684
- // sent within kGoawaySendTimeoutSeconds seconds.
1685
- Sleep(Duration::Seconds(kGoawaySendTimeoutSeconds))),
1686
- [self](auto) mutable {
1687
- self->CloseTransport();
1688
- return Empty{};
1689
- });
1690
- ;
1691
- });
1692
- }
1693
-
1694
- bool Http2ClientTransport::CanCloseTransportLocked() const {
1695
- // If there are no more streams and next stream id is greater than the
1696
- // max allowed stream id, then no more streams can be created and it is
1697
- // safe to close the transport.
1698
- GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CanCloseTransportLocked "
1699
- "GetActiveStreamCountLocked="
1700
- << GetActiveStreamCountLocked()
1701
- << " PeekNextStreamId=" << PeekNextStreamId()
1702
- << " GetMaxAllowedStreamId="
1703
- << GetMaxAllowedStreamId();
1704
- return GetActiveStreamCountLocked() == 0 &&
1705
- PeekNextStreamId() > GetMaxAllowedStreamId();
1500
+ "CloseTransport", CloseTransportFactory(std::move(stream_list),
1501
+ std::move(http2_status), whence));
1706
1502
  }
1707
1503
 
1708
1504
  Http2ClientTransport::~Http2ClientTransport() {
1709
1505
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::~Http2ClientTransport Begin";
1710
1506
  GRPC_DCHECK(stream_list_.empty());
1711
- GRPC_DCHECK(general_party_ == nullptr);
1507
+ GRPC_DCHECK(transport_party_ == nullptr);
1712
1508
  memory_owner_.Reset();
1713
1509
  GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::~Http2ClientTransport End";
1714
1510
  }
@@ -1726,11 +1522,13 @@ void Http2ClientTransport::SpawnAddChannelzData(RefCountedPtr<Party> party,
1726
1522
  .Set("keepalive_time", self->keepalive_time_)
1727
1523
  .Set("keepalive_permit_without_calls",
1728
1524
  self->keepalive_permit_without_calls_)
1525
+ .Set("max_requests_per_read",
1526
+ self->read_context_.max_new_streams_per_read_cycle())
1729
1527
  .Set("settings", self->settings_->ChannelzProperties())
1730
1528
  .Set("flow_control",
1731
1529
  self->flow_control_.stats().ChannelzProperties()));
1732
- self->general_party_->ExportToChannelz("Http2ClientTransport Party",
1733
- sink);
1530
+ self->transport_party_->ExportToChannelz("Http2ClientTransport Party",
1531
+ sink);
1734
1532
  GRPC_HTTP2_CLIENT_DLOG
1735
1533
  << "Http2ClientTransport::SpawnAddChannelzData End";
1736
1534
  return Empty{};
@@ -1744,10 +1542,11 @@ void Http2ClientTransport::AddData(channelz::DataSink sink) {
1744
1542
  sink = std::move(sink)]() mutable {
1745
1543
  RefCountedPtr<Party> party = nullptr;
1746
1544
  {
1747
- MutexLock lock(&self->transport_mutex_);
1748
- if (GPR_LIKELY(!self->is_transport_closed_)) {
1749
- GRPC_DCHECK(self->general_party_ != nullptr);
1750
- party = self->general_party_;
1545
+ MutexLock lock(self->transport_mutex_);
1546
+ if (GPR_LIKELY(!self->shutdown_tracker_.IsShutdownInitiated(
1547
+ self->transport_mutex_))) {
1548
+ GRPC_DCHECK(self->transport_party_ != nullptr);
1549
+ party = self->transport_party_;
1751
1550
  } else {
1752
1551
  GRPC_HTTP2_CLIENT_DLOG
1753
1552
  << "Http2ClientTransport::AddData Transport is closed.";
@@ -1777,8 +1576,8 @@ RefCountedPtr<channelz::SocketNode> Http2ClientTransport::GetSocketNode()
1777
1576
 
1778
1577
  absl::StatusOr<uint32_t> Http2ClientTransport::NextStreamId() {
1779
1578
  if (next_stream_id_ > GetMaxAllowedStreamId()) {
1780
- // TODO(tjagtap) : [PH2][P3] : Handle case if transport runs out of stream
1781
- // ids
1579
+ // TODO(tjagtap) : [PH2][P2] : Handle case if transport runs out of stream
1580
+ // ids. Similar check is there in the same function. Check what to do.
1782
1581
  // RFC9113 : Stream identifiers cannot be reused. Long-lived connections
1783
1582
  // can result in an endpoint exhausting the available range of stream
1784
1583
  // identifiers. A client that is unable to establish a new stream
@@ -1796,7 +1595,7 @@ absl::StatusOr<uint32_t> Http2ClientTransport::NextStreamId() {
1796
1595
  // this for incoming streams only. If a server receives more
1797
1596
  // streams from a client than is allowed by the clients settings,
1798
1597
  // whether or not we should fail is debatable.
1799
- MutexLock lock(&transport_mutex_);
1598
+ MutexLock lock(transport_mutex_);
1800
1599
  if (GetActiveStreamCountLocked() >=
1801
1600
  settings_->peer().max_concurrent_streams()) {
1802
1601
  return absl::ResourceExhaustedError("Reached max concurrent streams");
@@ -1824,23 +1623,23 @@ absl::Status Http2ClientTransport::MaybeAddStreamToWritableStreamList(
1824
1623
  << "Http2ClientTransport::MaybeAddStreamToWritableStreamList Stream "
1825
1624
  "id: "
1826
1625
  << stream->GetStreamId() << " became writable";
1827
- // TODO(akshitpatel) [Perf]: Might be worth exploring if this funciton
1828
- // should take a raw stream ptr and take a ref here.
1626
+ // TODO(akshitpatel) [PH2][P4][Perf]: Might be worth exploring if this
1627
+ // function should take a raw stream ptr and take a ref here.
1829
1628
  absl::Status status =
1830
1629
  writable_stream_list_.Enqueue(std::move(stream), result.priority);
1831
1630
  if (!status.ok()) {
1832
1631
  return HandleError(
1833
- std::nullopt,
1632
+ /*stream=*/nullptr,
1834
1633
  Http2Status::Http2ConnectionError(
1835
1634
  Http2ErrorCode::kRefusedStream,
1836
- "Failed to enqueue stream to writable stream list"));
1635
+ std::string(GrpcErrors::kFailedToEnqueueStream)));
1837
1636
  }
1838
1637
  }
1839
1638
  return absl::OkStatus();
1840
1639
  }
1841
1640
 
1842
1641
  RefCountedPtr<Stream> Http2ClientTransport::LookupStream(uint32_t stream_id) {
1843
- MutexLock lock(&transport_mutex_);
1642
+ MutexLock lock(transport_mutex_);
1844
1643
  auto it = stream_list_.find(stream_id);
1845
1644
  if (it == stream_list_.end()) {
1846
1645
  GRPC_HTTP2_CLIENT_DLOG
@@ -1932,14 +1731,10 @@ void Http2ClientTransport::SetMaxAllowedStreamId(
1932
1731
  if (GPR_LIKELY(max_allowed_stream_id <= old_max_allowed_stream_id)) {
1933
1732
  max_allowed_stream_id_ = max_allowed_stream_id;
1934
1733
  } else {
1734
+ GRPC_DCHECK_LE(max_allowed_stream_id, old_max_allowed_stream_id);
1935
1735
  LOG_IF(ERROR, max_allowed_stream_id > old_max_allowed_stream_id)
1936
1736
  << "Endpoints MUST NOT increase the value they send in the last "
1937
- "stream "
1938
- "identifier";
1939
- GRPC_DCHECK_LE(max_allowed_stream_id, old_max_allowed_stream_id)
1940
- << "Endpoints MUST NOT increase the value they send in the last "
1941
- "stream "
1942
- "identifier";
1737
+ "stream identifier";
1943
1738
  }
1944
1739
  }
1945
1740
 
@@ -1968,7 +1763,7 @@ auto Http2ClientTransport::CallOutboundLoop(RefCountedPtr<Stream> stream) {
1968
1763
  if (GPR_UNLIKELY(!enqueue_result.ok())) {
1969
1764
  return enqueue_result.status();
1970
1765
  }
1971
- GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport CallOutboundLoop "
1766
+ GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CallOutboundLoop "
1972
1767
  "Enqueued Initial Metadata";
1973
1768
  return MaybeAddStreamToWritableStreamList(std::move(stream),
1974
1769
  enqueue_result.value());
@@ -1980,7 +1775,7 @@ auto Http2ClientTransport::CallOutboundLoop(RefCountedPtr<Stream> stream) {
1980
1775
  if (GPR_UNLIKELY(!enqueue_result.ok())) {
1981
1776
  return enqueue_result.status();
1982
1777
  }
1983
- GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport CallOutboundLoop "
1778
+ GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CallOutboundLoop "
1984
1779
  "Enqueued Half Closed";
1985
1780
  return MaybeAddStreamToWritableStreamList(std::move(stream),
1986
1781
  enqueue_result.value());
@@ -2004,15 +1799,31 @@ auto Http2ClientTransport::CallOutboundLoop(RefCountedPtr<Stream> stream) {
2004
1799
  [send_half_closed = std::move(send_half_closed)]() mutable {
2005
1800
  return std::move(send_half_closed)();
2006
1801
  },
2007
- [stream]() mutable {
1802
+ [this, stream]() mutable {
2008
1803
  return Map(
2009
- stream->GetCallHandler().WasCancelled(), [](bool cancelled) {
1804
+ stream->GetCallHandler().WasCancelled(),
1805
+ [this, stream](bool cancelled) mutable {
2010
1806
  GRPC_HTTP2_CLIENT_DLOG
2011
1807
  << "Http2ClientTransport::CallOutboundLoop End with "
2012
1808
  "cancelled="
2013
1809
  << cancelled;
2014
- return (cancelled) ? absl::CancelledError()
2015
- : absl::OkStatus();
1810
+ if (cancelled) {
1811
+ // Enqueue an RST_STREAM frame immediately upon call
1812
+ // cancellation rather than waiting for CallHandler::OnDone.
1813
+ absl::StatusOr<StreamWritabilityUpdate> enqueue_result =
1814
+ stream->EnqueueResetStream(
1815
+ static_cast<uint32_t>(Http2ErrorCode::kCancel));
1816
+ GRPC_HTTP2_CLIENT_DLOG
1817
+ << "Enqueued ResetStream with error code="
1818
+ << static_cast<uint32_t>(Http2ErrorCode::kCancel)
1819
+ << " status=" << enqueue_result.status();
1820
+ if (GPR_LIKELY(enqueue_result.ok())) {
1821
+ GRPC_UNUSED absl::Status status =
1822
+ MaybeAddStreamToWritableStreamList(
1823
+ std::move(stream), enqueue_result.value());
1824
+ }
1825
+ }
1826
+ return absl::OkStatus();
2016
1827
  });
2017
1828
  }));
2018
1829
  }
@@ -2112,7 +1923,7 @@ Http2ClientTransport::PingSystemInterfaceImpl::PingTimeout() {
2112
1923
  // kRefusedStream doesn't seem to fit this case. We should revisit this
2113
1924
  // and update the error code.
2114
1925
  return Immediate(transport_->HandleError(
2115
- std::nullopt,
1926
+ nullptr,
2116
1927
  Http2Status::Http2ConnectionError(Http2ErrorCode::kRefusedStream,
2117
1928
  GRPC_CHTTP2_PING_TIMEOUT_STR)));
2118
1929
  }
@@ -2144,7 +1955,7 @@ Http2ClientTransport::KeepAliveInterfaceImpl::OnKeepAliveTimeout() {
2144
1955
  // kRefusedStream doesn't seem to fit this case. We should revisit this
2145
1956
  // and update the error code.
2146
1957
  return Immediate(transport_->HandleError(
2147
- std::nullopt,
1958
+ nullptr,
2148
1959
  Http2Status::Http2ConnectionError(Http2ErrorCode::kRefusedStream,
2149
1960
  GRPC_CHTTP2_KEEPALIVE_TIMEOUT_STR)));
2150
1961
  }
@@ -2152,7 +1963,7 @@ Http2ClientTransport::KeepAliveInterfaceImpl::OnKeepAliveTimeout() {
2152
1963
  bool Http2ClientTransport::KeepAliveInterfaceImpl::NeedToSendKeepAlivePing() {
2153
1964
  bool need_to_send_ping = false;
2154
1965
  {
2155
- MutexLock lock(&transport_->transport_mutex_);
1966
+ MutexLock lock(transport_->transport_mutex_);
2156
1967
  need_to_send_ping = (transport_->keepalive_permit_without_calls_ ||
2157
1968
  transport_->GetActiveStreamCountLocked() > 0);
2158
1969
  }
@@ -2177,7 +1988,7 @@ uint32_t Http2ClientTransport::GoawayInterfaceImpl::GetLastAcceptedStreamId() {
2177
1988
  // TODO(akshitpatel) : [PH2][P2] : Eventually there should be a separate ref
2178
1989
  // counted struct/class passed to all the transport promises/members. This
2179
1990
  // will help removing back references from the transport members to
2180
- // transport and greatly simpilfy the cleanup path. Need to do this for
1991
+ // transport and greatly simplify the cleanup path. Need to do this for
2181
1992
  // PingSystemInterfaceImpl, KeepAliveInterfaceImpl and GoawayInterfaceImpl.
2182
1993
 
2183
1994
  } // namespace http2