grpc 1.50.0 → 1.56.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (2554) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +453 -176
  3. data/include/grpc/byte_buffer.h +76 -1
  4. data/include/grpc/byte_buffer_reader.h +19 -1
  5. data/include/grpc/compression.h +2 -2
  6. data/include/grpc/event_engine/event_engine.h +83 -23
  7. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
  8. data/include/grpc/event_engine/internal/slice_cast.h +67 -0
  9. data/include/grpc/event_engine/memory_allocator.h +1 -1
  10. data/include/grpc/event_engine/slice.h +24 -4
  11. data/include/grpc/event_engine/slice_buffer.h +44 -3
  12. data/include/grpc/fork.h +25 -1
  13. data/include/grpc/grpc.h +3 -13
  14. data/include/grpc/grpc_audit_logging.h +96 -0
  15. data/include/grpc/grpc_posix.h +1 -1
  16. data/include/grpc/grpc_security.h +4 -0
  17. data/include/grpc/impl/codegen/atm.h +3 -71
  18. data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -58
  19. data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -59
  20. data/include/grpc/impl/codegen/atm_windows.h +3 -106
  21. data/include/grpc/impl/codegen/byte_buffer.h +4 -78
  22. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
  23. data/include/grpc/impl/codegen/compression_types.h +3 -82
  24. data/include/grpc/impl/codegen/connectivity_state.h +3 -20
  25. data/include/grpc/impl/codegen/fork.h +4 -25
  26. data/include/grpc/impl/codegen/gpr_types.h +2 -34
  27. data/include/grpc/impl/codegen/grpc_types.h +3 -791
  28. data/include/grpc/impl/codegen/log.h +3 -86
  29. data/include/grpc/impl/codegen/port_platform.h +3 -758
  30. data/include/grpc/impl/codegen/propagation_bits.h +3 -28
  31. data/include/grpc/impl/codegen/slice.h +3 -106
  32. data/include/grpc/impl/codegen/status.h +4 -131
  33. data/include/grpc/impl/codegen/sync.h +3 -42
  34. data/include/grpc/impl/codegen/sync_abseil.h +3 -12
  35. data/include/grpc/impl/codegen/sync_custom.h +3 -14
  36. data/include/grpc/impl/codegen/sync_generic.h +3 -25
  37. data/include/grpc/impl/codegen/sync_posix.h +3 -28
  38. data/include/grpc/impl/codegen/sync_windows.h +3 -16
  39. data/include/grpc/impl/compression_types.h +109 -0
  40. data/include/grpc/impl/connectivity_state.h +47 -0
  41. data/include/grpc/impl/grpc_types.h +838 -0
  42. data/include/grpc/impl/propagation_bits.h +54 -0
  43. data/include/grpc/impl/slice_type.h +112 -0
  44. data/include/grpc/load_reporting.h +1 -1
  45. data/include/grpc/module.modulemap +7 -1
  46. data/include/grpc/slice.h +1 -1
  47. data/include/grpc/status.h +131 -1
  48. data/include/grpc/support/atm.h +70 -1
  49. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  50. data/include/grpc/support/atm_gcc_sync.h +58 -1
  51. data/include/grpc/support/atm_windows.h +105 -1
  52. data/include/grpc/support/json.h +218 -0
  53. data/include/grpc/support/log.h +87 -1
  54. data/include/grpc/support/log_windows.h +1 -1
  55. data/include/grpc/support/port_platform.h +767 -1
  56. data/include/grpc/support/string_util.h +1 -1
  57. data/include/grpc/support/sync.h +35 -2
  58. data/include/grpc/support/sync_abseil.h +11 -1
  59. data/include/grpc/support/sync_custom.h +13 -1
  60. data/include/grpc/support/sync_generic.h +24 -1
  61. data/include/grpc/support/sync_posix.h +27 -1
  62. data/include/grpc/support/sync_windows.h +15 -1
  63. data/include/grpc/support/time.h +31 -6
  64. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +164 -0
  65. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
  66. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
  67. data/src/core/ext/filters/census/grpc_context.cc +17 -18
  68. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +28 -22
  69. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +5 -4
  70. data/src/core/ext/filters/channel_idle/idle_filter_state.h +4 -4
  71. data/src/core/ext/filters/client_channel/backend_metric.cc +12 -1
  72. data/src/core/ext/filters/client_channel/backend_metric.h +3 -3
  73. data/src/core/ext/filters/client_channel/backup_poller.cc +26 -35
  74. data/src/core/ext/filters/client_channel/backup_poller.h +24 -27
  75. data/src/core/ext/filters/client_channel/channel_connectivity.cc +51 -28
  76. data/src/core/ext/filters/client_channel/client_channel.cc +1014 -1016
  77. data/src/core/ext/filters/client_channel/client_channel.h +155 -187
  78. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +36 -37
  79. data/src/core/ext/filters/client_channel/client_channel_channelz.h +22 -22
  80. data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -17
  81. data/src/core/ext/filters/client_channel/client_channel_factory.h +3 -3
  82. data/src/core/ext/filters/client_channel/client_channel_internal.h +77 -0
  83. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -18
  84. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  85. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  86. data/src/core/ext/filters/client_channel/config_selector.h +25 -55
  87. data/src/core/ext/filters/client_channel/connector.h +9 -5
  88. data/src/core/ext/filters/client_channel/dynamic_filters.cc +28 -55
  89. data/src/core/ext/filters/client_channel/dynamic_filters.h +10 -11
  90. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +21 -21
  91. data/src/core/ext/filters/client_channel/http_proxy.cc +74 -42
  92. data/src/core/ext/filters/client_channel/http_proxy.h +21 -21
  93. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  94. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -3
  95. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +29 -21
  96. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +7 -2
  97. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +3 -4
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +66 -130
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +40 -24
  100. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +156 -178
  101. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +26 -27
  102. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  103. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +4 -6
  104. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
  105. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +21 -22
  106. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +19 -20
  107. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +22 -23
  108. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
  109. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
  110. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
  111. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +11 -94
  112. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +4 -4
  113. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
  114. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +263 -242
  115. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +28 -7
  116. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +28 -26
  117. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +76 -112
  118. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +159 -168
  119. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +22 -5
  120. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +173 -171
  121. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +31 -25
  122. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +68 -31
  123. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +198 -0
  124. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
  125. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +1002 -0
  126. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +76 -70
  127. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +103 -105
  128. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  129. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  130. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
  131. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +34 -41
  132. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +76 -113
  133. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +111 -185
  134. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +814 -0
  135. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +67 -0
  136. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +363 -0
  137. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +21 -21
  138. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -10
  139. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +59 -175
  140. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.h +30 -0
  141. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +42 -43
  142. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +22 -23
  143. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +92 -87
  144. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +153 -153
  145. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +54 -55
  146. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  147. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
  148. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +60 -0
  149. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.h +27 -0
  150. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +549 -0
  151. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.h +35 -0
  152. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +97 -0
  153. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.h +32 -0
  154. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -39
  155. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.h +24 -0
  156. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  157. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +4 -4
  158. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +85 -223
  159. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +45 -36
  160. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +12 -15
  161. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  162. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +280 -189
  163. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +19 -4
  164. data/src/core/ext/filters/client_channel/retry_filter.cc +200 -264
  165. data/src/core/ext/filters/client_channel/retry_filter.h +3 -3
  166. data/src/core/ext/filters/client_channel/retry_service_config.cc +195 -236
  167. data/src/core/ext/filters/client_channel/retry_service_config.h +23 -26
  168. data/src/core/ext/filters/client_channel/retry_throttle.cc +27 -29
  169. data/src/core/ext/filters/client_channel/retry_throttle.h +29 -28
  170. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +17 -47
  171. data/src/core/ext/filters/client_channel/subchannel.cc +133 -337
  172. data/src/core/ext/filters/client_channel/subchannel.h +23 -86
  173. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -3
  174. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +21 -21
  175. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +36 -38
  176. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +11 -8
  177. data/src/core/ext/filters/deadline/deadline_filter.cc +73 -64
  178. data/src/core/ext/filters/deadline/deadline_filter.h +6 -10
  179. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -2
  180. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +3 -7
  181. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  182. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  183. data/src/core/ext/filters/http/client/http_client_filter.cc +47 -43
  184. data/src/core/ext/filters/http/client/http_client_filter.h +20 -20
  185. data/src/core/ext/filters/http/client_authority_filter.cc +19 -19
  186. data/src/core/ext/filters/http/client_authority_filter.h +21 -21
  187. data/src/core/ext/filters/http/http_filters_plugin.cc +30 -57
  188. data/src/core/ext/filters/http/message_compress/compression_filter.cc +323 -0
  189. data/src/core/ext/filters/http/message_compress/compression_filter.h +139 -0
  190. data/src/core/ext/filters/http/server/http_server_filter.cc +54 -52
  191. data/src/core/ext/filters/http/server/http_server_filter.h +21 -21
  192. data/src/core/ext/filters/message_size/message_size_filter.cc +184 -297
  193. data/src/core/ext/filters/message_size/message_size_filter.h +72 -20
  194. data/src/core/ext/filters/rbac/rbac_filter.cc +16 -15
  195. data/src/core/ext/filters/rbac/rbac_filter.h +3 -3
  196. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +829 -538
  197. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +7 -6
  198. data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -11
  199. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +12 -16
  200. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +3 -3
  201. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +220 -0
  202. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +81 -0
  203. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  204. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  205. data/src/core/ext/gcp/metadata_query.cc +137 -0
  206. data/src/core/ext/gcp/metadata_query.h +87 -0
  207. data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
  208. data/src/core/ext/transport/chttp2/alpn/alpn.h +24 -24
  209. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +68 -67
  210. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +30 -24
  211. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +149 -149
  212. data/src/core/ext/transport/chttp2/server/chttp2_server.h +21 -21
  213. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -22
  214. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +33 -33
  215. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +41 -37
  216. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +35 -31
  217. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +673 -455
  218. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +42 -22
  219. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +70 -0
  220. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -36
  221. data/src/core/ext/transport/chttp2/transport/decode_huff.h +38 -85
  222. data/src/core/ext/transport/chttp2/transport/flow_control.cc +130 -107
  223. data/src/core/ext/transport/chttp2/transport/flow_control.h +66 -39
  224. data/src/core/ext/transport/chttp2/transport/frame.h +21 -21
  225. data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -32
  226. data/src/core/ext/transport/chttp2/transport/frame_data.h +27 -27
  227. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +38 -36
  228. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +20 -20
  229. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +27 -31
  230. data/src/core/ext/transport/chttp2/transport/frame_ping.h +21 -24
  231. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +30 -25
  232. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +21 -21
  233. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +39 -37
  234. data/src/core/ext/transport/chttp2/transport/frame_settings.h +22 -22
  235. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +24 -21
  236. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +21 -21
  237. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +3 -3
  238. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +201 -353
  239. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +328 -164
  240. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +4 -1
  241. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +5 -3
  242. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +498 -744
  243. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +30 -26
  244. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +41 -37
  245. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +30 -22
  246. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  247. data/src/core/ext/transport/chttp2/transport/http2_settings.h +39 -37
  248. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  249. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  250. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  251. data/src/core/ext/transport/chttp2/transport/huffsyms.h +21 -21
  252. data/src/core/ext/transport/chttp2/transport/internal.h +220 -192
  253. data/src/core/ext/transport/chttp2/transport/parsing.cc +263 -109
  254. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
  255. data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
  256. data/src/core/ext/transport/chttp2/transport/stream_map.h +33 -33
  257. data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
  258. data/src/core/ext/transport/chttp2/transport/varint.h +37 -34
  259. data/src/core/ext/transport/chttp2/transport/writing.cc +93 -72
  260. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
  261. data/src/core/ext/transport/inproc/inproc_transport.cc +143 -155
  262. data/src/core/ext/transport/inproc/inproc_transport.h +21 -21
  263. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +87 -52
  264. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +414 -181
  265. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -59
  266. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +485 -219
  267. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +90 -55
  268. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +415 -188
  269. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +377 -194
  270. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1694 -666
  271. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +30 -17
  272. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +144 -47
  273. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +34 -21
  274. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -62
  275. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +27 -14
  276. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +78 -38
  277. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +20 -11
  278. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +48 -26
  279. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +20 -11
  280. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +48 -26
  281. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +109 -62
  282. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +566 -244
  283. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +21 -12
  284. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +45 -30
  285. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +22 -19
  286. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +82 -29
  287. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +23 -16
  288. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +45 -30
  289. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +230 -143
  290. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +733 -404
  291. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +417 -258
  292. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1873 -867
  293. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -41
  294. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +286 -148
  295. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +537 -349
  296. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2038 -1178
  297. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -12
  298. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +45 -30
  299. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -52
  300. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +347 -232
  301. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +264 -165
  302. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +888 -476
  303. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +154 -72
  304. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +603 -213
  305. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -13
  306. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +50 -36
  307. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +380 -221
  308. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1168 -611
  309. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +166 -94
  310. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +666 -292
  311. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +18 -11
  312. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +37 -26
  313. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +21 -12
  314. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +45 -30
  315. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +30 -17
  316. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +144 -47
  317. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +274 -167
  318. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +789 -440
  319. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +222 -128
  320. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1116 -485
  321. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -13
  322. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +60 -37
  323. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +350 -208
  324. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1088 -625
  325. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +44 -11
  326. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +175 -18
  327. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +34 -19
  328. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +118 -56
  329. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +48 -16
  330. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +189 -44
  331. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +31 -18
  332. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +143 -65
  333. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +22 -13
  334. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +51 -37
  335. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +78 -43
  336. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +265 -127
  337. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +147 -84
  338. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +454 -226
  339. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +115 -62
  340. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +559 -227
  341. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +18 -11
  342. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +35 -26
  343. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +187 -107
  344. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +969 -410
  345. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +172 -95
  346. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +864 -374
  347. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +49 -23
  348. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +182 -89
  349. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +39 -18
  350. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +74 -56
  351. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +28 -15
  352. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +71 -45
  353. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +131 -74
  354. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +489 -249
  355. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +135 -80
  356. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +505 -245
  357. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +257 -127
  358. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +1010 -387
  359. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +91 -41
  360. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +648 -183
  361. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1301 -751
  362. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5583 -2425
  363. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +49 -28
  364. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +164 -84
  365. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +228 -141
  366. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +738 -399
  367. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +20 -10
  368. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +53 -22
  369. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +21 -12
  370. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +45 -30
  371. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +32 -19
  372. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +70 -49
  373. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +27 -14
  374. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +110 -43
  375. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +46 -25
  376. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +259 -100
  377. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +21 -12
  378. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +49 -25
  379. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +18 -11
  380. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +35 -26
  381. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +42 -23
  382. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +108 -70
  383. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +7 -4
  384. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +21 -16
  385. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +43 -24
  386. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +110 -75
  387. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +30 -16
  388. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +100 -46
  389. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +16 -9
  390. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +73 -23
  391. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +60 -37
  392. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +150 -108
  393. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +74 -43
  394. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +357 -167
  395. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +44 -25
  396. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +114 -80
  397. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -18
  398. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +253 -67
  399. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +75 -0
  400. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +201 -0
  401. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +474 -289
  402. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2156 -1037
  403. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +53 -0
  404. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +107 -0
  405. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +69 -0
  406. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +246 -0
  407. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +138 -0
  408. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +499 -0
  409. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +36 -17
  410. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +144 -55
  411. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +18 -11
  412. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +35 -26
  413. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -4
  414. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +15 -10
  415. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +184 -96
  416. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +907 -360
  417. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +56 -33
  418. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -101
  419. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +188 -109
  420. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +827 -408
  421. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +32 -19
  422. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +109 -53
  423. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +10 -7
  424. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +18 -14
  425. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +300 -175
  426. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1297 -511
  427. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +42 -23
  428. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +188 -75
  429. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +130 -83
  430. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +510 -238
  431. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +22 -13
  432. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +55 -34
  433. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +39 -26
  434. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -68
  435. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +56 -0
  436. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +130 -0
  437. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +60 -26
  438. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +130 -51
  439. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +37 -20
  440. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +133 -63
  441. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -13
  442. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +91 -40
  443. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -12
  444. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +50 -32
  445. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +18 -11
  446. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +37 -26
  447. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +46 -27
  448. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +101 -70
  449. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +46 -0
  450. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +117 -0
  451. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +40 -23
  452. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +161 -75
  453. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +31 -18
  454. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +114 -56
  455. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +46 -29
  456. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +139 -91
  457. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +65 -42
  458. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +200 -121
  459. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +80 -45
  460. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +208 -131
  461. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +34 -21
  462. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +74 -53
  463. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -4
  464. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +13 -8
  465. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +16 -9
  466. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +28 -18
  467. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +28 -15
  468. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +55 -34
  469. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +43 -22
  470. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +91 -53
  471. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +35 -20
  472. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +92 -57
  473. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +7 -4
  474. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +16 -9
  475. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -11
  476. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -26
  477. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +23 -14
  478. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +61 -41
  479. data/src/core/ext/upb-generated/google/api/annotations.upb.c +14 -11
  480. data/src/core/ext/upb-generated/google/api/annotations.upb.h +30 -20
  481. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +255 -154
  482. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +934 -450
  483. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +299 -180
  484. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +946 -483
  485. data/src/core/ext/upb-generated/google/api/http.upb.c +68 -35
  486. data/src/core/ext/upb-generated/google/api/http.upb.h +284 -120
  487. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +22 -13
  488. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +95 -37
  489. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -10
  490. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +38 -22
  491. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +1018 -424
  492. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +3851 -1412
  493. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -10
  494. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +38 -22
  495. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +10 -7
  496. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +18 -14
  497. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +62 -39
  498. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +207 -102
  499. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -10
  500. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +38 -22
  501. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +90 -51
  502. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +157 -107
  503. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -13
  504. data/src/core/ext/upb-generated/google/rpc/status.upb.h +95 -37
  505. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +59 -34
  506. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +154 -92
  507. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +43 -24
  508. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +118 -60
  509. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +250 -145
  510. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +919 -415
  511. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +34 -19
  512. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +76 -51
  513. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +25 -14
  514. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +45 -30
  515. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +144 -81
  516. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +405 -217
  517. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +51 -26
  518. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +153 -61
  519. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +173 -102
  520. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +855 -298
  521. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +68 -49
  522. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +155 -104
  523. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +26 -17
  524. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +55 -34
  525. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +12 -9
  526. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +31 -14
  527. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +26 -17
  528. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +55 -34
  529. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +23 -16
  530. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +45 -30
  531. data/src/core/ext/upb-generated/validate/validate.upb.c +845 -455
  532. data/src/core/ext/upb-generated/validate/validate.upb.h +4347 -1908
  533. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +68 -49
  534. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +155 -104
  535. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +26 -17
  536. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +55 -34
  537. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +12 -9
  538. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +31 -14
  539. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +65 -44
  540. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +137 -91
  541. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +23 -16
  542. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +45 -30
  543. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +16 -9
  544. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +28 -18
  545. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +56 -0
  546. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +122 -0
  547. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +37 -22
  548. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +96 -63
  549. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +26 -17
  550. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +52 -29
  551. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +21 -12
  552. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +45 -30
  553. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +23 -14
  554. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +62 -42
  555. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +44 -25
  556. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +169 -79
  557. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +27 -14
  558. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +65 -38
  559. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +86 -30
  560. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +223 -54
  561. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +21 -13
  562. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +89 -34
  563. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +53 -0
  564. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +107 -0
  565. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +75 -0
  566. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +270 -0
  567. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +39 -0
  568. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +78 -0
  569. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +78 -0
  570. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +289 -0
  571. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +162 -101
  572. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +501 -293
  573. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +160 -0
  574. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +740 -0
  575. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +24 -15
  576. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +53 -37
  577. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +40 -23
  578. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +161 -75
  579. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +82 -0
  580. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +240 -0
  581. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +85 -0
  582. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +246 -0
  583. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +21 -13
  584. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +45 -30
  585. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +1 -1
  586. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +6 -5
  587. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +55 -54
  588. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +6 -5
  589. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +1 -1
  590. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +6 -5
  591. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +35 -14
  592. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +16 -5
  593. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +1 -1
  594. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +6 -5
  595. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +1 -1
  596. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +6 -5
  597. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +1 -1
  598. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +6 -5
  599. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +1 -1
  600. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +6 -5
  601. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +1 -1
  602. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +6 -5
  603. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +1 -1
  604. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +6 -5
  605. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +1 -1
  606. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +6 -5
  607. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +1 -1
  608. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +6 -5
  609. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +1 -1
  610. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +6 -5
  611. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +1 -1
  612. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +6 -5
  613. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +252 -241
  614. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +6 -5
  615. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +1 -1
  616. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +6 -5
  617. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +233 -225
  618. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +6 -10
  619. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +1 -1
  620. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +6 -5
  621. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +1 -1
  622. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +6 -5
  623. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +1 -1
  624. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +6 -5
  625. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +96 -76
  626. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +11 -5
  627. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +1 -1
  628. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +6 -5
  629. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +95 -94
  630. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +6 -5
  631. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +13 -12
  632. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +11 -5
  633. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +1 -1
  634. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +6 -5
  635. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +1 -1
  636. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +6 -5
  637. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +1 -1
  638. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +6 -5
  639. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +1 -1
  640. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +6 -5
  641. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +82 -76
  642. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +6 -5
  643. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +1 -1
  644. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +6 -5
  645. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +193 -188
  646. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +6 -5
  647. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +32 -16
  648. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +11 -5
  649. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +1 -1
  650. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +6 -5
  651. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +8 -4
  652. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +11 -5
  653. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +1 -1
  654. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +6 -5
  655. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +1 -1
  656. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +6 -5
  657. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +1 -1
  658. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +6 -5
  659. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +72 -67
  660. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +6 -5
  661. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +1 -1
  662. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +6 -5
  663. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +1 -1
  664. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +6 -5
  665. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +141 -134
  666. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +21 -5
  667. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +1 -1
  668. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +6 -5
  669. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +55 -42
  670. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +6 -5
  671. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +1 -1
  672. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +6 -5
  673. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +1 -1
  674. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +6 -5
  675. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +1 -1
  676. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +6 -5
  677. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +1 -1
  678. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +6 -5
  679. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +167 -138
  680. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +16 -5
  681. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +82 -71
  682. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +11 -5
  683. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +772 -739
  684. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +16 -5
  685. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +1 -1
  686. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +6 -5
  687. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +1 -1
  688. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +6 -5
  689. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +17 -15
  690. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +6 -5
  691. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +1 -1
  692. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +6 -5
  693. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +1 -1
  694. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +6 -5
  695. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +1 -1
  696. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +6 -5
  697. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +1 -1
  698. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +6 -5
  699. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +7 -9
  700. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +6 -5
  701. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +1 -1
  702. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +6 -5
  703. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +1 -1
  704. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +6 -5
  705. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +1 -1
  706. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +6 -5
  707. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +1 -1
  708. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +6 -5
  709. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +21 -19
  710. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +6 -5
  711. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +1 -1
  712. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +6 -5
  713. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +1 -1
  714. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +6 -5
  715. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +1 -1
  716. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +6 -5
  717. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +1 -1
  718. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +6 -5
  719. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +54 -43
  720. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +6 -5
  721. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  722. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +41 -0
  723. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +382 -364
  724. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +6 -5
  725. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  726. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +36 -0
  727. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +1 -1
  728. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +6 -5
  729. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +138 -136
  730. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +6 -5
  731. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +1 -1
  732. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +6 -5
  733. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +151 -147
  734. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +6 -5
  735. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +1 -1
  736. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +6 -5
  737. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +6 -6
  738. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +6 -5
  739. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +17 -14
  740. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +6 -5
  741. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +6 -6
  742. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +6 -5
  743. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +12 -13
  744. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +6 -5
  745. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +1 -1
  746. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +6 -5
  747. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +1 -1
  748. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +6 -5
  749. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
  750. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +36 -0
  751. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +13 -10
  752. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +11 -5
  753. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +1 -1
  754. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +6 -5
  755. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +1 -1
  756. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +6 -5
  757. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +1 -1
  758. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +6 -5
  759. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +1 -1
  760. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +6 -5
  761. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +15 -15
  762. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +6 -5
  763. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
  764. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +41 -0
  765. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +1 -1
  766. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +6 -5
  767. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +1 -1
  768. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +6 -5
  769. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +1 -1
  770. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +6 -5
  771. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +1 -1
  772. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +6 -5
  773. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +1 -1
  774. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +6 -5
  775. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +1 -1
  776. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +6 -5
  777. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +1 -1
  778. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +6 -5
  779. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +1 -1
  780. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +6 -5
  781. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +1 -1
  782. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +6 -5
  783. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +1 -1
  784. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +6 -5
  785. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +1 -1
  786. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +6 -5
  787. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +11 -10
  788. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +6 -5
  789. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +1 -1
  790. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +6 -5
  791. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +1 -1
  792. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +6 -5
  793. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +1 -1
  794. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +6 -5
  795. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +1 -1
  796. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +6 -5
  797. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +1 -1
  798. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +6 -5
  799. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +1 -1
  800. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +6 -5
  801. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +1 -1
  802. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +6 -5
  803. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +1 -1
  804. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +6 -5
  805. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +329 -273
  806. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +11 -5
  807. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +1 -1
  808. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +6 -5
  809. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +1 -1
  810. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +6 -5
  811. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +1 -1
  812. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +6 -5
  813. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +1 -1
  814. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +6 -5
  815. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +1 -1
  816. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +6 -5
  817. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +1 -1
  818. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +6 -5
  819. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +1 -1
  820. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +6 -5
  821. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +1 -1
  822. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +6 -5
  823. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +1 -1
  824. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +6 -5
  825. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +1 -1
  826. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +6 -5
  827. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +1 -1
  828. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +6 -5
  829. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +1 -1
  830. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +6 -5
  831. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +1 -1
  832. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +6 -5
  833. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +1 -1
  834. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +6 -5
  835. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +1 -1
  836. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +6 -5
  837. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +1 -1
  838. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +6 -5
  839. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +1 -1
  840. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +6 -5
  841. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +1 -1
  842. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +6 -5
  843. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +1 -1
  844. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +6 -5
  845. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +1 -1
  846. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +6 -5
  847. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  848. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +36 -0
  849. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +1 -1
  850. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +6 -5
  851. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +1 -1
  852. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +6 -5
  853. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +1 -1
  854. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +6 -5
  855. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +1 -1
  856. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +6 -5
  857. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +1 -1
  858. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +6 -5
  859. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +1 -1
  860. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +6 -5
  861. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  862. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +36 -0
  863. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  864. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +41 -0
  865. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  866. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +36 -0
  867. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  868. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +41 -0
  869. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +10 -10
  870. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +6 -5
  871. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  872. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +61 -0
  873. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +1 -1
  874. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +6 -5
  875. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +1 -1
  876. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +6 -5
  877. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  878. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +41 -0
  879. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  880. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +46 -0
  881. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +5 -8
  882. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +6 -5
  883. data/src/core/ext/xds/certificate_provider_store.cc +8 -13
  884. data/src/core/ext/xds/certificate_provider_store.h +4 -4
  885. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +32 -46
  886. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +17 -12
  887. data/src/core/ext/xds/upb_utils.h +4 -4
  888. data/src/core/ext/xds/xds_api.cc +61 -113
  889. data/src/core/ext/xds/xds_api.h +13 -15
  890. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  891. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  892. data/src/core/ext/xds/xds_bootstrap.cc +3 -3
  893. data/src/core/ext/xds/xds_bootstrap.h +3 -4
  894. data/src/core/ext/xds/xds_bootstrap_grpc.cc +37 -33
  895. data/src/core/ext/xds/xds_bootstrap_grpc.h +24 -4
  896. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  897. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  898. data/src/core/ext/xds/xds_channel_args.h +3 -3
  899. data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -3
  900. data/src/core/ext/xds/xds_channel_stack_modifier.h +4 -4
  901. data/src/core/ext/xds/xds_client.cc +171 -104
  902. data/src/core/ext/xds/xds_client.h +17 -9
  903. data/src/core/ext/xds/xds_client_grpc.cc +30 -24
  904. data/src/core/ext/xds/xds_client_grpc.h +4 -4
  905. data/src/core/ext/xds/xds_client_stats.cc +46 -32
  906. data/src/core/ext/xds/xds_client_stats.h +46 -41
  907. data/src/core/ext/xds/xds_cluster.cc +358 -205
  908. data/src/core/ext/xds/xds_cluster.h +55 -39
  909. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +61 -74
  910. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +50 -26
  911. data/src/core/ext/xds/xds_common_types.cc +213 -141
  912. data/src/core/ext/xds/xds_common_types.h +22 -16
  913. data/src/core/ext/xds/xds_endpoint.cc +229 -132
  914. data/src/core/ext/xds/xds_endpoint.h +17 -12
  915. data/src/core/ext/xds/xds_health_status.cc +80 -0
  916. data/src/core/ext/xds/xds_health_status.h +109 -0
  917. data/src/core/ext/xds/xds_http_fault_filter.cc +68 -51
  918. data/src/core/ext/xds/xds_http_fault_filter.h +19 -26
  919. data/src/core/ext/xds/xds_http_filters.cc +65 -73
  920. data/src/core/ext/xds/xds_http_filters.h +76 -25
  921. data/src/core/ext/xds/xds_http_rbac_filter.cc +303 -272
  922. data/src/core/ext/xds/xds_http_rbac_filter.h +19 -21
  923. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +222 -0
  924. data/src/core/ext/xds/xds_http_stateful_session_filter.h +59 -0
  925. data/src/core/ext/xds/xds_lb_policy_registry.cc +211 -166
  926. data/src/core/ext/xds/xds_lb_policy_registry.h +13 -14
  927. data/src/core/ext/xds/xds_listener.cc +456 -420
  928. data/src/core/ext/xds/xds_listener.h +49 -51
  929. data/src/core/ext/xds/xds_resource_type.h +8 -16
  930. data/src/core/ext/xds/xds_resource_type_impl.h +13 -16
  931. data/src/core/ext/xds/xds_route_config.cc +566 -534
  932. data/src/core/ext/xds/xds_route_config.h +43 -32
  933. data/src/core/ext/xds/xds_routing.cc +4 -3
  934. data/src/core/ext/xds/xds_routing.h +5 -3
  935. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -106
  936. data/src/core/ext/xds/xds_transport.h +3 -3
  937. data/src/core/ext/xds/xds_transport_grpc.cc +10 -9
  938. data/src/core/ext/xds/xds_transport_grpc.h +4 -4
  939. data/src/core/lib/address_utils/parse_address.cc +30 -29
  940. data/src/core/lib/address_utils/parse_address.h +35 -35
  941. data/src/core/lib/address_utils/sockaddr_utils.cc +30 -28
  942. data/src/core/lib/address_utils/sockaddr_utils.h +36 -36
  943. data/src/core/lib/avl/avl.h +12 -7
  944. data/src/core/lib/backoff/backoff.cc +17 -17
  945. data/src/core/lib/backoff/backoff.h +20 -20
  946. data/src/core/lib/backoff/random_early_detection.cc +31 -0
  947. data/src/core/lib/backoff/random_early_detection.h +59 -0
  948. data/src/core/lib/channel/call_finalization.h +4 -4
  949. data/src/core/lib/channel/call_tracer.cc +51 -0
  950. data/src/core/lib/channel/call_tracer.h +106 -34
  951. data/src/core/lib/channel/channel_args.cc +100 -42
  952. data/src/core/lib/channel/channel_args.h +104 -49
  953. data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
  954. data/src/core/lib/channel/channel_fwd.h +3 -3
  955. data/src/core/lib/channel/channel_stack.cc +60 -57
  956. data/src/core/lib/channel/channel_stack.h +148 -135
  957. data/src/core/lib/channel/channel_stack_builder.cc +21 -24
  958. data/src/core/lib/channel/channel_stack_builder.h +17 -9
  959. data/src/core/lib/channel/channel_stack_builder_impl.cc +56 -25
  960. data/src/core/lib/channel/channel_stack_builder_impl.h +5 -3
  961. data/src/core/lib/channel/channel_trace.cc +37 -34
  962. data/src/core/lib/channel/channel_trace.h +22 -22
  963. data/src/core/lib/channel/channelz.cc +181 -154
  964. data/src/core/lib/channel/channelz.h +71 -64
  965. data/src/core/lib/channel/channelz_registry.cc +41 -37
  966. data/src/core/lib/channel/channelz_registry.h +21 -21
  967. data/src/core/lib/channel/connected_channel.cc +764 -67
  968. data/src/core/lib/channel/connected_channel.h +20 -24
  969. data/src/core/lib/channel/context.h +33 -22
  970. data/src/core/lib/channel/promise_based_filter.cc +1591 -278
  971. data/src/core/lib/channel/promise_based_filter.h +486 -104
  972. data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
  973. data/src/core/lib/channel/status_util.cc +35 -17
  974. data/src/core/lib/channel/status_util.h +29 -22
  975. data/src/core/lib/compression/compression.cc +19 -19
  976. data/src/core/lib/compression/compression_internal.cc +38 -48
  977. data/src/core/lib/compression/compression_internal.h +25 -25
  978. data/src/core/lib/compression/message_compress.cc +26 -26
  979. data/src/core/lib/compression/message_compress.h +27 -27
  980. data/src/core/lib/config/config_vars.cc +153 -0
  981. data/src/core/lib/config/config_vars.h +127 -0
  982. data/src/core/lib/config/config_vars_non_generated.cc +51 -0
  983. data/src/core/lib/config/core_configuration.h +3 -3
  984. data/src/core/lib/config/load_config.cc +79 -0
  985. data/src/core/lib/config/load_config.h +55 -0
  986. data/src/core/lib/debug/event_log.cc +88 -0
  987. data/src/core/lib/debug/event_log.h +81 -0
  988. data/src/core/lib/debug/histogram_view.cc +69 -0
  989. data/src/core/lib/debug/histogram_view.h +37 -0
  990. data/src/core/lib/debug/stats.cc +39 -136
  991. data/src/core/lib/debug/stats.h +49 -55
  992. data/src/core/lib/debug/stats_data.cc +240 -88
  993. data/src/core/lib/debug/stats_data.h +295 -145
  994. data/src/core/lib/debug/trace.cc +56 -79
  995. data/src/core/lib/debug/trace.h +37 -54
  996. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
  997. data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
  998. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
  999. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
  1000. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
  1001. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +5 -0
  1002. data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -3
  1003. data/src/core/lib/event_engine/common_closures.h +71 -0
  1004. data/src/core/lib/event_engine/default_event_engine.cc +56 -16
  1005. data/src/core/lib/event_engine/default_event_engine.h +44 -8
  1006. data/src/core/lib/event_engine/default_event_engine_factory.cc +16 -6
  1007. data/src/core/lib/event_engine/default_event_engine_factory.h +3 -3
  1008. data/src/core/lib/event_engine/event_engine.cc +60 -0
  1009. data/src/core/lib/event_engine/forkable.cc +11 -6
  1010. data/src/core/lib/event_engine/forkable.h +3 -3
  1011. data/src/core/lib/event_engine/handle_containers.h +12 -20
  1012. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  1013. data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
  1014. data/src/core/lib/event_engine/poller.h +13 -7
  1015. data/src/core/lib/event_engine/posix.h +162 -0
  1016. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +642 -0
  1017. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +139 -0
  1018. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +895 -0
  1019. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  1020. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  1021. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +68 -0
  1022. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +33 -0
  1023. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  1024. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  1025. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +254 -0
  1026. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  1027. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1338 -0
  1028. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +726 -0
  1029. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +523 -28
  1030. data/src/core/lib/event_engine/posix_engine/posix_engine.h +165 -27
  1031. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  1032. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +292 -0
  1033. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +278 -0
  1034. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +379 -0
  1035. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  1036. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +867 -0
  1037. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
  1038. data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
  1039. data/src/core/lib/event_engine/posix_engine/timer.h +90 -89
  1040. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +27 -27
  1041. data/src/core/lib/event_engine/posix_engine/timer_heap.h +24 -24
  1042. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +76 -214
  1043. data/src/core/lib/event_engine/posix_engine/timer_manager.h +44 -72
  1044. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
  1045. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
  1046. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
  1047. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  1048. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
  1049. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  1050. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  1051. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  1052. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  1053. data/src/core/lib/event_engine/resolved_address.cc +21 -1
  1054. data/src/core/lib/event_engine/{executor/executor.h → resolved_address_internal.h} +11 -15
  1055. data/src/core/lib/event_engine/shim.cc +64 -0
  1056. data/src/core/lib/event_engine/{executor/threaded_executor.cc → shim.h} +10 -13
  1057. data/src/core/lib/event_engine/slice.cc +8 -7
  1058. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  1059. data/src/core/lib/event_engine/tcp_socket_utils.cc +389 -0
  1060. data/src/core/lib/event_engine/tcp_socket_utils.h +90 -0
  1061. data/src/core/lib/event_engine/thread_local.cc +29 -0
  1062. data/src/core/lib/event_engine/thread_local.h +32 -0
  1063. data/src/core/lib/event_engine/thread_pool/original_thread_pool.cc +256 -0
  1064. data/src/core/lib/event_engine/thread_pool/original_thread_pool.h +137 -0
  1065. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  1066. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +40 -0
  1067. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
  1068. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
  1069. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
  1070. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
  1071. data/src/core/lib/event_engine/time_util.h +3 -3
  1072. data/src/core/lib/event_engine/trace.cc +7 -0
  1073. data/src/core/lib/event_engine/trace.h +22 -3
  1074. data/src/core/lib/event_engine/utils.cc +2 -2
  1075. data/src/core/lib/event_engine/utils.h +12 -4
  1076. data/src/core/lib/event_engine/windows/iocp.cc +39 -53
  1077. data/src/core/lib/event_engine/windows/iocp.h +7 -7
  1078. data/src/core/lib/event_engine/windows/win_socket.cc +69 -47
  1079. data/src/core/lib/event_engine/windows/win_socket.h +38 -29
  1080. data/src/core/lib/event_engine/windows/windows_endpoint.cc +379 -0
  1081. data/src/core/lib/event_engine/windows/windows_endpoint.h +120 -0
  1082. data/src/core/lib/event_engine/windows/windows_engine.cc +285 -33
  1083. data/src/core/lib/event_engine/windows/windows_engine.h +70 -26
  1084. data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
  1085. data/src/core/lib/event_engine/windows/windows_listener.h +156 -0
  1086. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  1087. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  1088. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  1089. data/src/core/lib/experiments/config.cc +56 -17
  1090. data/src/core/lib/experiments/config.h +29 -3
  1091. data/src/core/lib/experiments/experiments.cc +92 -29
  1092. data/src/core/lib/experiments/experiments.h +101 -23
  1093. data/src/core/lib/gpr/alloc.cc +19 -17
  1094. data/src/core/lib/gpr/alloc.h +20 -20
  1095. data/src/core/lib/gpr/{log_android.cc → android/log.cc} +22 -20
  1096. data/src/core/lib/gpr/atm.cc +17 -17
  1097. data/src/core/lib/gpr/iphone/cpu.cc +44 -0
  1098. data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +28 -23
  1099. data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +24 -24
  1100. data/src/core/lib/gpr/log.cc +42 -47
  1101. data/src/core/lib/gpr/log_internal.h +55 -0
  1102. data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +21 -20
  1103. data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +23 -22
  1104. data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +20 -19
  1105. data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +24 -24
  1106. data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +23 -21
  1107. data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +40 -30
  1108. data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +22 -20
  1109. data/src/core/lib/gpr/spinlock.h +20 -20
  1110. data/src/core/lib/gpr/string.cc +25 -24
  1111. data/src/core/lib/gpr/string.h +61 -61
  1112. data/src/core/lib/gpr/sync.cc +25 -25
  1113. data/src/core/lib/gpr/sync_abseil.cc +37 -27
  1114. data/src/core/lib/gpr/time.cc +23 -21
  1115. data/src/core/lib/gpr/time_precise.cc +22 -22
  1116. data/src/core/lib/gpr/time_precise.h +20 -21
  1117. data/src/core/lib/gpr/tmpfile.h +24 -24
  1118. data/src/core/lib/gpr/useful.h +43 -30
  1119. data/src/core/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc → lib/gpr/windows/cpu.cc} +16 -11
  1120. data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +25 -24
  1121. data/src/core/lib/gpr/windows/string.cc +69 -0
  1122. data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +22 -22
  1123. data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +29 -27
  1124. data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +25 -22
  1125. data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +23 -22
  1126. data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
  1127. data/src/core/lib/gprpp/atomic_utils.h +20 -20
  1128. data/src/core/lib/gprpp/bitset.h +27 -3
  1129. data/src/core/lib/gprpp/chunked_vector.h +3 -3
  1130. data/src/core/lib/gprpp/construct_destruct.h +3 -3
  1131. data/src/core/lib/gprpp/cpp_impl_of.h +3 -3
  1132. data/src/core/lib/gprpp/crash.cc +43 -0
  1133. data/src/core/lib/gprpp/crash.h +37 -0
  1134. data/src/core/lib/gprpp/debug_location.h +20 -23
  1135. data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
  1136. data/src/core/lib/gprpp/env.h +23 -23
  1137. data/src/core/lib/gprpp/examine_stack.cc +17 -17
  1138. data/src/core/lib/gprpp/examine_stack.h +21 -21
  1139. data/src/core/lib/gprpp/fork.cc +49 -39
  1140. data/src/core/lib/gprpp/fork.h +29 -27
  1141. data/src/core/lib/gprpp/host_port.cc +28 -26
  1142. data/src/core/lib/gprpp/host_port.h +32 -31
  1143. data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +21 -21
  1144. data/src/core/lib/gprpp/load_file.cc +75 -0
  1145. data/src/core/lib/gprpp/load_file.h +33 -0
  1146. data/src/core/lib/gprpp/manual_constructor.h +22 -21
  1147. data/src/core/lib/gprpp/match.h +3 -3
  1148. data/src/core/lib/gprpp/memory.h +21 -21
  1149. data/src/core/lib/gprpp/mpscq.cc +17 -17
  1150. data/src/core/lib/gprpp/mpscq.h +21 -21
  1151. data/src/core/lib/gprpp/no_destruct.h +4 -3
  1152. data/src/core/lib/gprpp/notification.h +3 -3
  1153. data/src/core/lib/gprpp/orphanable.h +25 -24
  1154. data/src/core/lib/gprpp/overload.h +3 -3
  1155. data/src/core/lib/gprpp/packed_table.h +3 -3
  1156. data/src/core/lib/gprpp/per_cpu.cc +33 -0
  1157. data/src/core/lib/gprpp/per_cpu.h +75 -0
  1158. data/src/core/lib/gprpp/posix/env.cc +47 -0
  1159. data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +5 -4
  1160. data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +75 -64
  1161. data/src/core/lib/gprpp/ref_counted.h +54 -55
  1162. data/src/core/lib/gprpp/ref_counted_ptr.h +22 -21
  1163. data/src/core/lib/gprpp/single_set_ptr.h +3 -3
  1164. data/src/core/lib/gprpp/sorted_pack.h +3 -3
  1165. data/src/core/lib/gprpp/stat.h +3 -3
  1166. data/src/core/lib/gprpp/status_helper.cc +6 -5
  1167. data/src/core/lib/gprpp/status_helper.h +4 -6
  1168. data/src/core/lib/gprpp/strerror.cc +43 -0
  1169. data/src/core/lib/gprpp/strerror.h +29 -0
  1170. data/src/core/lib/gprpp/sync.h +23 -23
  1171. data/src/core/lib/gprpp/table.h +4 -3
  1172. data/src/core/lib/gprpp/tchar.h +3 -3
  1173. data/src/core/lib/gprpp/thd.h +39 -23
  1174. data/src/core/lib/gprpp/time.cc +18 -10
  1175. data/src/core/lib/gprpp/time.h +16 -6
  1176. data/src/core/lib/gprpp/time_averaged_stats.cc +20 -20
  1177. data/src/core/lib/gprpp/time_averaged_stats.h +50 -50
  1178. data/src/core/lib/gprpp/time_util.h +4 -4
  1179. data/src/core/lib/gprpp/unique_type_name.h +21 -21
  1180. data/src/core/lib/gprpp/validation_errors.cc +8 -3
  1181. data/src/core/lib/gprpp/validation_errors.h +37 -13
  1182. data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +18 -18
  1183. data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +4 -2
  1184. data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +28 -28
  1185. data/src/core/lib/gprpp/work_serializer.h +3 -3
  1186. data/src/core/lib/handshaker/proxy_mapper.h +21 -21
  1187. data/src/core/lib/handshaker/proxy_mapper_registry.cc +17 -17
  1188. data/src/core/lib/handshaker/proxy_mapper_registry.h +21 -21
  1189. data/src/core/lib/http/format_request.cc +19 -18
  1190. data/src/core/lib/http/format_request.h +20 -20
  1191. data/src/core/lib/http/httpcli.cc +58 -61
  1192. data/src/core/lib/http/httpcli.h +29 -29
  1193. data/src/core/lib/http/httpcli_security_connector.cc +22 -25
  1194. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -3
  1195. data/src/core/lib/http/parser.cc +76 -87
  1196. data/src/core/lib/http/parser.h +35 -35
  1197. data/src/core/lib/iomgr/block_annotate.h +23 -23
  1198. data/src/core/lib/iomgr/buffer_list.cc +156 -136
  1199. data/src/core/lib/iomgr/buffer_list.h +122 -101
  1200. data/src/core/lib/iomgr/call_combiner.cc +32 -30
  1201. data/src/core/lib/iomgr/call_combiner.h +26 -27
  1202. data/src/core/lib/iomgr/cfstream_handle.cc +34 -37
  1203. data/src/core/lib/iomgr/cfstream_handle.h +25 -25
  1204. data/src/core/lib/iomgr/closure.cc +27 -0
  1205. data/src/core/lib/iomgr/closure.h +95 -48
  1206. data/src/core/lib/iomgr/combiner.cc +20 -19
  1207. data/src/core/lib/iomgr/combiner.h +20 -20
  1208. data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
  1209. data/src/core/lib/iomgr/dynamic_annotations.h +22 -22
  1210. data/src/core/lib/iomgr/endpoint.cc +17 -17
  1211. data/src/core/lib/iomgr/endpoint.h +49 -49
  1212. data/src/core/lib/iomgr/endpoint_cfstream.cc +58 -53
  1213. data/src/core/lib/iomgr/endpoint_cfstream.h +32 -32
  1214. data/src/core/lib/iomgr/endpoint_pair.h +22 -22
  1215. data/src/core/lib/iomgr/endpoint_pair_posix.cc +22 -21
  1216. data/src/core/lib/iomgr/endpoint_pair_windows.cc +29 -20
  1217. data/src/core/lib/iomgr/error.cc +49 -61
  1218. data/src/core/lib/iomgr/error.h +45 -176
  1219. data/src/core/lib/iomgr/error_cfstream.cc +18 -18
  1220. data/src/core/lib/iomgr/error_cfstream.h +21 -21
  1221. data/src/core/lib/iomgr/ev_apple.cc +33 -33
  1222. data/src/core/lib/iomgr/ev_apple.h +21 -21
  1223. data/src/core/lib/iomgr/ev_epoll1_linux.cc +218 -198
  1224. data/src/core/lib/iomgr/ev_epoll1_linux.h +20 -20
  1225. data/src/core/lib/iomgr/ev_poll_posix.cc +212 -205
  1226. data/src/core/lib/iomgr/ev_poll_posix.h +20 -20
  1227. data/src/core/lib/iomgr/ev_posix.cc +47 -79
  1228. data/src/core/lib/iomgr/ev_posix.h +88 -87
  1229. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  1230. data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
  1231. data/src/core/lib/{event_engine/executor/threaded_executor.h → iomgr/event_engine_shims/closure.h} +11 -16
  1232. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +471 -0
  1233. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
  1234. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
  1235. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
  1236. data/src/core/lib/iomgr/exec_ctx.cc +34 -34
  1237. data/src/core/lib/iomgr/exec_ctx.h +144 -144
  1238. data/src/core/lib/iomgr/executor.cc +21 -21
  1239. data/src/core/lib/iomgr/executor.h +27 -27
  1240. data/src/core/lib/iomgr/fork_posix.cc +29 -26
  1241. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  1242. data/src/core/lib/iomgr/gethostname.h +20 -20
  1243. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  1244. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  1245. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  1246. data/src/core/lib/iomgr/grpc_if_nametoindex.h +22 -22
  1247. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
  1248. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
  1249. data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
  1250. data/src/core/lib/iomgr/internal_errqueue.h +83 -83
  1251. data/src/core/lib/iomgr/iocp_windows.cc +46 -24
  1252. data/src/core/lib/iomgr/iocp_windows.h +32 -21
  1253. data/src/core/lib/iomgr/iomgr.cc +23 -26
  1254. data/src/core/lib/iomgr/iomgr.h +35 -35
  1255. data/src/core/lib/iomgr/iomgr_fwd.h +3 -3
  1256. data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
  1257. data/src/core/lib/iomgr/iomgr_internal.h +28 -28
  1258. data/src/core/lib/iomgr/iomgr_posix.cc +20 -20
  1259. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +21 -20
  1260. data/src/core/lib/iomgr/iomgr_windows.cc +32 -24
  1261. data/src/core/lib/iomgr/load_file.cc +24 -27
  1262. data/src/core/lib/iomgr/load_file.h +22 -22
  1263. data/src/core/lib/iomgr/lockfree_event.cc +114 -114
  1264. data/src/core/lib/iomgr/lockfree_event.h +23 -23
  1265. data/src/core/lib/iomgr/nameser.h +86 -86
  1266. data/src/core/lib/iomgr/polling_entity.cc +25 -21
  1267. data/src/core/lib/iomgr/polling_entity.h +29 -29
  1268. data/src/core/lib/iomgr/pollset.cc +17 -17
  1269. data/src/core/lib/iomgr/pollset.h +54 -54
  1270. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  1271. data/src/core/lib/iomgr/pollset_set.h +25 -25
  1272. data/src/core/lib/iomgr/pollset_set_windows.cc +27 -27
  1273. data/src/core/lib/iomgr/pollset_set_windows.h +20 -20
  1274. data/src/core/lib/iomgr/pollset_windows.cc +33 -32
  1275. data/src/core/lib/iomgr/pollset_windows.h +24 -24
  1276. data/src/core/lib/iomgr/port.h +31 -31
  1277. data/src/core/lib/iomgr/python_util.h +24 -24
  1278. data/src/core/lib/iomgr/resolve_address.cc +26 -20
  1279. data/src/core/lib/iomgr/resolve_address.h +24 -25
  1280. data/src/core/lib/iomgr/resolve_address_impl.h +4 -4
  1281. data/src/core/lib/iomgr/resolve_address_posix.cc +35 -45
  1282. data/src/core/lib/iomgr/resolve_address_posix.h +4 -5
  1283. data/src/core/lib/iomgr/resolve_address_windows.cc +18 -20
  1284. data/src/core/lib/iomgr/resolve_address_windows.h +4 -5
  1285. data/src/core/lib/iomgr/resolved_address.h +3 -3
  1286. data/src/core/lib/iomgr/sockaddr.h +23 -23
  1287. data/src/core/lib/iomgr/sockaddr_posix.h +21 -21
  1288. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +18 -17
  1289. data/src/core/lib/iomgr/sockaddr_windows.h +21 -21
  1290. data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
  1291. data/src/core/lib/iomgr/socket_factory_posix.h +32 -32
  1292. data/src/core/lib/iomgr/socket_mutator.cc +19 -18
  1293. data/src/core/lib/iomgr/socket_mutator.h +39 -39
  1294. data/src/core/lib/iomgr/socket_utils.h +27 -27
  1295. data/src/core/lib/iomgr/socket_utils_common_posix.cc +87 -70
  1296. data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
  1297. data/src/core/lib/iomgr/socket_utils_posix.cc +25 -20
  1298. data/src/core/lib/iomgr/socket_utils_posix.h +84 -81
  1299. data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
  1300. data/src/core/lib/iomgr/socket_windows.cc +97 -42
  1301. data/src/core/lib/iomgr/socket_windows.h +68 -61
  1302. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  1303. data/src/core/lib/iomgr/systemd_utils.h +33 -0
  1304. data/src/core/lib/iomgr/tcp_client.cc +17 -17
  1305. data/src/core/lib/iomgr/tcp_client.h +28 -28
  1306. data/src/core/lib/iomgr/tcp_client_cfstream.cc +39 -31
  1307. data/src/core/lib/iomgr/tcp_client_posix.cc +86 -73
  1308. data/src/core/lib/iomgr/tcp_client_posix.h +45 -45
  1309. data/src/core/lib/iomgr/tcp_client_windows.cc +51 -42
  1310. data/src/core/lib/iomgr/tcp_posix.cc +270 -301
  1311. data/src/core/lib/iomgr/tcp_posix.h +29 -29
  1312. data/src/core/lib/iomgr/tcp_server.cc +30 -22
  1313. data/src/core/lib/iomgr/tcp_server.h +71 -65
  1314. data/src/core/lib/iomgr/tcp_server_posix.cc +373 -98
  1315. data/src/core/lib/iomgr/tcp_server_utils_posix.h +67 -54
  1316. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +90 -55
  1317. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +40 -40
  1318. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
  1319. data/src/core/lib/iomgr/tcp_server_windows.cc +277 -119
  1320. data/src/core/lib/iomgr/tcp_windows.cc +121 -101
  1321. data/src/core/lib/iomgr/tcp_windows.h +34 -34
  1322. data/src/core/lib/iomgr/timer.cc +17 -17
  1323. data/src/core/lib/iomgr/timer.h +68 -68
  1324. data/src/core/lib/iomgr/timer_generic.cc +132 -138
  1325. data/src/core/lib/iomgr/timer_generic.h +21 -21
  1326. data/src/core/lib/iomgr/timer_heap.cc +25 -25
  1327. data/src/core/lib/iomgr/timer_heap.h +22 -22
  1328. data/src/core/lib/iomgr/timer_manager.cc +30 -29
  1329. data/src/core/lib/iomgr/timer_manager.h +27 -27
  1330. data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
  1331. data/src/core/lib/iomgr/unix_sockets_posix.h +21 -21
  1332. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
  1333. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -21
  1334. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
  1335. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
  1336. data/src/core/lib/iomgr/wakeup_fd_pipe.h +20 -20
  1337. data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
  1338. data/src/core/lib/iomgr/wakeup_fd_posix.h +52 -52
  1339. data/src/core/lib/json/json.h +5 -221
  1340. data/src/core/lib/json/json_args.h +3 -3
  1341. data/src/core/lib/json/json_channel_args.h +42 -0
  1342. data/src/core/lib/json/json_object_loader.cc +39 -25
  1343. data/src/core/lib/json/json_object_loader.h +69 -21
  1344. data/src/core/lib/json/json_reader.cc +98 -70
  1345. data/src/core/lib/json/json_reader.h +34 -0
  1346. data/src/core/lib/json/json_util.cc +14 -19
  1347. data/src/core/lib/json/json_util.h +12 -11
  1348. data/src/core/lib/json/json_writer.cc +80 -81
  1349. data/src/core/{ext/xds/xds_resource_type.cc → lib/json/json_writer.h} +11 -11
  1350. data/src/core/lib/load_balancing/lb_policy.cc +36 -31
  1351. data/src/core/lib/load_balancing/lb_policy.h +32 -10
  1352. data/src/core/lib/load_balancing/lb_policy_factory.h +3 -3
  1353. data/src/core/lib/load_balancing/lb_policy_registry.cc +10 -8
  1354. data/src/core/lib/load_balancing/lb_policy_registry.h +3 -3
  1355. data/src/core/lib/load_balancing/subchannel_interface.h +9 -14
  1356. data/src/core/lib/matchers/matchers.cc +10 -9
  1357. data/src/core/lib/matchers/matchers.h +5 -4
  1358. data/src/core/lib/promise/activity.cc +43 -6
  1359. data/src/core/lib/promise/activity.h +143 -79
  1360. data/src/core/lib/promise/arena_promise.h +84 -54
  1361. data/src/core/lib/promise/cancel_callback.h +77 -0
  1362. data/src/core/lib/promise/context.h +17 -9
  1363. data/src/core/lib/promise/detail/basic_join.h +197 -0
  1364. data/src/core/lib/promise/detail/basic_seq.h +20 -45
  1365. data/src/core/lib/promise/detail/promise_factory.h +67 -14
  1366. data/src/core/lib/promise/detail/promise_like.h +3 -3
  1367. data/src/core/lib/promise/detail/status.h +31 -3
  1368. data/src/core/lib/promise/detail/switch.h +1455 -0
  1369. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +23 -15
  1370. data/src/core/lib/promise/for_each.h +176 -0
  1371. data/src/core/lib/promise/if.h +204 -0
  1372. data/src/core/lib/promise/interceptor_list.h +329 -0
  1373. data/src/core/lib/promise/latch.h +197 -23
  1374. data/src/core/lib/promise/loop.h +22 -16
  1375. data/src/core/lib/promise/map.h +12 -6
  1376. data/src/core/lib/promise/party.cc +304 -0
  1377. data/src/core/lib/promise/party.h +508 -0
  1378. data/src/core/lib/promise/pipe.h +762 -0
  1379. data/src/core/lib/promise/poll.h +177 -11
  1380. data/src/core/lib/promise/prioritized_race.h +95 -0
  1381. data/src/core/lib/promise/promise.h +6 -7
  1382. data/src/core/lib/promise/race.h +6 -9
  1383. data/src/core/lib/promise/seq.h +7 -8
  1384. data/src/core/lib/promise/sleep.cc +7 -5
  1385. data/src/core/lib/promise/sleep.h +4 -5
  1386. data/src/core/lib/promise/trace.cc +20 -0
  1387. data/src/core/lib/promise/trace.h +24 -0
  1388. data/src/core/lib/promise/try_join.h +82 -0
  1389. data/src/core/lib/promise/try_seq.h +14 -16
  1390. data/src/core/lib/resolver/resolver.cc +17 -17
  1391. data/src/core/lib/resolver/resolver.h +3 -3
  1392. data/src/core/lib/resolver/resolver_factory.h +4 -4
  1393. data/src/core/lib/resolver/resolver_registry.cc +15 -0
  1394. data/src/core/lib/resolver/resolver_registry.h +3 -3
  1395. data/src/core/lib/resolver/server_address.cc +19 -25
  1396. data/src/core/lib/resolver/server_address.h +22 -30
  1397. data/src/core/lib/resource_quota/api.cc +0 -1
  1398. data/src/core/lib/resource_quota/api.h +4 -4
  1399. data/src/core/lib/resource_quota/arena.cc +82 -20
  1400. data/src/core/lib/resource_quota/arena.h +287 -22
  1401. data/src/core/lib/resource_quota/memory_quota.cc +141 -44
  1402. data/src/core/lib/resource_quota/memory_quota.h +87 -26
  1403. data/src/core/lib/resource_quota/periodic_update.h +3 -3
  1404. data/src/core/lib/resource_quota/resource_quota.h +4 -4
  1405. data/src/core/lib/resource_quota/thread_quota.h +3 -3
  1406. data/src/core/lib/resource_quota/trace.h +3 -3
  1407. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  1408. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  1409. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1410. data/src/core/lib/security/authorization/authorization_policy_provider.h +4 -4
  1411. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
  1412. data/src/core/lib/security/authorization/evaluate_args.h +3 -3
  1413. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -4
  1414. data/src/core/lib/security/authorization/grpc_authorization_engine.h +21 -4
  1415. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  1416. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +3 -3
  1417. data/src/core/lib/security/authorization/matchers.cc +25 -22
  1418. data/src/core/lib/security/authorization/matchers.h +3 -3
  1419. data/src/core/lib/security/authorization/rbac_policy.cc +39 -7
  1420. data/src/core/lib/security/authorization/rbac_policy.h +22 -5
  1421. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  1422. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  1423. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +11 -7
  1424. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  1425. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +17 -11
  1426. data/src/core/lib/security/context/security_context.cc +22 -23
  1427. data/src/core/lib/security/context/security_context.h +43 -33
  1428. data/src/core/lib/security/credentials/alts/alts_credentials.cc +17 -17
  1429. data/src/core/lib/security/credentials/alts/alts_credentials.h +53 -53
  1430. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
  1431. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +43 -43
  1432. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
  1433. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
  1434. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
  1435. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
  1436. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  1437. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +38 -39
  1438. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
  1439. data/src/core/lib/security/credentials/call_creds_util.h +3 -3
  1440. data/src/core/lib/security/credentials/channel_creds_registry.h +3 -3
  1441. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  1442. data/src/core/lib/security/credentials/composite/composite_credentials.cc +22 -22
  1443. data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -24
  1444. data/src/core/lib/security/credentials/credentials.cc +19 -18
  1445. data/src/core/lib/security/credentials/credentials.h +37 -36
  1446. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +113 -108
  1447. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -3
  1448. data/src/core/lib/security/credentials/external/aws_request_signer.cc +5 -3
  1449. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  1450. data/src/core/lib/security/credentials/external/external_account_credentials.cc +105 -115
  1451. data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
  1452. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +39 -41
  1453. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -3
  1454. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +51 -52
  1455. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
  1456. data/src/core/lib/security/credentials/fake/fake_credentials.cc +20 -19
  1457. data/src/core/lib/security/credentials/fake/fake_credentials.h +37 -38
  1458. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +17 -17
  1459. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +72 -126
  1460. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +21 -22
  1461. data/src/core/lib/security/credentials/iam/iam_credentials.cc +19 -17
  1462. data/src/core/lib/security/credentials/iam/iam_credentials.h +20 -20
  1463. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -3
  1464. data/src/core/lib/security/credentials/jwt/json_token.cc +43 -41
  1465. data/src/core/lib/security/credentials/jwt/json_token.h +35 -35
  1466. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +27 -22
  1467. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +22 -22
  1468. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +115 -113
  1469. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +46 -46
  1470. data/src/core/lib/security/credentials/local/local_credentials.cc +17 -17
  1471. data/src/core/lib/security/credentials/local/local_credentials.h +23 -23
  1472. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +80 -80
  1473. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -23
  1474. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +24 -23
  1475. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -25
  1476. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -20
  1477. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +20 -20
  1478. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +20 -28
  1479. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +7 -14
  1480. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +44 -44
  1481. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +5 -3
  1482. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  1483. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +3 -3
  1484. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
  1485. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +3 -3
  1486. data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -19
  1487. data/src/core/lib/security/credentials/tls/tls_credentials.h +21 -21
  1488. data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
  1489. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -2
  1490. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  1491. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +33 -43
  1492. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +43 -44
  1493. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +33 -41
  1494. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +22 -23
  1495. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  1496. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +5 -10
  1497. data/src/core/lib/security/security_connector/load_system_roots.h +20 -20
  1498. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
  1499. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +24 -31
  1500. data/src/core/lib/security/security_connector/load_system_roots_supported.h +22 -23
  1501. data/src/core/lib/security/security_connector/local/local_security_connector.cc +30 -34
  1502. data/src/core/lib/security/security_connector/local/local_security_connector.h +42 -43
  1503. data/src/core/lib/security/security_connector/security_connector.cc +17 -17
  1504. data/src/core/lib/security/security_connector/security_connector.h +35 -36
  1505. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +35 -39
  1506. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +40 -41
  1507. data/src/core/lib/security/security_connector/ssl_utils.cc +48 -64
  1508. data/src/core/lib/security/security_connector/ssl_utils.h +35 -35
  1509. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +54 -48
  1510. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +21 -21
  1511. data/src/core/lib/security/transport/auth_filters.h +45 -23
  1512. data/src/core/lib/security/transport/client_auth_filter.cc +21 -21
  1513. data/src/core/lib/security/transport/secure_endpoint.cc +58 -58
  1514. data/src/core/lib/security/transport/secure_endpoint.h +25 -25
  1515. data/src/core/lib/security/transport/security_handshaker.cc +79 -70
  1516. data/src/core/lib/security/transport/security_handshaker.h +22 -22
  1517. data/src/core/lib/security/transport/server_auth_filter.cc +160 -274
  1518. data/src/core/lib/security/transport/tsi_error.cc +23 -20
  1519. data/src/core/lib/security/transport/tsi_error.h +20 -20
  1520. data/src/core/lib/security/util/json_util.cc +27 -27
  1521. data/src/core/lib/security/util/json_util.h +20 -20
  1522. data/src/core/lib/service_config/service_config.h +4 -4
  1523. data/src/core/lib/service_config/service_config_call_data.h +54 -19
  1524. data/src/core/lib/service_config/service_config_impl.cc +118 -158
  1525. data/src/core/lib/service_config/service_config_impl.h +16 -19
  1526. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  1527. data/src/core/lib/service_config/service_config_parser.h +16 -12
  1528. data/src/core/lib/slice/b64.cc +26 -26
  1529. data/src/core/lib/slice/b64.h +32 -32
  1530. data/src/core/lib/slice/percent_encoding.cc +17 -17
  1531. data/src/core/lib/slice/percent_encoding.h +28 -28
  1532. data/src/core/lib/slice/slice.cc +48 -42
  1533. data/src/core/lib/slice/slice.h +59 -18
  1534. data/src/core/lib/slice/slice_buffer.cc +63 -59
  1535. data/src/core/lib/slice/slice_buffer.h +35 -4
  1536. data/src/core/lib/slice/slice_internal.h +34 -42
  1537. data/src/core/lib/slice/slice_refcount.cc +3 -18
  1538. data/src/core/lib/slice/slice_refcount.h +53 -18
  1539. data/src/core/lib/slice/slice_string_helpers.cc +17 -17
  1540. data/src/core/lib/slice/slice_string_helpers.h +21 -21
  1541. data/src/core/lib/surface/api_trace.cc +17 -17
  1542. data/src/core/lib/surface/api_trace.h +25 -25
  1543. data/src/core/lib/surface/builtins.cc +2 -0
  1544. data/src/core/lib/surface/builtins.h +3 -3
  1545. data/src/core/lib/surface/byte_buffer.cc +22 -23
  1546. data/src/core/lib/surface/byte_buffer_reader.cc +23 -23
  1547. data/src/core/lib/surface/call.cc +2297 -535
  1548. data/src/core/lib/surface/call.h +123 -42
  1549. data/src/core/lib/surface/call_details.cc +20 -21
  1550. data/src/core/lib/surface/call_log_batch.cc +19 -18
  1551. data/src/core/lib/surface/call_test_only.h +33 -33
  1552. data/src/core/lib/surface/call_trace.cc +123 -0
  1553. data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/surface/call_trace.h} +10 -12
  1554. data/src/core/lib/surface/channel.cc +62 -67
  1555. data/src/core/lib/surface/channel.h +43 -35
  1556. data/src/core/lib/surface/channel_init.cc +17 -17
  1557. data/src/core/lib/surface/channel_init.h +20 -20
  1558. data/src/core/lib/surface/channel_ping.cc +19 -19
  1559. data/src/core/lib/surface/channel_stack_type.cc +21 -17
  1560. data/src/core/lib/surface/channel_stack_type.h +22 -20
  1561. data/src/core/lib/surface/completion_queue.cc +182 -194
  1562. data/src/core/lib/surface/completion_queue.h +36 -36
  1563. data/src/core/lib/surface/completion_queue_factory.cc +28 -28
  1564. data/src/core/lib/surface/completion_queue_factory.h +22 -22
  1565. data/src/core/lib/surface/event_string.cc +18 -17
  1566. data/src/core/lib/surface/event_string.h +22 -22
  1567. data/src/core/lib/surface/init.cc +30 -59
  1568. data/src/core/lib/surface/init.h +20 -20
  1569. data/src/core/lib/surface/init_internally.cc +1 -0
  1570. data/src/core/lib/surface/init_internally.h +12 -3
  1571. data/src/core/lib/surface/lame_client.cc +31 -26
  1572. data/src/core/lib/surface/lame_client.h +21 -21
  1573. data/src/core/lib/surface/metadata_array.cc +17 -18
  1574. data/src/core/lib/surface/server.cc +363 -111
  1575. data/src/core/lib/surface/server.h +10 -9
  1576. data/src/core/lib/surface/validate_metadata.cc +60 -60
  1577. data/src/core/lib/surface/validate_metadata.h +30 -21
  1578. data/src/core/lib/surface/version.cc +21 -21
  1579. data/src/core/lib/transport/batch_builder.cc +182 -0
  1580. data/src/core/lib/transport/batch_builder.h +480 -0
  1581. data/src/core/lib/transport/bdp_estimator.cc +24 -24
  1582. data/src/core/lib/transport/bdp_estimator.h +31 -28
  1583. data/src/core/lib/transport/connectivity_state.cc +19 -19
  1584. data/src/core/lib/transport/connectivity_state.h +22 -22
  1585. data/src/core/lib/transport/custom_metadata.h +30 -0
  1586. data/src/core/lib/transport/error_utils.cc +51 -45
  1587. data/src/core/lib/transport/error_utils.h +24 -24
  1588. data/src/core/lib/transport/handshaker.cc +60 -46
  1589. data/src/core/lib/transport/handshaker.h +47 -42
  1590. data/src/core/lib/transport/handshaker_factory.h +47 -21
  1591. data/src/core/lib/transport/handshaker_registry.cc +25 -19
  1592. data/src/core/lib/transport/handshaker_registry.h +23 -24
  1593. data/src/core/lib/transport/http2_errors.h +22 -22
  1594. data/src/core/lib/transport/http_connect_handshaker.cc +40 -41
  1595. data/src/core/lib/transport/http_connect_handshaker.h +21 -21
  1596. data/src/core/lib/transport/metadata_batch.cc +24 -7
  1597. data/src/core/lib/transport/metadata_batch.h +193 -53
  1598. data/src/core/lib/transport/metadata_compression_traits.h +67 -0
  1599. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  1600. data/src/core/lib/transport/parsed_metadata.h +23 -12
  1601. data/src/core/lib/transport/pid_controller.cc +20 -20
  1602. data/src/core/lib/transport/pid_controller.h +27 -27
  1603. data/src/core/lib/transport/simple_slice_based_metadata.h +48 -0
  1604. data/src/core/lib/transport/status_conversion.cc +22 -22
  1605. data/src/core/lib/transport/status_conversion.h +22 -22
  1606. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -21
  1607. data/src/core/lib/transport/tcp_connect_handshaker.h +3 -3
  1608. data/src/core/lib/transport/timeout_encoding.cc +28 -23
  1609. data/src/core/lib/transport/timeout_encoding.h +20 -20
  1610. data/src/core/lib/transport/transport.cc +113 -43
  1611. data/src/core/lib/transport/transport.h +275 -210
  1612. data/src/core/lib/transport/transport_fwd.h +3 -3
  1613. data/src/core/lib/transport/transport_impl.h +53 -46
  1614. data/src/core/lib/transport/transport_op_string.cc +75 -63
  1615. data/src/core/lib/uri/uri_parser.cc +1 -1
  1616. data/src/core/lib/uri/uri_parser.h +3 -3
  1617. data/src/core/plugin_registry/grpc_plugin_registry.cc +34 -35
  1618. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +9 -14
  1619. data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
  1620. data/src/core/tsi/alts/crypt/gsec.cc +26 -26
  1621. data/src/core/tsi/alts/crypt/gsec.h +336 -336
  1622. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  1623. data/src/core/tsi/alts/frame_protector/alts_counter.h +68 -68
  1624. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  1625. data/src/core/tsi/alts/frame_protector/alts_crypter.h +209 -209
  1626. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +73 -71
  1627. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +40 -40
  1628. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  1629. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +82 -83
  1630. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  1631. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  1632. data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
  1633. data/src/core/tsi/alts/frame_protector/frame_handler.h +169 -169
  1634. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +98 -80
  1635. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +107 -102
  1636. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
  1637. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +43 -44
  1638. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +38 -37
  1639. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +60 -60
  1640. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +23 -23
  1641. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
  1642. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +38 -38
  1643. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
  1644. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +105 -104
  1645. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
  1646. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +40 -41
  1647. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
  1648. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +35 -36
  1649. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +67 -68
  1650. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
  1651. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +55 -56
  1652. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
  1653. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +141 -142
  1654. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +58 -57
  1655. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +43 -44
  1656. data/src/core/tsi/fake_transport_security.cc +80 -79
  1657. data/src/core/tsi/fake_transport_security.h +33 -33
  1658. data/src/core/tsi/local_transport_security.cc +34 -33
  1659. data/src/core/tsi/local_transport_security.h +33 -33
  1660. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +9 -4
  1661. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +3 -3
  1662. data/src/core/tsi/ssl/session_cache/ssl_session.h +21 -21
  1663. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +19 -19
  1664. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
  1665. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +22 -22
  1666. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
  1667. data/src/core/tsi/ssl_transport_security.cc +256 -349
  1668. data/src/core/tsi/ssl_transport_security.h +206 -203
  1669. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  1670. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  1671. data/src/core/tsi/ssl_types.h +27 -27
  1672. data/src/core/tsi/transport_security.cc +26 -26
  1673. data/src/core/tsi/transport_security.h +47 -47
  1674. data/src/core/tsi/transport_security_grpc.cc +20 -20
  1675. data/src/core/tsi/transport_security_grpc.h +41 -41
  1676. data/src/core/tsi/transport_security_interface.h +333 -333
  1677. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  1678. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  1679. data/src/ruby/ext/grpc/ext-export.clang +0 -1
  1680. data/src/ruby/ext/grpc/ext-export.gcc +1 -2
  1681. data/src/ruby/ext/grpc/extconf.rb +55 -11
  1682. data/src/ruby/ext/grpc/rb_call.c +1 -0
  1683. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  1684. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  1685. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  1686. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  1687. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
  1688. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -59
  1689. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  1690. data/src/ruby/lib/grpc/version.rb +1 -1
  1691. data/src/ruby/pb/generate_proto_ruby.sh +0 -6
  1692. data/src/ruby/spec/channel_spec.rb +0 -43
  1693. data/src/ruby/spec/client_server_spec.rb +20 -8
  1694. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  1695. data/third_party/abseil-cpp/absl/algorithm/container.h +56 -57
  1696. data/third_party/abseil-cpp/absl/base/attributes.h +39 -19
  1697. data/third_party/abseil-cpp/absl/base/config.h +45 -4
  1698. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +3 -18
  1699. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
  1700. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -1
  1701. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
  1702. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
  1703. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
  1704. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +10 -6
  1705. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +23 -24
  1706. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -3
  1707. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +2 -6
  1708. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
  1709. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +4 -4
  1710. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -10
  1711. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
  1712. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
  1713. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -40
  1714. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
  1715. data/third_party/abseil-cpp/absl/base/macros.h +4 -21
  1716. data/third_party/abseil-cpp/absl/base/optimization.h +58 -6
  1717. data/third_party/abseil-cpp/absl/base/options.h +1 -7
  1718. data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
  1719. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  1720. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  1721. data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -5
  1722. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -7
  1723. data/third_party/abseil-cpp/absl/container/inlined_vector.h +66 -18
  1724. data/third_party/abseil-cpp/absl/container/internal/common.h +3 -3
  1725. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
  1726. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +13 -1
  1727. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
  1728. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +50 -5
  1729. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +14 -46
  1730. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +110 -32
  1731. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +155 -4
  1732. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +661 -341
  1733. data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
  1734. data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
  1735. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
  1736. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
  1737. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
  1738. data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
  1739. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
  1740. data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
  1741. data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
  1742. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
  1743. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
  1744. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
  1745. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
  1746. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
  1747. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
  1748. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
  1749. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
  1750. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
  1751. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
  1752. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +1 -1
  1753. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
  1754. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
  1755. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -13
  1756. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -9
  1757. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
  1758. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +40 -85
  1759. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
  1760. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -8
  1761. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +3 -2
  1762. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
  1763. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +118 -94
  1764. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
  1765. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  1766. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  1767. data/third_party/abseil-cpp/absl/flags/config.h +68 -0
  1768. data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
  1769. data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
  1770. data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
  1771. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc +26 -0
  1772. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  1773. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  1774. data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
  1775. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  1776. data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  1777. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  1778. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  1779. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  1780. data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  1781. data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
  1782. data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  1783. data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
  1784. data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
  1785. data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
  1786. data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  1787. data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
  1788. data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  1789. data/third_party/abseil-cpp/absl/functional/any_invocable.h +5 -2
  1790. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +47 -26
  1791. data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
  1792. data/third_party/abseil-cpp/absl/hash/internal/hash.h +18 -4
  1793. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
  1794. data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
  1795. data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
  1796. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -3
  1797. data/third_party/abseil-cpp/absl/numeric/int128.cc +10 -8
  1798. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +14 -6
  1799. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  1800. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +1 -1
  1801. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +2 -23
  1802. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
  1803. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
  1804. data/third_party/abseil-cpp/absl/random/random.h +6 -6
  1805. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +1 -0
  1806. data/third_party/abseil-cpp/absl/status/status.cc +19 -12
  1807. data/third_party/abseil-cpp/absl/status/status.h +2 -2
  1808. data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
  1809. data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
  1810. data/third_party/abseil-cpp/absl/strings/cord.cc +92 -40
  1811. data/third_party/abseil-cpp/absl/strings/cord.h +71 -80
  1812. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +8 -5
  1813. data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
  1814. data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
  1815. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
  1816. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
  1817. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  1818. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +330 -70
  1819. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +8 -4
  1820. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +26 -14
  1821. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +5 -5
  1822. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +9 -7
  1823. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +5 -4
  1824. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
  1825. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
  1826. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +8 -5
  1827. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
  1828. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +4 -4
  1829. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
  1830. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
  1831. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +12 -10
  1832. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
  1833. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
  1834. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
  1835. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
  1836. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
  1837. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
  1838. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +126 -29
  1839. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
  1840. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +4 -3
  1841. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +49 -287
  1842. data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
  1843. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +2 -1
  1844. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +4 -2
  1845. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
  1846. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
  1847. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +10 -101
  1848. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
  1849. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
  1850. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
  1851. data/third_party/abseil-cpp/absl/strings/numbers.cc +34 -31
  1852. data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
  1853. data/third_party/abseil-cpp/absl/strings/str_cat.h +50 -3
  1854. data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
  1855. data/third_party/abseil-cpp/absl/strings/string_view.cc +6 -6
  1856. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -10
  1857. data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
  1858. data/third_party/abseil-cpp/absl/strings/substitute.h +46 -20
  1859. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
  1860. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
  1861. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
  1862. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +104 -55
  1863. data/third_party/abseil-cpp/absl/synchronization/mutex.h +85 -46
  1864. data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
  1865. data/third_party/abseil-cpp/absl/synchronization/notification.h +0 -1
  1866. data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
  1867. data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
  1868. data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
  1869. data/third_party/abseil-cpp/absl/time/duration.cc +7 -7
  1870. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  1871. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  1872. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
  1873. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
  1874. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
  1875. data/third_party/abseil-cpp/absl/time/time.cc +2 -2
  1876. data/third_party/abseil-cpp/absl/time/time.h +253 -158
  1877. data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
  1878. data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
  1879. data/third_party/abseil-cpp/absl/types/span.h +29 -7
  1880. data/third_party/boringssl-with-bazel/err_data.c +728 -712
  1881. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
  1882. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
  1883. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
  1884. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
  1885. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
  1886. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
  1887. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
  1888. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +177 -196
  1889. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
  1890. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
  1891. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
  1892. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
  1893. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
  1894. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
  1895. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
  1896. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
  1897. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
  1898. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
  1899. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
  1900. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
  1901. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +135 -90
  1902. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
  1903. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +797 -793
  1904. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +529 -526
  1905. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
  1906. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
  1907. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
  1908. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
  1909. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
  1910. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +17 -11
  1911. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +37 -51
  1912. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
  1913. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +13 -9
  1914. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +22 -19
  1915. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +5 -5
  1916. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
  1917. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
  1918. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
  1919. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +40 -27
  1920. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
  1921. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
  1922. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
  1923. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
  1924. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
  1925. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
  1926. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
  1927. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
  1928. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
  1929. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
  1930. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
  1931. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
  1932. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
  1933. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
  1934. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
  1935. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
  1936. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +34 -37
  1937. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +22 -11
  1938. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  1939. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
  1940. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
  1941. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
  1942. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
  1943. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
  1944. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
  1945. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
  1946. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
  1947. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
  1948. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
  1949. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
  1950. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
  1951. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
  1952. data/third_party/boringssl-with-bazel/src/crypto/{cpu-ppc64le.c → cpu_arm_openbsd.c} +10 -17
  1953. data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
  1954. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
  1955. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +22 -31
  1956. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
  1957. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
  1958. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
  1959. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
  1960. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
  1961. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
  1962. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
  1963. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
  1964. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +43 -16
  1965. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
  1966. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  1967. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
  1968. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +229 -102
  1969. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +31 -7
  1970. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  1971. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
  1972. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
  1973. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
  1974. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
  1975. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
  1976. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
  1977. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
  1978. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
  1979. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
  1980. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
  1981. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
  1982. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
  1983. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +6 -6
  1984. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
  1985. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
  1986. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
  1987. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
  1988. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
  1989. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
  1990. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
  1991. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
  1992. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
  1993. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
  1994. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
  1995. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
  1996. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +36 -27
  1997. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
  1998. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
  1999. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
  2000. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
  2001. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
  2002. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  2003. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
  2004. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
  2005. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
  2006. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
  2007. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
  2008. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
  2009. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
  2010. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
  2011. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
  2012. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
  2013. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
  2014. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
  2015. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
  2016. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
  2017. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
  2018. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
  2019. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
  2020. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
  2021. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
  2022. data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
  2023. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
  2024. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +24 -6
  2025. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
  2026. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
  2027. data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
  2028. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +49 -49
  2029. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +92 -18
  2030. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +12 -12
  2031. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +108 -86
  2032. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +55 -25
  2033. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +55 -71
  2034. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
  2035. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +72 -65
  2036. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
  2037. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +62 -51
  2038. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  2039. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
  2040. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +12 -17
  2041. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +25 -26
  2042. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -14
  2043. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +9 -1
  2044. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +44 -16
  2045. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
  2046. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
  2047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
  2048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -23
  2049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
  2050. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +3 -8
  2051. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +170 -160
  2052. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  2053. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +69 -61
  2054. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -12
  2055. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  2056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
  2057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
  2058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
  2059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
  2060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
  2061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
  2062. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +22 -68
  2063. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
  2064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +43 -16
  2065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +42 -314
  2066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +244 -139
  2067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +144 -205
  2068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
  2069. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +593 -421
  2070. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  2071. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
  2072. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
  2073. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
  2074. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
  2075. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
  2076. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  2077. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +52 -6
  2078. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +192 -18
  2079. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
  2080. data/third_party/boringssl-with-bazel/src/crypto/internal.h +391 -18
  2081. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +91 -0
  2082. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +204 -0
  2083. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +833 -0
  2084. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
  2085. data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
  2086. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
  2087. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +9 -4
  2088. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
  2089. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
  2090. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +633 -613
  2091. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
  2092. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
  2093. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
  2094. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
  2095. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
  2096. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
  2097. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
  2098. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
  2099. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
  2100. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
  2101. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
  2102. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  2103. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
  2104. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
  2105. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
  2106. data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +6 -17
  2107. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
  2108. data/third_party/boringssl-with-bazel/src/crypto/{asn1/a_print.c → rsa_extra/internal.h} +15 -21
  2109. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  2110. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
  2111. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
  2112. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
  2113. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
  2114. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +128 -34
  2115. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +418 -133
  2116. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +116 -284
  2117. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +701 -87
  2118. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
  2119. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +63 -55
  2120. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
  2121. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
  2122. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
  2123. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +285 -331
  2124. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
  2125. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
  2126. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +68 -50
  2127. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +132 -151
  2128. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +790 -0
  2129. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
  2130. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
  2131. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
  2132. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +220 -254
  2133. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
  2134. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
  2135. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +136 -270
  2136. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
  2137. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
  2138. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
  2139. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
  2140. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +528 -616
  2141. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
  2142. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +164 -181
  2143. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
  2144. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +186 -203
  2145. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
  2146. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
  2147. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1864 -2050
  2148. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +380 -480
  2149. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
  2150. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +266 -265
  2151. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
  2152. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
  2153. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
  2154. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
  2155. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
  2156. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +329 -416
  2157. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
  2158. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
  2159. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
  2160. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
  2161. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
  2162. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
  2163. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
  2164. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
  2165. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
  2166. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
  2167. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
  2168. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
  2169. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +79 -171
  2170. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
  2171. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
  2172. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
  2173. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
  2174. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
  2175. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +294 -344
  2176. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +342 -365
  2177. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
  2178. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
  2179. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
  2180. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
  2181. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
  2182. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +120 -125
  2183. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
  2184. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +228 -265
  2185. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
  2186. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
  2187. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
  2188. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
  2189. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +130 -135
  2190. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +652 -691
  2191. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +90 -75
  2192. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1063 -1145
  2193. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +13 -11
  2194. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
  2195. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +217 -191
  2196. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
  2197. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +50 -14
  2198. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +29 -14
  2199. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  2200. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
  2201. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
  2202. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
  2203. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
  2204. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
  2205. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
  2206. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
  2207. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
  2208. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
  2209. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  2210. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
  2211. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
  2212. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
  2213. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
  2214. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -33
  2215. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  2216. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
  2217. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +69 -16
  2218. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
  2219. data/third_party/boringssl-with-bazel/src/include/openssl/kyber.h +128 -0
  2220. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
  2221. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +7 -3
  2222. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +8 -1
  2223. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
  2224. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -18
  2225. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
  2226. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
  2227. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +98 -5
  2228. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
  2229. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +18 -21
  2230. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +285 -92
  2231. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
  2232. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +381 -287
  2233. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +9 -6
  2234. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
  2235. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +22 -7
  2236. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +57 -23
  2237. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
  2238. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2075 -1407
  2239. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +242 -214
  2240. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
  2241. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
  2242. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
  2243. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
  2244. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
  2245. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +45 -26
  2246. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +64 -35
  2247. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
  2248. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
  2249. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +53 -34
  2250. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
  2251. data/third_party/boringssl-with-bazel/src/ssl/internal.h +200 -121
  2252. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +47 -12
  2253. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  2254. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
  2255. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
  2256. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +47 -69
  2257. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
  2258. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
  2259. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +217 -226
  2260. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +78 -101
  2261. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +106 -142
  2262. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +244 -35
  2263. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +167 -64
  2264. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +41 -32
  2265. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  2266. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
  2267. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
  2268. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +7 -44
  2269. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
  2270. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +7 -23
  2271. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +25 -34
  2272. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
  2273. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
  2274. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
  2275. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
  2276. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  2277. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
  2278. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
  2279. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  2280. data/third_party/cares/cares/include/ares.h +23 -1
  2281. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  2282. data/third_party/cares/cares/include/ares_rules.h +2 -2
  2283. data/third_party/cares/cares/include/ares_version.h +3 -3
  2284. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  2285. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  2286. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  2287. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  2288. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  2289. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  2290. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  2291. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  2292. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  2293. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  2294. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  2295. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  2296. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  2297. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  2298. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  2299. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  2300. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  2301. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  2302. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  2303. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  2304. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  2305. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  2306. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  2307. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  2308. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  2309. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  2310. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  2311. data/third_party/re2/re2/bitstate.cc +3 -3
  2312. data/third_party/re2/re2/dfa.cc +13 -13
  2313. data/third_party/re2/re2/nfa.cc +4 -4
  2314. data/third_party/re2/re2/onepass.cc +2 -2
  2315. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  2316. data/third_party/re2/re2/prefilter_tree.h +3 -2
  2317. data/third_party/re2/re2/prog.cc +11 -2
  2318. data/third_party/re2/re2/prog.h +17 -5
  2319. data/third_party/re2/re2/re2.cc +6 -11
  2320. data/third_party/re2/re2/re2.h +1 -1
  2321. data/third_party/re2/re2/regexp.cc +1 -2
  2322. data/third_party/re2/re2/stringpiece.h +10 -7
  2323. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  2324. data/third_party/re2/re2/unicode_groups.cc +319 -151
  2325. data/third_party/re2/re2/walker-inl.h +3 -2
  2326. data/third_party/re2/util/mutex.h +4 -4
  2327. data/third_party/upb/upb/{table_internal.h → alloc.h} +6 -6
  2328. data/third_party/upb/upb/arena.h +4 -193
  2329. data/third_party/upb/upb/array.h +4 -51
  2330. data/third_party/upb/upb/base/descriptor_constants.h +104 -0
  2331. data/third_party/upb/upb/base/log2.h +57 -0
  2332. data/third_party/upb/upb/{status.c → base/status.c} +2 -7
  2333. data/third_party/upb/upb/base/status.h +66 -0
  2334. data/third_party/upb/upb/base/string_view.h +75 -0
  2335. data/third_party/upb/upb/{array.c → collections/array.c} +67 -36
  2336. data/third_party/upb/upb/collections/array.h +85 -0
  2337. data/third_party/upb/upb/collections/array_internal.h +135 -0
  2338. data/third_party/upb/upb/{map.c → collections/map.c} +53 -26
  2339. data/third_party/upb/upb/collections/map.h +135 -0
  2340. data/third_party/upb/upb/collections/map_gencode_util.h +78 -0
  2341. data/third_party/upb/upb/collections/map_internal.h +170 -0
  2342. data/third_party/upb/upb/collections/map_sorter.c +166 -0
  2343. data/third_party/upb/upb/collections/map_sorter_internal.h +109 -0
  2344. data/third_party/upb/upb/{message_value.h → collections/message_value.h} +12 -13
  2345. data/third_party/upb/upb/decode.h +3 -62
  2346. data/third_party/upb/upb/def.h +4 -384
  2347. data/third_party/upb/upb/def.hpp +3 -411
  2348. data/third_party/upb/upb/encode.h +3 -48
  2349. data/third_party/upb/upb/extension_registry.h +3 -52
  2350. data/third_party/upb/upb/{table.c → hash/common.c} +52 -110
  2351. data/third_party/upb/upb/hash/common.h +199 -0
  2352. data/third_party/upb/upb/hash/int_table.h +102 -0
  2353. data/third_party/upb/upb/hash/str_table.h +161 -0
  2354. data/third_party/upb/upb/{json_decode.c → json/decode.c} +63 -98
  2355. data/third_party/upb/upb/json/decode.h +52 -0
  2356. data/third_party/upb/upb/{json_encode.c → json/encode.c} +69 -45
  2357. data/third_party/upb/upb/json/encode.h +70 -0
  2358. data/third_party/upb/upb/json_decode.h +4 -15
  2359. data/third_party/upb/upb/json_encode.h +4 -33
  2360. data/third_party/upb/upb/lex/atoi.c +68 -0
  2361. data/third_party/upb/upb/lex/atoi.h +53 -0
  2362. data/third_party/upb/upb/{upb.c → lex/round_trip.c} +2 -11
  2363. data/third_party/upb/upb/{internal/upb.h → lex/round_trip.h} +17 -30
  2364. data/third_party/upb/upb/lex/strtod.c +97 -0
  2365. data/third_party/upb/upb/lex/strtod.h +46 -0
  2366. data/third_party/upb/upb/lex/unicode.c +57 -0
  2367. data/third_party/upb/upb/lex/unicode.h +77 -0
  2368. data/third_party/upb/upb/map.h +4 -85
  2369. data/third_party/upb/upb/mem/alloc.c +47 -0
  2370. data/third_party/upb/upb/mem/alloc.h +98 -0
  2371. data/third_party/upb/upb/mem/arena.c +367 -0
  2372. data/third_party/upb/upb/mem/arena.h +160 -0
  2373. data/third_party/upb/upb/mem/arena_internal.h +114 -0
  2374. data/third_party/upb/upb/message/accessors.c +68 -0
  2375. data/third_party/upb/upb/message/accessors.h +379 -0
  2376. data/third_party/upb/upb/message/accessors_internal.h +325 -0
  2377. data/third_party/upb/upb/message/extension_internal.h +83 -0
  2378. data/third_party/upb/upb/message/internal.h +135 -0
  2379. data/third_party/upb/upb/message/message.c +180 -0
  2380. data/third_party/upb/upb/message/message.h +69 -0
  2381. data/third_party/upb/upb/mini_table/common.c +128 -0
  2382. data/third_party/upb/upb/mini_table/common.h +170 -0
  2383. data/third_party/upb/upb/mini_table/common_internal.h +111 -0
  2384. data/third_party/upb/upb/{mini_table.c → mini_table/decode.c} +513 -533
  2385. data/third_party/upb/upb/mini_table/decode.h +179 -0
  2386. data/third_party/upb/upb/mini_table/encode.c +300 -0
  2387. data/third_party/upb/upb/mini_table/encode_internal.h +111 -0
  2388. data/third_party/upb/upb/{mini_table.hpp → mini_table/encode_internal.hpp} +32 -8
  2389. data/third_party/upb/upb/mini_table/enum_internal.h +88 -0
  2390. data/third_party/upb/upb/mini_table/extension_internal.h +47 -0
  2391. data/third_party/upb/upb/{extension_registry.c → mini_table/extension_registry.c} +27 -24
  2392. data/third_party/upb/upb/mini_table/extension_registry.h +104 -0
  2393. data/third_party/upb/upb/mini_table/field_internal.h +192 -0
  2394. data/third_party/upb/upb/mini_table/file_internal.h +47 -0
  2395. data/third_party/upb/upb/mini_table/message_internal.h +136 -0
  2396. data/third_party/upb/upb/mini_table/sub_internal.h +38 -0
  2397. data/third_party/upb/upb/mini_table/types.h +40 -0
  2398. data/third_party/upb/upb/mini_table.h +4 -157
  2399. data/third_party/upb/upb/msg.h +3 -38
  2400. data/third_party/upb/upb/port/atomic.h +101 -0
  2401. data/third_party/upb/upb/{port_def.inc → port/def.inc} +94 -27
  2402. data/third_party/upb/upb/{port_undef.inc → port/undef.inc} +13 -3
  2403. data/third_party/upb/upb/{internal → port}/vsnprintf_compat.h +5 -7
  2404. data/third_party/upb/upb/reflection/common.h +67 -0
  2405. data/third_party/upb/upb/reflection/def.h +42 -0
  2406. data/third_party/upb/upb/reflection/def.hpp +610 -0
  2407. data/third_party/upb/upb/reflection/def_builder.c +357 -0
  2408. data/third_party/upb/upb/reflection/def_builder_internal.h +157 -0
  2409. data/third_party/upb/upb/reflection/def_pool.c +462 -0
  2410. data/third_party/upb/upb/reflection/def_pool.h +108 -0
  2411. data/third_party/upb/upb/reflection/def_pool_internal.h +77 -0
  2412. data/third_party/upb/upb/reflection/def_type.c +50 -0
  2413. data/third_party/upb/upb/reflection/def_type.h +81 -0
  2414. data/third_party/upb/upb/reflection/desc_state.c +53 -0
  2415. data/third_party/upb/upb/reflection/desc_state_internal.h +64 -0
  2416. data/third_party/upb/upb/reflection/enum_def.c +310 -0
  2417. data/third_party/upb/upb/reflection/enum_def.h +80 -0
  2418. data/third_party/upb/upb/reflection/enum_def_internal.h +56 -0
  2419. data/third_party/upb/upb/reflection/enum_reserved_range.c +84 -0
  2420. data/third_party/upb/upb/reflection/enum_reserved_range.h +51 -0
  2421. data/third_party/upb/upb/reflection/enum_reserved_range_internal.h +55 -0
  2422. data/third_party/upb/upb/reflection/enum_value_def.c +144 -0
  2423. data/third_party/upb/upb/reflection/enum_value_def.h +57 -0
  2424. data/third_party/upb/upb/reflection/enum_value_def_internal.h +57 -0
  2425. data/third_party/upb/upb/reflection/extension_range.c +93 -0
  2426. data/third_party/upb/upb/reflection/extension_range.h +55 -0
  2427. data/third_party/upb/upb/reflection/extension_range_internal.h +54 -0
  2428. data/third_party/upb/upb/reflection/field_def.c +930 -0
  2429. data/third_party/upb/upb/reflection/field_def.h +91 -0
  2430. data/third_party/upb/upb/reflection/field_def_internal.h +76 -0
  2431. data/third_party/upb/upb/reflection/file_def.c +370 -0
  2432. data/third_party/upb/upb/reflection/file_def.h +77 -0
  2433. data/third_party/upb/upb/reflection/file_def_internal.h +57 -0
  2434. data/third_party/upb/upb/reflection/message.c +233 -0
  2435. data/third_party/upb/upb/reflection/message.h +102 -0
  2436. data/third_party/upb/upb/reflection/message.hpp +37 -0
  2437. data/third_party/upb/upb/reflection/message_def.c +718 -0
  2438. data/third_party/upb/upb/reflection/message_def.h +174 -0
  2439. data/third_party/upb/upb/reflection/message_def_internal.h +63 -0
  2440. data/third_party/upb/upb/reflection/message_reserved_range.c +81 -0
  2441. data/third_party/upb/upb/reflection/message_reserved_range.h +51 -0
  2442. data/third_party/upb/upb/reflection/message_reserved_range_internal.h +55 -0
  2443. data/third_party/upb/upb/reflection/method_def.c +124 -0
  2444. data/third_party/upb/upb/reflection/method_def.h +59 -0
  2445. data/third_party/upb/upb/reflection/method_def_internal.h +53 -0
  2446. data/third_party/upb/upb/reflection/oneof_def.c +226 -0
  2447. data/third_party/upb/upb/reflection/oneof_def.h +66 -0
  2448. data/third_party/upb/upb/reflection/oneof_def_internal.h +57 -0
  2449. data/third_party/upb/upb/reflection/service_def.c +128 -0
  2450. data/third_party/upb/upb/reflection/service_def.h +60 -0
  2451. data/third_party/upb/upb/reflection/service_def_internal.h +53 -0
  2452. data/third_party/upb/upb/reflection.h +4 -78
  2453. data/third_party/upb/upb/reflection.hpp +3 -7
  2454. data/third_party/upb/upb/status.h +4 -34
  2455. data/third_party/upb/upb/{collections.h → string_view.h} +7 -7
  2456. data/third_party/upb/upb/{text_encode.c → text/encode.c} +74 -70
  2457. data/third_party/upb/upb/text/encode.h +69 -0
  2458. data/third_party/upb/upb/text_encode.h +4 -32
  2459. data/third_party/upb/upb/upb.h +6 -151
  2460. data/third_party/upb/upb/upb.hpp +10 -18
  2461. data/third_party/upb/upb/wire/common.h +44 -0
  2462. data/third_party/upb/upb/wire/common_internal.h +50 -0
  2463. data/third_party/upb/upb/wire/decode.c +1343 -0
  2464. data/third_party/upb/upb/wire/decode.h +108 -0
  2465. data/third_party/upb/upb/{decode_fast.c → wire/decode_fast.c} +184 -225
  2466. data/third_party/upb/upb/{decode_fast.h → wire/decode_fast.h} +21 -7
  2467. data/third_party/upb/upb/{internal/decode.h → wire/decode_internal.h} +44 -92
  2468. data/third_party/upb/upb/{encode.c → wire/encode.c} +114 -95
  2469. data/third_party/upb/upb/wire/encode.h +92 -0
  2470. data/third_party/upb/upb/wire/eps_copy_input_stream.c +39 -0
  2471. data/third_party/upb/upb/wire/eps_copy_input_stream.h +425 -0
  2472. data/third_party/upb/upb/wire/reader.c +67 -0
  2473. data/third_party/upb/upb/wire/reader.h +227 -0
  2474. data/third_party/upb/upb/wire/swap_internal.h +63 -0
  2475. data/third_party/upb/upb/wire/types.h +41 -0
  2476. data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-neon.c +1 -1
  2477. data/third_party/{upb/third_party/utf8_range → utf8_range}/utf8_range.h +12 -0
  2478. data/third_party/zlib/compress.c +3 -3
  2479. data/third_party/zlib/crc32.c +21 -12
  2480. data/third_party/zlib/deflate.c +112 -106
  2481. data/third_party/zlib/deflate.h +2 -2
  2482. data/third_party/zlib/gzlib.c +1 -1
  2483. data/third_party/zlib/gzread.c +3 -5
  2484. data/third_party/zlib/gzwrite.c +1 -1
  2485. data/third_party/zlib/infback.c +10 -7
  2486. data/third_party/zlib/inflate.c +5 -2
  2487. data/third_party/zlib/inftrees.c +2 -2
  2488. data/third_party/zlib/inftrees.h +1 -1
  2489. data/third_party/zlib/trees.c +61 -62
  2490. data/third_party/zlib/uncompr.c +2 -2
  2491. data/third_party/zlib/zconf.h +16 -3
  2492. data/third_party/zlib/zlib.h +10 -10
  2493. data/third_party/zlib/zutil.c +9 -7
  2494. data/third_party/zlib/zutil.h +1 -0
  2495. metadata +509 -152
  2496. data/include/grpc/impl/codegen/gpr_slice.h +0 -71
  2497. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -176
  2498. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  2499. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -30
  2500. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  2501. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  2502. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
  2503. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
  2504. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
  2505. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
  2506. data/src/core/ext/transport/chttp2/transport/context_list.cc +0 -71
  2507. data/src/core/ext/transport/chttp2/transport/context_list.h +0 -54
  2508. data/src/core/lib/event_engine/socket_notifier.h +0 -55
  2509. data/src/core/lib/event_engine/thread_pool.cc +0 -195
  2510. data/src/core/lib/event_engine/thread_pool.h +0 -114
  2511. data/src/core/lib/gpr/cpu_iphone.cc +0 -44
  2512. data/src/core/lib/gpr/cpu_windows.cc +0 -33
  2513. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  2514. data/src/core/lib/gpr/murmur_hash.h +0 -29
  2515. data/src/core/lib/gpr/string_windows.cc +0 -69
  2516. data/src/core/lib/gpr/tls.h +0 -156
  2517. data/src/core/lib/gprpp/env_posix.cc +0 -47
  2518. data/src/core/lib/gprpp/global_config.h +0 -93
  2519. data/src/core/lib/gprpp/global_config_custom.h +0 -29
  2520. data/src/core/lib/gprpp/global_config_env.cc +0 -139
  2521. data/src/core/lib/gprpp/global_config_env.h +0 -133
  2522. data/src/core/lib/gprpp/global_config_generic.h +0 -40
  2523. data/src/core/lib/promise/call_push_pull.h +0 -148
  2524. data/src/core/lib/promise/intra_activity_waiter.h +0 -49
  2525. data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
  2526. data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -30
  2527. data/src/core/lib/slice/slice_api.cc +0 -39
  2528. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  2529. data/src/core/lib/slice/slice_refcount_base.h +0 -60
  2530. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
  2531. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
  2532. data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
  2533. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
  2534. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
  2535. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
  2536. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
  2537. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
  2538. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
  2539. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
  2540. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
  2541. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
  2542. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
  2543. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
  2544. data/third_party/upb/upb/arena.c +0 -277
  2545. data/third_party/upb/upb/decode.c +0 -1221
  2546. data/third_party/upb/upb/def.c +0 -3269
  2547. data/third_party/upb/upb/internal/table.h +0 -385
  2548. data/third_party/upb/upb/msg.c +0 -368
  2549. data/third_party/upb/upb/msg_internal.h +0 -837
  2550. data/third_party/upb/upb/reflection.c +0 -323
  2551. /data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
  2552. /data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
  2553. /data/third_party/{upb/third_party/utf8_range → utf8_range}/naive.c +0 -0
  2554. /data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-sse.c +0 -0
@@ -21,14 +21,15 @@
21
21
  #include <inttypes.h>
22
22
  #include <limits.h>
23
23
  #include <stdio.h>
24
- #include <stdlib.h>
25
24
  #include <string.h>
26
25
 
27
26
  #include <algorithm>
27
+ #include <initializer_list>
28
28
  #include <memory>
29
29
  #include <new>
30
30
  #include <string>
31
31
  #include <utility>
32
+ #include <vector>
32
33
 
33
34
  #include "absl/base/attributes.h"
34
35
  #include "absl/status/status.h"
@@ -37,17 +38,17 @@
37
38
  #include "absl/strings/str_format.h"
38
39
  #include "absl/strings/string_view.h"
39
40
  #include "absl/types/optional.h"
40
- #include "absl/types/variant.h"
41
41
 
42
- #include <grpc/impl/codegen/connectivity_state.h>
43
- #include <grpc/impl/codegen/grpc_types.h>
42
+ #include <grpc/event_engine/event_engine.h>
43
+ #include <grpc/grpc.h>
44
+ #include <grpc/impl/connectivity_state.h>
44
45
  #include <grpc/slice_buffer.h>
45
46
  #include <grpc/status.h>
46
47
  #include <grpc/support/alloc.h>
47
- #include <grpc/support/atm.h>
48
48
  #include <grpc/support/log.h>
49
+ #include <grpc/support/time.h>
49
50
 
50
- #include "src/core/ext/transport/chttp2/transport/context_list.h"
51
+ #include "src/core/ext/transport/chttp2/transport/context_list_entry.h"
51
52
  #include "src/core/ext/transport/chttp2/transport/flow_control.h"
52
53
  #include "src/core/ext/transport/chttp2/transport/frame.h"
53
54
  #include "src/core/ext/transport/chttp2/transport/frame_data.h"
@@ -55,14 +56,19 @@
55
56
  #include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
56
57
  #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
57
58
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
59
+ #include "src/core/ext/transport/chttp2/transport/http_trace.h"
58
60
  #include "src/core/ext/transport/chttp2/transport/internal.h"
59
61
  #include "src/core/ext/transport/chttp2/transport/stream_map.h"
60
62
  #include "src/core/ext/transport/chttp2/transport/varint.h"
63
+ #include "src/core/lib/channel/call_tracer.h"
61
64
  #include "src/core/lib/channel/channel_args.h"
65
+ #include "src/core/lib/channel/context.h"
62
66
  #include "src/core/lib/debug/stats.h"
67
+ #include "src/core/lib/debug/stats_data.h"
63
68
  #include "src/core/lib/experiments/experiments.h"
64
69
  #include "src/core/lib/gpr/useful.h"
65
70
  #include "src/core/lib/gprpp/bitset.h"
71
+ #include "src/core/lib/gprpp/crash.h"
66
72
  #include "src/core/lib/gprpp/debug_location.h"
67
73
  #include "src/core/lib/gprpp/ref_counted.h"
68
74
  #include "src/core/lib/gprpp/status_helper.h"
@@ -72,7 +78,7 @@
72
78
  #include "src/core/lib/iomgr/error.h"
73
79
  #include "src/core/lib/iomgr/exec_ctx.h"
74
80
  #include "src/core/lib/iomgr/iomgr_fwd.h"
75
- #include "src/core/lib/iomgr/timer.h"
81
+ #include "src/core/lib/iomgr/port.h"
76
82
  #include "src/core/lib/promise/poll.h"
77
83
  #include "src/core/lib/resource_quota/arena.h"
78
84
  #include "src/core/lib/resource_quota/memory_quota.h"
@@ -81,7 +87,6 @@
81
87
  #include "src/core/lib/slice/slice.h"
82
88
  #include "src/core/lib/slice/slice_buffer.h"
83
89
  #include "src/core/lib/slice/slice_internal.h"
84
- #include "src/core/lib/slice/slice_refcount.h"
85
90
  #include "src/core/lib/transport/bdp_estimator.h"
86
91
  #include "src/core/lib/transport/connectivity_state.h"
87
92
  #include "src/core/lib/transport/error_utils.h"
@@ -91,19 +96,24 @@
91
96
  #include "src/core/lib/transport/transport.h"
92
97
  #include "src/core/lib/transport/transport_impl.h"
93
98
 
99
+ #ifdef GRPC_POSIX_SOCKET_TCP
100
+ #include "src/core/lib/iomgr/ev_posix.h"
101
+ #endif
102
+
94
103
  #define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
95
104
  #define MAX_WINDOW 0x7fffffffu
96
105
  #define MAX_WRITE_BUFFER_SIZE (64 * 1024 * 1024)
97
- #define DEFAULT_MAX_HEADER_LIST_SIZE (8 * 1024)
106
+ #define DEFAULT_MAX_HEADER_LIST_SIZE (16 * 1024)
107
+ #define DEFAULT_MAX_HEADER_LIST_SIZE_SOFT_LIMIT (8 * 1024)
98
108
 
99
109
  #define DEFAULT_CLIENT_KEEPALIVE_TIME_MS INT_MAX
100
- #define DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_MS 20000 /* 20 seconds */
101
- #define DEFAULT_SERVER_KEEPALIVE_TIME_MS 7200000 /* 2 hours */
102
- #define DEFAULT_SERVER_KEEPALIVE_TIMEOUT_MS 20000 /* 20 seconds */
110
+ #define DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_MS 20000 // 20 seconds
111
+ #define DEFAULT_SERVER_KEEPALIVE_TIME_MS 7200000 // 2 hours
112
+ #define DEFAULT_SERVER_KEEPALIVE_TIMEOUT_MS 20000 // 20 seconds
103
113
  #define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
104
114
  #define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2
105
115
 
106
- #define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
116
+ #define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 // 5 minutes
107
117
  #define DEFAULT_MAX_PINGS_BETWEEN_DATA 2
108
118
  #define DEFAULT_MAX_PING_STRIKES 2
109
119
 
@@ -128,7 +138,6 @@ static int g_default_max_pings_without_data = DEFAULT_MAX_PINGS_BETWEEN_DATA;
128
138
  static int g_default_max_ping_strikes = DEFAULT_MAX_PING_STRIKES;
129
139
 
130
140
  #define MAX_CLIENT_STREAM_ID 0x7fffffffu
131
- grpc_core::TraceFlag grpc_http_trace(false, "http");
132
141
  grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
133
142
  grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
134
143
  "chttp2_refcount");
@@ -173,24 +182,43 @@ static void start_bdp_ping(void* tp, grpc_error_handle error);
173
182
  static void finish_bdp_ping(void* tp, grpc_error_handle error);
174
183
  static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
175
184
  static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
176
- static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error);
177
- static void next_bdp_ping_timer_expired_locked(void* tp,
178
- grpc_error_handle error);
185
+ static void next_bdp_ping_timer_expired(grpc_chttp2_transport* t);
186
+ static void next_bdp_ping_timer_expired_locked(
187
+ void* tp, GRPC_UNUSED grpc_error_handle error);
179
188
 
180
189
  static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
181
190
  static void send_ping_locked(grpc_chttp2_transport* t,
182
191
  grpc_closure* on_initiate, grpc_closure* on_ack);
183
- static void retry_initiate_ping_locked(void* tp, grpc_error_handle error);
192
+ static void retry_initiate_ping_locked(void* tp,
193
+ GRPC_UNUSED grpc_error_handle error);
184
194
 
185
195
  // keepalive-relevant functions
186
- static void init_keepalive_ping(void* arg, grpc_error_handle error);
187
- static void init_keepalive_ping_locked(void* arg, grpc_error_handle error);
196
+ static void init_keepalive_ping(grpc_chttp2_transport* t);
197
+ static void init_keepalive_ping_locked(void* arg,
198
+ GRPC_UNUSED grpc_error_handle error);
188
199
  static void start_keepalive_ping(void* arg, grpc_error_handle error);
189
200
  static void finish_keepalive_ping(void* arg, grpc_error_handle error);
190
201
  static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
191
202
  static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
192
- static void keepalive_watchdog_fired(void* arg, grpc_error_handle error);
193
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error);
203
+ static void keepalive_watchdog_fired(grpc_chttp2_transport* t);
204
+ static void keepalive_watchdog_fired_locked(
205
+ void* arg, GRPC_UNUSED grpc_error_handle error);
206
+ static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t);
207
+
208
+ namespace {
209
+ grpc_core::CallTracerInterface* CallTracerIfEnabled(grpc_chttp2_stream* s) {
210
+ if (s->context == nullptr || !grpc_core::IsTraceRecordCallopsEnabled()) {
211
+ return nullptr;
212
+ }
213
+ return static_cast<grpc_core::CallTracerInterface*>(
214
+ static_cast<grpc_call_context_element*>(
215
+ s->context)[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE]
216
+ .value);
217
+ }
218
+
219
+ grpc_core::WriteTimestampsCallback g_write_timestamps_callback = nullptr;
220
+ grpc_core::CopyContextFn g_get_copied_context_fn = nullptr;
221
+ } // namespace
194
222
 
195
223
  namespace grpc_core {
196
224
 
@@ -216,6 +244,40 @@ void TestOnlyGlobalHttp2TransportDisableTransientFailureStateNotification(
216
244
  test_only_disable_transient_failure_state_notification = disable;
217
245
  }
218
246
 
247
+ void GrpcHttp2SetWriteTimestampsCallback(WriteTimestampsCallback fn) {
248
+ g_write_timestamps_callback = fn;
249
+ }
250
+
251
+ void GrpcHttp2SetCopyContextFn(CopyContextFn fn) {
252
+ g_get_copied_context_fn = fn;
253
+ }
254
+
255
+ WriteTimestampsCallback GrpcHttp2GetWriteTimestampsCallback() {
256
+ return g_write_timestamps_callback;
257
+ }
258
+
259
+ CopyContextFn GrpcHttp2GetCopyContextFn() { return g_get_copied_context_fn; }
260
+
261
+ // For each entry in the passed ContextList, it executes the function set using
262
+ // GrpcHttp2SetWriteTimestampsCallback method with each context in the list
263
+ // and \a ts. It also deletes/frees up the passed ContextList after this
264
+ // operation.
265
+ void ForEachContextListEntryExecute(void* arg, Timestamps* ts,
266
+ grpc_error_handle error) {
267
+ ContextList* context_list = reinterpret_cast<ContextList*>(arg);
268
+ if (!context_list) {
269
+ return;
270
+ }
271
+ for (auto it = context_list->begin(); it != context_list->end(); it++) {
272
+ ContextListEntry& entry = (*it);
273
+ if (ts) {
274
+ ts->byte_offset = static_cast<uint32_t>(entry.ByteOffsetInStream());
275
+ }
276
+ g_write_timestamps_callback(entry.TraceContext(), ts, error);
277
+ }
278
+ delete context_list;
279
+ }
280
+
219
281
  } // namespace grpc_core
220
282
 
221
283
  //
@@ -225,25 +287,27 @@ void TestOnlyGlobalHttp2TransportDisableTransientFailureStateNotification(
225
287
  grpc_chttp2_transport::~grpc_chttp2_transport() {
226
288
  size_t i;
227
289
 
290
+ event_engine.reset();
291
+
228
292
  if (channelz_socket != nullptr) {
229
293
  channelz_socket.reset();
230
294
  }
231
295
 
232
296
  grpc_endpoint_destroy(ep);
233
297
 
234
- grpc_slice_buffer_destroy_internal(&qbuf);
298
+ grpc_slice_buffer_destroy(&qbuf);
235
299
 
236
- grpc_slice_buffer_destroy_internal(&outbuf);
300
+ grpc_slice_buffer_destroy(&outbuf);
237
301
 
238
- grpc_error_handle error =
239
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
302
+ grpc_error_handle error = GRPC_ERROR_CREATE("Transport destroyed");
240
303
  // ContextList::Execute follows semantics of a callback function and does not
241
304
  // take a ref on error
242
- grpc_core::ContextList::Execute(cl, nullptr, error);
243
- GRPC_ERROR_UNREF(error);
305
+ if (cl != nullptr) {
306
+ grpc_core::ForEachContextListEntryExecute(cl, nullptr, error);
307
+ }
244
308
  cl = nullptr;
245
309
 
246
- grpc_slice_buffer_destroy_internal(&read_buffer);
310
+ grpc_slice_buffer_destroy(&read_buffer);
247
311
  grpc_chttp2_goaway_parser_destroy(&goaway_parser);
248
312
 
249
313
  for (i = 0; i < STREAM_LIST_COUNT; i++) {
@@ -251,16 +315,13 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
251
315
  GPR_ASSERT(lists[i].tail == nullptr);
252
316
  }
253
317
 
254
- GRPC_ERROR_UNREF(goaway_error);
255
-
256
318
  GPR_ASSERT(grpc_chttp2_stream_map_size(&stream_map) == 0);
257
319
 
258
320
  grpc_chttp2_stream_map_destroy(&stream_map);
259
321
 
260
322
  GRPC_COMBINER_UNREF(combiner, "chttp2_transport");
261
323
 
262
- cancel_pings(this,
263
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"));
324
+ cancel_pings(this, GRPC_ERROR_CREATE("Transport destroyed"));
264
325
 
265
326
  while (write_cb_pool) {
266
327
  grpc_chttp2_write_cb* next = write_cb_pool->next;
@@ -268,7 +329,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
268
329
  write_cb_pool = next;
269
330
  }
270
331
 
271
- GRPC_ERROR_UNREF(closed_with_error);
272
332
  gpr_free(ping_acks);
273
333
  if (grpc_core::test_only_destruct_callback != nullptr) {
274
334
  grpc_core::test_only_destruct_callback();
@@ -329,17 +389,43 @@ static void read_channel_args(grpc_chttp2_transport* t,
329
389
  t->keepalive_permit_without_calls =
330
390
  channel_args.GetBool(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)
331
391
  .value_or(false);
392
+ // Only send the prefered rx frame size http2 setting if we are instructed
393
+ // to auto size the buffers allocated at tcp level and we also can adjust
394
+ // sending frame size.
395
+ t->enable_preferred_rx_crypto_frame_advertisement =
396
+ channel_args
397
+ .GetBool(GRPC_ARG_EXPERIMENTAL_HTTP2_PREFERRED_CRYPTO_FRAME_SIZE)
398
+ .value_or(false);
332
399
 
333
400
  if (channel_args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
334
401
  .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
335
402
  t->channelz_socket =
336
403
  grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
337
- std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
338
- absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
404
+ std::string(grpc_endpoint_get_local_address(t->ep)),
405
+ std::string(t->peer_string.as_string_view()),
406
+ absl::StrCat(get_vtable()->name, " ",
407
+ t->peer_string.as_string_view()),
339
408
  channel_args
340
409
  .GetObjectRef<grpc_core::channelz::SocketNode::Security>());
341
410
  }
342
411
 
412
+ t->ack_pings = channel_args.GetBool("grpc.http2.ack_pings").value_or(true);
413
+
414
+ const int soft_limit =
415
+ channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE).value_or(-1);
416
+ if (soft_limit < 0) {
417
+ // Set soft limit to 0.8 * hard limit if this is larger than
418
+ // `DEFAULT_MAX_HEADER_LIST_SIZE_SOFT_LIMIT` and
419
+ // `GRPC_ARG_MAX_METADATA_SIZE` is not set.
420
+ t->max_header_list_size_soft_limit = std::max(
421
+ DEFAULT_MAX_HEADER_LIST_SIZE_SOFT_LIMIT,
422
+ static_cast<int>(
423
+ 0.8 * channel_args.GetInt(GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE)
424
+ .value_or(-1)));
425
+ } else {
426
+ t->max_header_list_size_soft_limit = soft_limit;
427
+ }
428
+
343
429
  static const struct {
344
430
  absl::string_view channel_arg_name;
345
431
  grpc_chttp2_setting_id setting_id;
@@ -359,7 +445,7 @@ static void read_channel_args(grpc_chttp2_transport* t,
359
445
  0,
360
446
  INT32_MAX,
361
447
  {true, true}},
362
- {GRPC_ARG_MAX_METADATA_SIZE,
448
+ {GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE,
363
449
  GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
364
450
  -1,
365
451
  0,
@@ -392,6 +478,21 @@ static void read_channel_args(grpc_chttp2_transport* t,
392
478
  if (value >= 0) {
393
479
  queue_setting_update(t, setting.setting_id,
394
480
  grpc_core::Clamp(value, setting.min, setting.max));
481
+ } else if (setting.setting_id ==
482
+ GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE) {
483
+ // Set value to 1.25 * soft limit if this is larger than
484
+ // `DEFAULT_MAX_HEADER_LIST_SIZE` and
485
+ // `GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE` is not set.
486
+ const int soft_limit = channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE)
487
+ .value_or(setting.default_value);
488
+ const int value = (soft_limit >= 0 && soft_limit < (INT_MAX / 1.25))
489
+ ? static_cast<int>(soft_limit * 1.25)
490
+ : soft_limit;
491
+ if (value > DEFAULT_MAX_HEADER_LIST_SIZE) {
492
+ queue_setting_update(
493
+ t, setting.setting_id,
494
+ grpc_core::Clamp(value, setting.min, setting.max));
495
+ }
395
496
  }
396
497
  } else if (channel_args.Contains(setting.channel_arg_name)) {
397
498
  gpr_log(GPR_DEBUG, "%s is not available on %s",
@@ -399,6 +500,16 @@ static void read_channel_args(grpc_chttp2_transport* t,
399
500
  is_client ? "clients" : "servers");
400
501
  }
401
502
  }
503
+
504
+ if (t->enable_preferred_rx_crypto_frame_advertisement) {
505
+ const grpc_chttp2_setting_parameters* sp =
506
+ &grpc_chttp2_settings_parameters
507
+ [GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE];
508
+ queue_setting_update(
509
+ t, GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE,
510
+ grpc_core::Clamp(INT_MAX, static_cast<int>(sp->min_value),
511
+ static_cast<int>(sp->max_value)));
512
+ }
402
513
  }
403
514
 
404
515
  static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
@@ -435,18 +546,22 @@ static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
435
546
  g_default_min_recv_ping_interval_without_data_ms);
436
547
  }
437
548
 
438
- static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
549
+ static void init_keepalive_pings_if_enabled_locked(
550
+ void* arg, GRPC_UNUSED grpc_error_handle error) {
551
+ GPR_DEBUG_ASSERT(error.ok());
552
+ grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
439
553
  if (t->keepalive_time != grpc_core::Duration::Infinity()) {
440
554
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING;
441
555
  GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
442
- GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
443
- grpc_schedule_on_exec_ctx);
444
- grpc_timer_init(&t->keepalive_ping_timer,
445
- grpc_core::Timestamp::Now() + t->keepalive_time,
446
- &t->init_keepalive_ping_locked);
556
+ t->keepalive_ping_timer_handle =
557
+ t->event_engine->RunAfter(t->keepalive_time, [t] {
558
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
559
+ grpc_core::ExecCtx exec_ctx;
560
+ init_keepalive_ping(t);
561
+ });
447
562
  } else {
448
563
  // Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
449
- // inflight keeaplive timers
564
+ // inflight keepalive timers
450
565
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED;
451
566
  }
452
567
  }
@@ -458,7 +573,8 @@ grpc_chttp2_transport::grpc_chttp2_transport(
458
573
  ? "chttp2_refcount"
459
574
  : nullptr),
460
575
  ep(ep),
461
- peer_string(grpc_endpoint_get_peer(ep)),
576
+ peer_string(
577
+ grpc_core::Slice::FromCopiedString(grpc_endpoint_get_peer(ep))),
462
578
  memory_owner(channel_args.GetObject<grpc_core::ResourceQuota>()
463
579
  ->memory_quota()
464
580
  ->CreateMemoryOwner(absl::StrCat(
@@ -471,10 +587,14 @@ grpc_chttp2_transport::grpc_chttp2_transport(
471
587
  is_client(is_client),
472
588
  next_stream_id(is_client ? 1 : 2),
473
589
  flow_control(
474
- peer_string.c_str(),
590
+ peer_string.as_string_view(),
475
591
  channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true),
476
592
  &memory_owner),
477
- deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0) {
593
+ deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0),
594
+ event_engine(
595
+ channel_args
596
+ .GetObjectRef<grpc_event_engine::experimental::EventEngine>()) {
597
+ cl = new grpc_core::ContextList();
478
598
  GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
479
599
  GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
480
600
  base.vtable = get_vtable();
@@ -519,13 +639,16 @@ grpc_chttp2_transport::grpc_chttp2_transport(
519
639
 
520
640
  // No pings allowed before receiving a header or data frame.
521
641
  ping_state.pings_before_data_required = 0;
522
- ping_state.is_delayed_ping_timer_set = false;
523
642
  ping_state.last_ping_sent_time = grpc_core::Timestamp::InfPast();
524
643
 
525
644
  ping_recv_state.last_ping_recv_time = grpc_core::Timestamp::InfPast();
526
645
  ping_recv_state.ping_strikes = 0;
527
646
 
528
- init_keepalive_pings_if_enabled(this);
647
+ grpc_core::ExecCtx exec_ctx;
648
+ combiner->Run(
649
+ GRPC_CLOSURE_INIT(&init_keepalive_ping_locked,
650
+ init_keepalive_pings_if_enabled_locked, this, nullptr),
651
+ absl::OkStatus());
529
652
 
530
653
  if (flow_control.bdp_probe()) {
531
654
  bdp_ping_blocked = true;
@@ -538,15 +661,23 @@ grpc_chttp2_transport::grpc_chttp2_transport(
538
661
  if (grpc_core::test_only_init_callback != nullptr) {
539
662
  grpc_core::test_only_init_callback();
540
663
  }
664
+
665
+ #ifdef GRPC_POSIX_SOCKET_TCP
666
+ closure_barrier_may_cover_write =
667
+ grpc_event_engine_run_in_background() &&
668
+ grpc_core::IsScheduleCancellationOverWriteEnabled()
669
+ ? 0
670
+ : CLOSURE_BARRIER_MAY_COVER_WRITE;
671
+ #endif
541
672
  }
542
673
 
543
674
  static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
544
675
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
545
676
  t->destroying = 1;
546
677
  close_transport_locked(
547
- t, grpc_error_set_int(
548
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"),
549
- GRPC_ERROR_INT_OCCURRED_DURING_WRITE, t->write_state));
678
+ t, grpc_error_set_int(GRPC_ERROR_CREATE("Transport destroyed"),
679
+ grpc_core::StatusIntProperty::kOccurredDuringWrite,
680
+ t->write_state));
550
681
  t->memory_owner.Reset();
551
682
  // Must be the last line.
552
683
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "destroy");
@@ -555,45 +686,66 @@ static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
555
686
  static void destroy_transport(grpc_transport* gt) {
556
687
  grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
557
688
  t->combiner->Run(GRPC_CLOSURE_CREATE(destroy_transport_locked, t, nullptr),
558
- GRPC_ERROR_NONE);
689
+ absl::OkStatus());
559
690
  }
560
691
 
561
692
  static void close_transport_locked(grpc_chttp2_transport* t,
562
693
  grpc_error_handle error) {
563
- end_all_the_calls(t, GRPC_ERROR_REF(error));
564
- cancel_pings(t, GRPC_ERROR_REF(error));
565
- if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
694
+ end_all_the_calls(t, error);
695
+ cancel_pings(t, error);
696
+ if (t->closed_with_error.ok()) {
566
697
  if (!grpc_error_has_clear_grpc_status(error)) {
567
- error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
568
- GRPC_STATUS_UNAVAILABLE);
698
+ error =
699
+ grpc_error_set_int(error, grpc_core::StatusIntProperty::kRpcStatus,
700
+ GRPC_STATUS_UNAVAILABLE);
569
701
  }
570
702
  if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
571
- if (GRPC_ERROR_IS_NONE(t->close_transport_on_writes_finished)) {
703
+ if (t->close_transport_on_writes_finished.ok()) {
572
704
  t->close_transport_on_writes_finished =
573
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
574
- "Delayed close due to in-progress write");
705
+ GRPC_ERROR_CREATE("Delayed close due to in-progress write");
575
706
  }
576
707
  t->close_transport_on_writes_finished =
577
708
  grpc_error_add_child(t->close_transport_on_writes_finished, error);
578
709
  return;
579
710
  }
580
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
581
- t->closed_with_error = GRPC_ERROR_REF(error);
711
+ GPR_ASSERT(!error.ok());
712
+ t->closed_with_error = error;
582
713
  connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
583
714
  "close_transport");
584
- if (t->ping_state.is_delayed_ping_timer_set) {
585
- grpc_timer_cancel(&t->ping_state.delayed_ping_timer);
715
+ if (t->ping_state.delayed_ping_timer_handle.has_value()) {
716
+ if (t->event_engine->Cancel(*t->ping_state.delayed_ping_timer_handle)) {
717
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "retry_initiate_ping_locked");
718
+ t->ping_state.delayed_ping_timer_handle.reset();
719
+ }
586
720
  }
587
- if (t->have_next_bdp_ping_timer) {
588
- grpc_timer_cancel(&t->next_bdp_ping_timer);
721
+ if (t->next_bdp_ping_timer_handle.has_value()) {
722
+ if (t->event_engine->Cancel(*t->next_bdp_ping_timer_handle)) {
723
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
724
+ t->next_bdp_ping_timer_handle.reset();
725
+ }
589
726
  }
590
727
  switch (t->keepalive_state) {
591
728
  case GRPC_CHTTP2_KEEPALIVE_STATE_WAITING:
592
- grpc_timer_cancel(&t->keepalive_ping_timer);
729
+ if (t->keepalive_ping_timer_handle.has_value()) {
730
+ if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
731
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
732
+ t->keepalive_ping_timer_handle.reset();
733
+ }
734
+ }
593
735
  break;
594
736
  case GRPC_CHTTP2_KEEPALIVE_STATE_PINGING:
595
- grpc_timer_cancel(&t->keepalive_ping_timer);
596
- grpc_timer_cancel(&t->keepalive_watchdog_timer);
737
+ if (t->keepalive_ping_timer_handle.has_value()) {
738
+ if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
739
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
740
+ t->keepalive_ping_timer_handle.reset();
741
+ }
742
+ }
743
+ if (t->keepalive_watchdog_timer_handle.has_value()) {
744
+ if (t->event_engine->Cancel(*t->keepalive_watchdog_timer_handle)) {
745
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
746
+ t->keepalive_watchdog_timer_handle.reset();
747
+ }
748
+ }
597
749
  break;
598
750
  case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
599
751
  case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED:
@@ -607,19 +759,17 @@ static void close_transport_locked(grpc_chttp2_transport* t,
607
759
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
608
760
  }
609
761
  GPR_ASSERT(t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE);
610
- grpc_endpoint_shutdown(t->ep, GRPC_ERROR_REF(error));
762
+ grpc_endpoint_shutdown(t->ep, error);
611
763
  }
612
764
  if (t->notify_on_receive_settings != nullptr) {
613
765
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
614
- GRPC_ERROR_REF(error));
766
+ error);
615
767
  t->notify_on_receive_settings = nullptr;
616
768
  }
617
769
  if (t->notify_on_close != nullptr) {
618
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
619
- GRPC_ERROR_REF(error));
770
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close, error);
620
771
  t->notify_on_close = nullptr;
621
772
  }
622
- GRPC_ERROR_UNREF(error);
623
773
  }
624
774
 
625
775
  #ifndef NDEBUG
@@ -658,6 +808,10 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
658
808
  flow_control(&t->flow_control) {
659
809
  if (server_data) {
660
810
  id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
811
+ if (grpc_http_trace.enabled()) {
812
+ gpr_log(GPR_DEBUG, "HTTP:%p/%p creating accept stream %d [from %p]", t,
813
+ this, id, server_data);
814
+ }
661
815
  *t->accepting_stream = this;
662
816
  grpc_chttp2_stream_map_add(&t->stream_map, id, this);
663
817
  post_destructive_reclaimer(t);
@@ -684,13 +838,13 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
684
838
  GPR_ASSERT(grpc_chttp2_stream_map_find(&t->stream_map, id) == nullptr);
685
839
  }
686
840
 
687
- grpc_slice_buffer_destroy_internal(&frame_storage);
841
+ grpc_slice_buffer_destroy(&frame_storage);
688
842
 
689
843
  for (int i = 0; i < STREAM_LIST_COUNT; i++) {
690
844
  if (GPR_UNLIKELY(included.is_set(i))) {
691
- gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
692
- t->is_client ? "client" : "server", id, i);
693
- abort();
845
+ grpc_core::Crash(absl::StrFormat("%s stream %d still included in list %d",
846
+ t->is_client ? "client" : "server", id,
847
+ i));
694
848
  }
695
849
  }
696
850
 
@@ -699,11 +853,9 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
699
853
  GPR_ASSERT(recv_initial_metadata_ready == nullptr);
700
854
  GPR_ASSERT(recv_message_ready == nullptr);
701
855
  GPR_ASSERT(recv_trailing_metadata_finished == nullptr);
702
- grpc_slice_buffer_destroy_internal(&flow_controlled_buffer);
703
- GRPC_ERROR_UNREF(read_closed_error);
704
- GRPC_ERROR_UNREF(write_closed_error);
856
+ grpc_slice_buffer_destroy(&flow_controlled_buffer);
705
857
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream");
706
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, GRPC_ERROR_NONE);
858
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, absl::OkStatus());
707
859
  }
708
860
 
709
861
  static int init_stream(grpc_transport* gt, grpc_stream* gs,
@@ -727,7 +879,7 @@ static void destroy_stream(grpc_transport* gt, grpc_stream* gs,
727
879
  s->destroy_stream_arg = then_schedule_closure;
728
880
  t->combiner->Run(
729
881
  GRPC_CLOSURE_INIT(&s->destroy_stream, destroy_stream_locked, s, nullptr),
730
- GRPC_ERROR_NONE);
882
+ absl::OkStatus());
731
883
  }
732
884
 
733
885
  grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
@@ -764,7 +916,8 @@ static void set_write_state(grpc_chttp2_transport* t,
764
916
  grpc_chttp2_write_state st, const char* reason) {
765
917
  GRPC_CHTTP2_IF_TRACING(
766
918
  gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
767
- t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
919
+ t->is_client ? "CLIENT" : "SERVER",
920
+ std::string(t->peer_string.as_string_view()).c_str(),
768
921
  write_state_name(t->write_state), write_state_name(st), reason));
769
922
  t->write_state = st;
770
923
  // If the state is being reset back to idle, it means a write was just
@@ -775,9 +928,9 @@ static void set_write_state(grpc_chttp2_transport* t,
775
928
  // from peer while we had some pending writes)
776
929
  if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
777
930
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
778
- if (!GRPC_ERROR_IS_NONE(t->close_transport_on_writes_finished)) {
931
+ if (!t->close_transport_on_writes_finished.ok()) {
779
932
  grpc_error_handle err = t->close_transport_on_writes_finished;
780
- t->close_transport_on_writes_finished = GRPC_ERROR_NONE;
933
+ t->close_transport_on_writes_finished = absl::OkStatus();
781
934
  close_transport_locked(t, err);
782
935
  }
783
936
  }
@@ -809,7 +962,7 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
809
962
  t->combiner->FinallyRun(
810
963
  GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
811
964
  write_action_begin_locked, t, nullptr),
812
- GRPC_ERROR_NONE);
965
+ absl::OkStatus());
813
966
  break;
814
967
  case GRPC_CHTTP2_WRITE_STATE_WRITING:
815
968
  set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE,
@@ -822,8 +975,7 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
822
975
 
823
976
  void grpc_chttp2_mark_stream_writable(grpc_chttp2_transport* t,
824
977
  grpc_chttp2_stream* s) {
825
- if (GRPC_ERROR_IS_NONE(t->closed_with_error) &&
826
- grpc_chttp2_list_add_writable_stream(t, s)) {
978
+ if (t->closed_with_error.ok() && grpc_chttp2_list_add_writable_stream(t, s)) {
827
979
  GRPC_CHTTP2_STREAM_REF(s, "chttp2_writing:become");
828
980
  }
829
981
  }
@@ -841,7 +993,7 @@ static void write_action_begin_locked(void* gt,
841
993
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
842
994
  GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
843
995
  grpc_chttp2_begin_write_result r;
844
- if (!GRPC_ERROR_IS_NONE(t->closed_with_error)) {
996
+ if (!t->closed_with_error.ok()) {
845
997
  r.writing = false;
846
998
  } else {
847
999
  r = grpc_chttp2_begin_write(t);
@@ -851,7 +1003,7 @@ static void write_action_begin_locked(void* gt,
851
1003
  r.partial ? GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE
852
1004
  : GRPC_CHTTP2_WRITE_STATE_WRITING,
853
1005
  begin_writing_desc(r.partial));
854
- write_action(t, GRPC_ERROR_NONE);
1006
+ write_action(t, absl::OkStatus());
855
1007
  if (t->reading_paused_on_pending_induced_frames) {
856
1008
  GPR_ASSERT(t->num_pending_induced_frames == 0);
857
1009
  // We had paused reading, because we had many induced frames (SETTINGS
@@ -874,17 +1026,28 @@ static void write_action_begin_locked(void* gt,
874
1026
  static void write_action(void* gt, grpc_error_handle /*error*/) {
875
1027
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
876
1028
  void* cl = t->cl;
877
- t->cl = nullptr;
878
- // If the peer_state_based_framing experiment is set to true,
879
- // choose max_frame_size as 2 * max http2 frame size of peer. If peer is under
880
- // high memory pressure, then it would advertise a smaller max http2 frame
881
- // size. With this logic, the sender would automatically reduce the sending
882
- // frame size as well.
1029
+ if (!t->cl->empty()) {
1030
+ // Transfer the ownership of the context list to the endpoint and create and
1031
+ // associate a new context list with the transport.
1032
+ // The old context list is stored in the cl local variable which is passed
1033
+ // to the endpoint. Its upto the endpoint to manage its lifetime.
1034
+ t->cl = new grpc_core::ContextList();
1035
+ } else {
1036
+ // t->cl is Empty. There is nothing to trace in this endpoint_write. set cl
1037
+ // to nullptr.
1038
+ cl = nullptr;
1039
+ }
1040
+ // Choose max_frame_size as the prefered rx crypto frame size indicated by the
1041
+ // peer.
883
1042
  int max_frame_size =
884
- grpc_core::IsPeerStateBasedFramingEnabled()
885
- ? 2 * t->settings[GRPC_PEER_SETTINGS]
886
- [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]
887
- : INT_MAX;
1043
+ t->settings
1044
+ [GRPC_PEER_SETTINGS]
1045
+ [GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE];
1046
+ // Note: max frame size is 0 if the remote peer does not support adjusting the
1047
+ // sending frame size.
1048
+ if (max_frame_size == 0) {
1049
+ max_frame_size = INT_MAX;
1050
+ }
888
1051
  grpc_endpoint_write(
889
1052
  t->ep, &t->outbuf,
890
1053
  GRPC_CLOSURE_INIT(&t->write_action_end_locked, write_action_end, t,
@@ -896,7 +1059,7 @@ static void write_action_end(void* tp, grpc_error_handle error) {
896
1059
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
897
1060
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
898
1061
  write_action_end_locked, t, nullptr),
899
- GRPC_ERROR_REF(error));
1062
+ error);
900
1063
  }
901
1064
 
902
1065
  // Callback from the grpc_endpoint after bytes have been written by calling
@@ -905,8 +1068,8 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
905
1068
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
906
1069
 
907
1070
  bool closed = false;
908
- if (!GRPC_ERROR_IS_NONE(error)) {
909
- close_transport_locked(t, GRPC_ERROR_REF(error));
1071
+ if (!error.ok()) {
1072
+ close_transport_locked(t, error);
910
1073
  closed = true;
911
1074
  }
912
1075
 
@@ -914,8 +1077,7 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
914
1077
  t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SENT;
915
1078
  closed = true;
916
1079
  if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
917
- close_transport_locked(
918
- t, GRPC_ERROR_CREATE_FROM_STATIC_STRING("goaway sent"));
1080
+ close_transport_locked(t, GRPC_ERROR_CREATE("goaway sent"));
919
1081
  }
920
1082
  }
921
1083
 
@@ -939,11 +1101,11 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
939
1101
  t->combiner->FinallyRun(
940
1102
  GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
941
1103
  write_action_begin_locked, t, nullptr),
942
- GRPC_ERROR_NONE);
1104
+ absl::OkStatus());
943
1105
  break;
944
1106
  }
945
1107
 
946
- grpc_chttp2_end_write(t, GRPC_ERROR_REF(error));
1108
+ grpc_chttp2_end_write(t, error);
947
1109
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing");
948
1110
  }
949
1111
 
@@ -972,26 +1134,27 @@ static void cancel_unstarted_streams(grpc_chttp2_transport* t,
972
1134
  s->trailing_metadata_buffer.Set(
973
1135
  grpc_core::GrpcStreamNetworkState(),
974
1136
  grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
975
- grpc_chttp2_cancel_stream(t, s, GRPC_ERROR_REF(error));
1137
+ grpc_chttp2_cancel_stream(t, s, error);
976
1138
  }
977
- GRPC_ERROR_UNREF(error);
978
1139
  }
979
1140
 
980
1141
  void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
981
1142
  uint32_t goaway_error,
982
1143
  uint32_t last_stream_id,
983
1144
  absl::string_view goaway_text) {
984
- // Discard the error from a previous goaway frame (if any)
985
- if (!GRPC_ERROR_IS_NONE(t->goaway_error)) {
986
- GRPC_ERROR_UNREF(t->goaway_error);
987
- }
988
1145
  t->goaway_error = grpc_error_set_str(
989
1146
  grpc_error_set_int(
990
1147
  grpc_error_set_int(
991
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("GOAWAY received"),
992
- GRPC_ERROR_INT_HTTP2_ERROR, static_cast<intptr_t>(goaway_error)),
993
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
994
- GRPC_ERROR_STR_RAW_BYTES, goaway_text);
1148
+ grpc_core::StatusCreate(
1149
+ absl::StatusCode::kUnavailable,
1150
+ absl::StrFormat(
1151
+ "GOAWAY received; Error code: %u; Debug Text: %s",
1152
+ goaway_error, goaway_text),
1153
+ DEBUG_LOCATION, {}),
1154
+ grpc_core::StatusIntProperty::kHttp2Error,
1155
+ static_cast<intptr_t>(goaway_error)),
1156
+ grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE),
1157
+ grpc_core::StatusStrProperty::kRawBytes, goaway_text);
995
1158
 
996
1159
  GRPC_CHTTP2_IF_TRACING(
997
1160
  gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
@@ -999,11 +1162,12 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
999
1162
  // We want to log this irrespective of whether http tracing is enabled if we
1000
1163
  // received a GOAWAY with a non NO_ERROR code.
1001
1164
  if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1002
- gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
1003
- goaway_error, grpc_error_std_string(t->goaway_error).c_str());
1165
+ gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s",
1166
+ std::string(t->peer_string.as_string_view()).c_str(), goaway_error,
1167
+ grpc_core::StatusToString(t->goaway_error).c_str());
1004
1168
  }
1005
1169
  if (t->is_client) {
1006
- cancel_unstarted_streams(t, GRPC_ERROR_REF(t->goaway_error));
1170
+ cancel_unstarted_streams(t, t->goaway_error);
1007
1171
  // Cancel all unseen streams
1008
1172
  grpc_chttp2_stream_map_for_each(
1009
1173
  &t->stream_map,
@@ -1014,8 +1178,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1014
1178
  s->trailing_metadata_buffer.Set(
1015
1179
  grpc_core::GrpcStreamNetworkState(),
1016
1180
  grpc_core::GrpcStreamNetworkState::kNotSeenByServer);
1017
- grpc_chttp2_cancel_stream(s->t, s,
1018
- GRPC_ERROR_REF(s->t->goaway_error));
1181
+ grpc_chttp2_cancel_stream(s->t, s, s->t->goaway_error);
1019
1182
  }
1020
1183
  },
1021
1184
  &last_stream_id);
@@ -1032,10 +1195,11 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1032
1195
  "%s: Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
1033
1196
  "data equal to \"too_many_pings\". Current keepalive time (before "
1034
1197
  "throttling): %s",
1035
- t->peer_string.c_str(), t->keepalive_time.ToString().c_str());
1198
+ std::string(t->peer_string.as_string_view()).c_str(),
1199
+ t->keepalive_time.ToString().c_str());
1036
1200
  constexpr int max_keepalive_time_millis =
1037
1201
  INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
1038
- int throttled_keepalive_time =
1202
+ int64_t throttled_keepalive_time =
1039
1203
  t->keepalive_time.millis() > max_keepalive_time_millis
1040
1204
  ? INT_MAX
1041
1205
  : t->keepalive_time.millis() * KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
@@ -1054,8 +1218,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1054
1218
  grpc_chttp2_stream* s;
1055
1219
  // maybe cancel out streams that haven't yet started if we have received a
1056
1220
  // GOAWAY
1057
- if (!GRPC_ERROR_IS_NONE(t->goaway_error)) {
1058
- cancel_unstarted_streams(t, GRPC_ERROR_REF(t->goaway_error));
1221
+ if (!t->goaway_error.ok()) {
1222
+ cancel_unstarted_streams(t, t->goaway_error);
1059
1223
  return;
1060
1224
  }
1061
1225
  // start streams where we have free grpc_chttp2_stream ids and free
@@ -1095,21 +1259,13 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1095
1259
  grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
1096
1260
  grpc_chttp2_cancel_stream(
1097
1261
  t, s,
1098
- grpc_error_set_int(
1099
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Stream IDs exhausted"),
1100
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1262
+ grpc_error_set_int(GRPC_ERROR_CREATE("Stream IDs exhausted"),
1263
+ grpc_core::StatusIntProperty::kRpcStatus,
1264
+ GRPC_STATUS_UNAVAILABLE));
1101
1265
  }
1102
1266
  }
1103
1267
  }
1104
1268
 
1105
- // Flag that this closure barrier may be covering a write in a pollset, and so
1106
- // we should not complete this closure until we can prove that the write got
1107
- // scheduled
1108
- #define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
1109
- // First bit of the reference count, stored in the high order bits (with the low
1110
- // bits being used for flags defined above)
1111
- #define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
1112
-
1113
1269
  static grpc_closure* add_closure_barrier(grpc_closure* closure) {
1114
1270
  closure->next_data.scratch += CLOSURE_BARRIER_FIRST_REF_BIT;
1115
1271
  return closure;
@@ -1124,18 +1280,18 @@ static void null_then_sched_closure(grpc_closure** closure) {
1124
1280
  // completion, have the application see it, and make a new operation on the
1125
1281
  // call which recycles the batch BEFORE the call to start_batch completes,
1126
1282
  // forcing a race.
1127
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, c, GRPC_ERROR_NONE);
1283
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, c, absl::OkStatus());
1128
1284
  }
1129
1285
 
1130
1286
  void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1131
- grpc_chttp2_stream* /*s*/,
1287
+ grpc_chttp2_stream* s,
1132
1288
  grpc_closure** pclosure,
1133
1289
  grpc_error_handle error,
1134
- const char* desc) {
1290
+ const char* desc,
1291
+ grpc_core::DebugLocation whence) {
1135
1292
  grpc_closure* closure = *pclosure;
1136
1293
  *pclosure = nullptr;
1137
1294
  if (closure == nullptr) {
1138
- GRPC_ERROR_UNREF(error);
1139
1295
  return;
1140
1296
  }
1141
1297
  closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
@@ -1143,26 +1299,35 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1143
1299
  gpr_log(
1144
1300
  GPR_INFO,
1145
1301
  "complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
1146
- "write_state=%s",
1302
+ "write_state=%s whence=%s:%d",
1147
1303
  t, closure,
1148
1304
  static_cast<int>(closure->next_data.scratch /
1149
1305
  CLOSURE_BARRIER_FIRST_REF_BIT),
1150
1306
  static_cast<int>(closure->next_data.scratch %
1151
1307
  CLOSURE_BARRIER_FIRST_REF_BIT),
1152
- desc, grpc_error_std_string(error).c_str(),
1153
- write_state_name(t->write_state));
1308
+ desc, grpc_core::StatusToString(error).c_str(),
1309
+ write_state_name(t->write_state), whence.file(), whence.line());
1310
+ }
1311
+
1312
+ auto* tracer = CallTracerIfEnabled(s);
1313
+ if (tracer != nullptr) {
1314
+ tracer->RecordAnnotation(
1315
+ absl::StrFormat("on_complete: s=%p %p desc=%s err=%s", s, closure, desc,
1316
+ grpc_core::StatusToString(error).c_str()));
1154
1317
  }
1155
- if (!GRPC_ERROR_IS_NONE(error)) {
1318
+
1319
+ if (!error.ok()) {
1156
1320
  grpc_error_handle cl_err =
1157
1321
  grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
1158
- if (GRPC_ERROR_IS_NONE(cl_err)) {
1159
- cl_err = GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
1322
+ if (cl_err.ok()) {
1323
+ cl_err = GRPC_ERROR_CREATE(absl::StrCat(
1160
1324
  "Error in HTTP transport completing operation: ", desc,
1161
1325
  " write_state=", write_state_name(t->write_state), " refs=",
1162
1326
  closure->next_data.scratch / CLOSURE_BARRIER_FIRST_REF_BIT, " flags=",
1163
1327
  closure->next_data.scratch % CLOSURE_BARRIER_FIRST_REF_BIT));
1164
- cl_err = grpc_error_set_str(cl_err, GRPC_ERROR_STR_TARGET_ADDRESS,
1165
- t->peer_string);
1328
+ cl_err = grpc_error_set_str(cl_err,
1329
+ grpc_core::StatusStrProperty::kTargetAddress,
1330
+ std::string(t->peer_string.as_string_view()));
1166
1331
  }
1167
1332
  cl_err = grpc_error_add_child(cl_err, error);
1168
1333
  closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(cl_err);
@@ -1189,6 +1354,7 @@ static bool contains_non_ok_status(grpc_metadata_batch* batch) {
1189
1354
 
1190
1355
  static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
1191
1356
  bool is_client, bool is_initial) {
1357
+ gpr_log(GPR_INFO, "--metadata--");
1192
1358
  const std::string prefix = absl::StrCat(
1193
1359
  "HTTP:", id, is_initial ? ":HDR" : ":TRL", is_client ? ":CLI:" : ":SVR:");
1194
1360
  md_batch->Log([&prefix](absl::string_view key, absl::string_view value) {
@@ -1210,7 +1376,7 @@ static void perform_stream_op_locked(void* stream_op,
1210
1376
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1211
1377
  gpr_log(GPR_INFO,
1212
1378
  "perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s,
1213
- op, grpc_transport_stream_op_batch_string(op).c_str(),
1379
+ op, grpc_transport_stream_op_batch_string(op, false).c_str(),
1214
1380
  op->on_complete);
1215
1381
  if (op->send_initial_metadata) {
1216
1382
  log_metadata(op_payload->send_initial_metadata.send_initial_metadata,
@@ -1222,6 +1388,14 @@ static void perform_stream_op_locked(void* stream_op,
1222
1388
  }
1223
1389
  }
1224
1390
 
1391
+ auto* tracer = CallTracerIfEnabled(s);
1392
+ if (tracer != nullptr) {
1393
+ tracer->RecordAnnotation(absl::StrFormat(
1394
+ "perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s, op,
1395
+ grpc_transport_stream_op_batch_string(op, true).c_str(),
1396
+ op->on_complete));
1397
+ }
1398
+
1225
1399
  grpc_closure* on_complete = op->on_complete;
1226
1400
  // on_complete will be null if and only if there are no send ops in the batch.
1227
1401
  if (on_complete != nullptr) {
@@ -1240,7 +1414,7 @@ static void perform_stream_op_locked(void* stream_op,
1240
1414
  t->channelz_socket->RecordStreamStartedFromLocal();
1241
1415
  }
1242
1416
  GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
1243
- on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1417
+ on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
1244
1418
 
1245
1419
  s->send_initial_metadata_finished = add_closure_barrier(on_complete);
1246
1420
  s->send_initial_metadata =
@@ -1256,7 +1430,7 @@ static void perform_stream_op_locked(void* stream_op,
1256
1430
  }
1257
1431
  if (!s->write_closed) {
1258
1432
  if (t->is_client) {
1259
- if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
1433
+ if (t->closed_with_error.ok()) {
1260
1434
  GPR_ASSERT(s->id == 0);
1261
1435
  grpc_chttp2_list_add_waiting_for_concurrency(t, s);
1262
1436
  maybe_start_some_streams(t);
@@ -1267,9 +1441,10 @@ static void perform_stream_op_locked(void* stream_op,
1267
1441
  grpc_chttp2_cancel_stream(
1268
1442
  t, s,
1269
1443
  grpc_error_set_int(
1270
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1271
- "Transport closed", &t->closed_with_error, 1),
1272
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1444
+ GRPC_ERROR_CREATE_REFERENCING("Transport closed",
1445
+ &t->closed_with_error, 1),
1446
+ grpc_core::StatusIntProperty::kRpcStatus,
1447
+ GRPC_STATUS_UNAVAILABLE));
1273
1448
  }
1274
1449
  } else {
1275
1450
  GPR_ASSERT(s->id != 0);
@@ -1284,22 +1459,18 @@ static void perform_stream_op_locked(void* stream_op,
1284
1459
  s->send_initial_metadata = nullptr;
1285
1460
  grpc_chttp2_complete_closure_step(
1286
1461
  t, s, &s->send_initial_metadata_finished,
1287
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1462
+ GRPC_ERROR_CREATE_REFERENCING(
1288
1463
  "Attempt to send initial metadata after stream was closed",
1289
1464
  &s->write_closed_error, 1),
1290
1465
  "send_initial_metadata_finished");
1291
1466
  }
1292
- if (op_payload->send_initial_metadata.peer_string != nullptr) {
1293
- gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
1294
- (gpr_atm)t->peer_string.c_str());
1295
- }
1296
1467
  }
1297
1468
 
1298
1469
  if (op->send_message) {
1299
1470
  t->num_messages_in_next_write++;
1300
- GRPC_STATS_INC_HTTP2_SEND_MESSAGE_SIZE(
1471
+ grpc_core::global_stats().IncrementHttp2SendMessageSize(
1301
1472
  op->payload->send_message.send_message->Length());
1302
- on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1473
+ on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
1303
1474
  s->send_message_finished = add_closure_barrier(op->on_complete);
1304
1475
  const uint32_t flags = op_payload->send_message.flags;
1305
1476
  if (s->write_closed) {
@@ -1308,7 +1479,7 @@ static void perform_stream_op_locked(void* stream_op,
1308
1479
  // started. The surface layer will notice that the stream has been closed
1309
1480
  // for writes and fail the send message op.
1310
1481
  grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
1311
- GRPC_ERROR_NONE,
1482
+ absl::OkStatus(),
1312
1483
  "fetching_send_message_finished");
1313
1484
  } else {
1314
1485
  uint8_t* frame_hdr = grpc_slice_buffer_tiny_add(
@@ -1337,13 +1508,13 @@ static void perform_stream_op_locked(void* stream_op,
1337
1508
  slices + op_payload->send_message.send_message->Count();
1338
1509
  for (grpc_slice* slice = slices; slice != end; slice++) {
1339
1510
  grpc_slice_buffer_add(&s->flow_controlled_buffer,
1340
- grpc_slice_ref_internal(*slice));
1511
+ grpc_core::CSliceRef(*slice));
1341
1512
  }
1342
1513
 
1343
1514
  int64_t notify_offset = s->next_message_end_offset;
1344
1515
  if (notify_offset <= s->flow_controlled_bytes_written) {
1345
1516
  grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
1346
- GRPC_ERROR_NONE,
1517
+ absl::OkStatus(),
1347
1518
  "fetching_send_message_finished");
1348
1519
  } else {
1349
1520
  grpc_chttp2_write_cb* cb = t->write_cb_pool;
@@ -1373,7 +1544,7 @@ static void perform_stream_op_locked(void* stream_op,
1373
1544
 
1374
1545
  if (op->send_trailing_metadata) {
1375
1546
  GPR_ASSERT(s->send_trailing_metadata_finished == nullptr);
1376
- on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1547
+ on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
1377
1548
  s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
1378
1549
  s->send_trailing_metadata =
1379
1550
  op_payload->send_trailing_metadata.send_trailing_metadata;
@@ -1388,10 +1559,9 @@ static void perform_stream_op_locked(void* stream_op,
1388
1559
  grpc_chttp2_complete_closure_step(
1389
1560
  t, s, &s->send_trailing_metadata_finished,
1390
1561
  op->payload->send_trailing_metadata.send_trailing_metadata->empty()
1391
- ? GRPC_ERROR_NONE
1392
- : GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1393
- "Attempt to send trailing metadata after "
1394
- "stream was closed"),
1562
+ ? absl::OkStatus()
1563
+ : GRPC_ERROR_CREATE("Attempt to send trailing metadata after "
1564
+ "stream was closed"),
1395
1565
  "send_trailing_metadata_finished");
1396
1566
  } else if (s->id != 0) {
1397
1567
  // TODO(ctiller): check if there's flow control for any outstanding
@@ -1410,9 +1580,8 @@ static void perform_stream_op_locked(void* stream_op,
1410
1580
  op_payload->recv_initial_metadata.recv_initial_metadata;
1411
1581
  s->trailing_metadata_available =
1412
1582
  op_payload->recv_initial_metadata.trailing_metadata_available;
1413
- if (op_payload->recv_initial_metadata.peer_string != nullptr) {
1414
- gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
1415
- (gpr_atm)t->peer_string.c_str());
1583
+ if (s->parsed_trailers_only && s->trailing_metadata_available != nullptr) {
1584
+ *s->trailing_metadata_available = true;
1416
1585
  }
1417
1586
  grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
1418
1587
  }
@@ -1441,7 +1610,7 @@ static void perform_stream_op_locked(void* stream_op,
1441
1610
  }
1442
1611
 
1443
1612
  if (on_complete != nullptr) {
1444
- grpc_chttp2_complete_closure_step(t, s, &on_complete, GRPC_ERROR_NONE,
1613
+ grpc_chttp2_complete_closure_step(t, s, &on_complete, absl::OkStatus(),
1445
1614
  "op->on_complete");
1446
1615
  }
1447
1616
 
@@ -1468,56 +1637,53 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1468
1637
 
1469
1638
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1470
1639
  gpr_log(GPR_INFO, "perform_stream_op[s=%p; op=%p]: %s", s, op,
1471
- grpc_transport_stream_op_batch_string(op).c_str());
1640
+ grpc_transport_stream_op_batch_string(op, false).c_str());
1472
1641
  }
1473
1642
 
1474
1643
  GRPC_CHTTP2_STREAM_REF(s, "perform_stream_op");
1475
1644
  op->handler_private.extra_arg = gs;
1476
1645
  t->combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
1477
1646
  perform_stream_op_locked, op, nullptr),
1478
- GRPC_ERROR_NONE);
1647
+ absl::OkStatus());
1479
1648
  }
1480
1649
 
1481
1650
  static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
1482
1651
  // callback remaining pings: they're not allowed to call into the transport,
1483
1652
  // and maybe they hold resources that need to be freed
1484
1653
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1485
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
1654
+ GPR_ASSERT(!error.ok());
1486
1655
  for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
1487
- grpc_closure_list_fail_all(&pq->lists[j], GRPC_ERROR_REF(error));
1656
+ grpc_closure_list_fail_all(&pq->lists[j], error);
1488
1657
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &pq->lists[j]);
1489
1658
  }
1490
- GRPC_ERROR_UNREF(error);
1491
1659
  }
1492
1660
 
1493
1661
  static void send_ping_locked(grpc_chttp2_transport* t,
1494
1662
  grpc_closure* on_initiate, grpc_closure* on_ack) {
1495
- if (!GRPC_ERROR_IS_NONE(t->closed_with_error)) {
1496
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_initiate,
1497
- GRPC_ERROR_REF(t->closed_with_error));
1498
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_ack,
1499
- GRPC_ERROR_REF(t->closed_with_error));
1663
+ if (!t->closed_with_error.ok()) {
1664
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_initiate, t->closed_with_error);
1665
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_ack, t->closed_with_error);
1500
1666
  return;
1501
1667
  }
1502
1668
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1503
1669
  grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_INITIATE], on_initiate,
1504
- GRPC_ERROR_NONE);
1670
+ absl::OkStatus());
1505
1671
  grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_NEXT], on_ack,
1506
- GRPC_ERROR_NONE);
1672
+ absl::OkStatus());
1507
1673
  }
1508
1674
 
1509
1675
  // Specialized form of send_ping_locked for keepalive ping. If there is already
1510
1676
  // a ping in progress, the keepalive ping would piggyback onto that ping,
1511
1677
  // instead of waiting for that ping to complete and then starting a new ping.
1512
1678
  static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1513
- if (!GRPC_ERROR_IS_NONE(t->closed_with_error)) {
1679
+ if (!t->closed_with_error.ok()) {
1514
1680
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1515
1681
  start_keepalive_ping_locked, t, nullptr),
1516
- GRPC_ERROR_REF(t->closed_with_error));
1682
+ t->closed_with_error);
1517
1683
  t->combiner->Run(
1518
1684
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
1519
1685
  finish_keepalive_ping_locked, t, nullptr),
1520
- GRPC_ERROR_REF(t->closed_with_error));
1686
+ t->closed_with_error);
1521
1687
  return;
1522
1688
  }
1523
1689
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
@@ -1525,39 +1691,39 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1525
1691
  // There is a ping in flight. Add yourself to the inflight closure list.
1526
1692
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1527
1693
  start_keepalive_ping_locked, t, nullptr),
1528
- GRPC_ERROR_REF(t->closed_with_error));
1694
+ t->closed_with_error);
1529
1695
  grpc_closure_list_append(
1530
1696
  &pq->lists[GRPC_CHTTP2_PCL_INFLIGHT],
1531
1697
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
1532
1698
  finish_keepalive_ping, t, grpc_schedule_on_exec_ctx),
1533
- GRPC_ERROR_NONE);
1699
+ absl::OkStatus());
1534
1700
  return;
1535
1701
  }
1536
1702
  grpc_closure_list_append(
1537
1703
  &pq->lists[GRPC_CHTTP2_PCL_INITIATE],
1538
1704
  GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked, start_keepalive_ping,
1539
1705
  t, grpc_schedule_on_exec_ctx),
1540
- GRPC_ERROR_NONE);
1706
+ absl::OkStatus());
1541
1707
  grpc_closure_list_append(
1542
1708
  &pq->lists[GRPC_CHTTP2_PCL_NEXT],
1543
1709
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked, finish_keepalive_ping,
1544
1710
  t, grpc_schedule_on_exec_ctx),
1545
- GRPC_ERROR_NONE);
1711
+ absl::OkStatus());
1546
1712
  }
1547
1713
 
1548
- void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
1549
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1714
+ void grpc_chttp2_retry_initiate_ping(grpc_chttp2_transport* t) {
1550
1715
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
1551
1716
  retry_initiate_ping_locked, t, nullptr),
1552
- GRPC_ERROR_REF(error));
1717
+ absl::OkStatus());
1553
1718
  }
1554
1719
 
1555
- static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
1720
+ static void retry_initiate_ping_locked(void* tp,
1721
+ GRPC_UNUSED grpc_error_handle error) {
1722
+ GPR_DEBUG_ASSERT(error.ok());
1556
1723
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1557
- t->ping_state.is_delayed_ping_timer_set = false;
1558
- if (GRPC_ERROR_IS_NONE(error)) {
1559
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING);
1560
- }
1724
+ GPR_ASSERT(t->ping_state.delayed_ping_timer_handle.has_value());
1725
+ t->ping_state.delayed_ping_timer_handle.reset();
1726
+ grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING);
1561
1727
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "retry_initiate_ping_locked");
1562
1728
  }
1563
1729
 
@@ -1565,7 +1731,7 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1565
1731
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1566
1732
  if (pq->inflight_id != id) {
1567
1733
  gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
1568
- t->peer_string.c_str(), id);
1734
+ std::string(t->peer_string.as_string_view()).c_str(), id);
1569
1735
  return;
1570
1736
  }
1571
1737
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
@@ -1580,7 +1746,7 @@ namespace {
1580
1746
  // Fire and forget (deletes itself on completion). Does a graceful shutdown by
1581
1747
  // sending a GOAWAY frame with the last stream id set to 2^31-1, sending a ping
1582
1748
  // and waiting for an ack (effective waiting for an RTT) and then sending a
1583
- // final GOAWAY freame with an updated last stream identifier. This helps ensure
1749
+ // final GOAWAY frame with an updated last stream identifier. This helps ensure
1584
1750
  // that a connection can be cleanly shut down without losing requests.
1585
1751
  // In the event, that the client does not respond to the ping for some reason,
1586
1752
  // we add a 20 second deadline, after which we send the second goaway.
@@ -1593,6 +1759,8 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1593
1759
  }
1594
1760
 
1595
1761
  private:
1762
+ using TaskHandle = ::grpc_event_engine::experimental::EventEngine::TaskHandle;
1763
+
1596
1764
  explicit GracefulGoaway(grpc_chttp2_transport* t) : t_(t) {
1597
1765
  t->sent_goaway_state = GRPC_CHTTP2_GRACEFUL_GOAWAY;
1598
1766
  GRPC_CHTTP2_REF_TRANSPORT(t_, "graceful goaway");
@@ -1600,10 +1768,17 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1600
1768
  send_ping_locked(
1601
1769
  t, nullptr, GRPC_CLOSURE_INIT(&on_ping_ack_, OnPingAck, this, nullptr));
1602
1770
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1603
- Ref().release(); // Ref for the timer
1604
- grpc_timer_init(
1605
- &timer_, grpc_core::Timestamp::Now() + grpc_core::Duration::Seconds(20),
1606
- GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr));
1771
+ timer_handle_ = t_->event_engine->RunAfter(
1772
+ grpc_core::Duration::Seconds(20),
1773
+ [self = Ref(DEBUG_LOCATION, "GoawayTimer")]() mutable {
1774
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1775
+ grpc_core::ExecCtx exec_ctx;
1776
+ // The ref will be unreffed in the combiner.
1777
+ auto* ptr = self.release();
1778
+ ptr->t_->combiner->Run(
1779
+ GRPC_CLOSURE_INIT(&ptr->on_timer_, OnTimerLocked, ptr, nullptr),
1780
+ absl::OkStatus());
1781
+ });
1607
1782
  }
1608
1783
 
1609
1784
  void MaybeSendFinalGoawayLocked() {
@@ -1611,12 +1786,13 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1611
1786
  // We already sent the final GOAWAY.
1612
1787
  return;
1613
1788
  }
1614
- if (t_->destroying || !GRPC_ERROR_IS_NONE(t_->closed_with_error)) {
1615
- GRPC_CHTTP2_IF_TRACING(gpr_log(
1616
- GPR_INFO,
1617
- "transport:%p %s peer:%s Transport already shutting down. "
1618
- "Graceful GOAWAY abandoned.",
1619
- t_, t_->is_client ? "CLIENT" : "SERVER", t_->peer_string.c_str()));
1789
+ if (t_->destroying || !t_->closed_with_error.ok()) {
1790
+ GRPC_CHTTP2_IF_TRACING(
1791
+ gpr_log(GPR_INFO,
1792
+ "transport:%p %s peer:%s Transport already shutting down. "
1793
+ "Graceful GOAWAY abandoned.",
1794
+ t_, t_->is_client ? "CLIENT" : "SERVER",
1795
+ std::string(t_->peer_string.as_string_view()).c_str()));
1620
1796
  return;
1621
1797
  }
1622
1798
  // Ping completed. Send final goaway.
@@ -1625,7 +1801,8 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1625
1801
  "transport:%p %s peer:%s Graceful shutdown: Ping received. "
1626
1802
  "Sending final GOAWAY with stream_id:%d",
1627
1803
  t_, t_->is_client ? "CLIENT" : "SERVER",
1628
- t_->peer_string.c_str(), t_->last_new_stream_id));
1804
+ std::string(t_->peer_string.as_string_view()).c_str(),
1805
+ t_->last_new_stream_id));
1629
1806
  t_->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1630
1807
  grpc_chttp2_goaway_append(t_->last_new_stream_id, 0, grpc_empty_slice(),
1631
1808
  &t_->qbuf);
@@ -1636,36 +1813,30 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1636
1813
  auto* self = static_cast<GracefulGoaway*>(arg);
1637
1814
  self->t_->combiner->Run(
1638
1815
  GRPC_CLOSURE_INIT(&self->on_ping_ack_, OnPingAckLocked, self, nullptr),
1639
- GRPC_ERROR_NONE);
1816
+ absl::OkStatus());
1640
1817
  }
1641
1818
 
1642
1819
  static void OnPingAckLocked(void* arg, grpc_error_handle /* error */) {
1643
1820
  auto* self = static_cast<GracefulGoaway*>(arg);
1644
- grpc_timer_cancel(&self->timer_);
1821
+ if (self->timer_handle_ != TaskHandle::kInvalid) {
1822
+ self->t_->event_engine->Cancel(
1823
+ std::exchange(self->timer_handle_, TaskHandle::kInvalid));
1824
+ }
1645
1825
  self->MaybeSendFinalGoawayLocked();
1646
1826
  self->Unref();
1647
1827
  }
1648
1828
 
1649
- static void OnTimer(void* arg, grpc_error_handle error) {
1650
- auto* self = static_cast<GracefulGoaway*>(arg);
1651
- if (!GRPC_ERROR_IS_NONE(error)) {
1652
- self->Unref();
1653
- return;
1654
- }
1655
- self->t_->combiner->Run(
1656
- GRPC_CLOSURE_INIT(&self->on_timer_, OnTimerLocked, self, nullptr),
1657
- GRPC_ERROR_NONE);
1658
- }
1659
-
1660
1829
  static void OnTimerLocked(void* arg, grpc_error_handle /* error */) {
1661
1830
  auto* self = static_cast<GracefulGoaway*>(arg);
1831
+ // Clearing the handle since the timer has fired and the handle is invalid.
1832
+ self->timer_handle_ = TaskHandle::kInvalid;
1662
1833
  self->MaybeSendFinalGoawayLocked();
1663
1834
  self->Unref();
1664
1835
  }
1665
1836
 
1666
1837
  grpc_chttp2_transport* t_;
1667
1838
  grpc_closure on_ping_ack_;
1668
- grpc_timer timer_;
1839
+ TaskHandle timer_handle_ = TaskHandle::kInvalid;
1669
1840
  grpc_closure on_timer_;
1670
1841
  };
1671
1842
 
@@ -1688,8 +1859,9 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1688
1859
  } else if (t->sent_goaway_state == GRPC_CHTTP2_NO_GOAWAY_SEND ||
1689
1860
  t->sent_goaway_state == GRPC_CHTTP2_GRACEFUL_GOAWAY) {
1690
1861
  // We want to log this irrespective of whether http tracing is enabled
1691
- gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1692
- grpc_error_std_string(error).c_str());
1862
+ gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s",
1863
+ std::string(t->peer_string.as_string_view()).c_str(),
1864
+ grpc_core::StatusToString(error).c_str());
1693
1865
  t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1694
1866
  grpc_chttp2_goaway_append(
1695
1867
  t->last_new_stream_id, static_cast<uint32_t>(http_error),
@@ -1698,22 +1870,21 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1698
1870
  // Final GOAWAY has already been sent.
1699
1871
  }
1700
1872
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1701
- GRPC_ERROR_UNREF(error);
1702
1873
  }
1703
1874
 
1704
1875
  void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1705
1876
  if (++t->ping_recv_state.ping_strikes > t->ping_policy.max_ping_strikes &&
1706
1877
  t->ping_policy.max_ping_strikes != 0) {
1707
1878
  send_goaway(t,
1708
- grpc_error_set_int(
1709
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
1710
- GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM),
1879
+ grpc_error_set_int(GRPC_ERROR_CREATE("too_many_pings"),
1880
+ grpc_core::StatusIntProperty::kHttp2Error,
1881
+ GRPC_HTTP2_ENHANCE_YOUR_CALM),
1711
1882
  /*immediate_disconnect_hint=*/true);
1712
1883
  // The transport will be closed after the write is done
1713
1884
  close_transport_locked(
1714
- t, grpc_error_set_int(
1715
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
1716
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1885
+ t, grpc_error_set_int(GRPC_ERROR_CREATE("Too many pings"),
1886
+ grpc_core::StatusIntProperty::kRpcStatus,
1887
+ GRPC_STATUS_UNAVAILABLE));
1717
1888
  }
1718
1889
  }
1719
1890
 
@@ -1732,7 +1903,7 @@ static void perform_transport_op_locked(void* stream_op,
1732
1903
  grpc_chttp2_transport* t =
1733
1904
  static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
1734
1905
 
1735
- if (!GRPC_ERROR_IS_NONE(op->goaway_error)) {
1906
+ if (!op->goaway_error.ok()) {
1736
1907
  send_goaway(t, op->goaway_error, /*immediate_disconnect_hint=*/false);
1737
1908
  }
1738
1909
 
@@ -1762,13 +1933,13 @@ static void perform_transport_op_locked(void* stream_op,
1762
1933
  t->state_tracker.RemoveWatcher(op->stop_connectivity_watch);
1763
1934
  }
1764
1935
 
1765
- if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
1766
- send_goaway(t, GRPC_ERROR_REF(op->disconnect_with_error),
1936
+ if (!op->disconnect_with_error.ok()) {
1937
+ send_goaway(t, op->disconnect_with_error,
1767
1938
  /*immediate_disconnect_hint=*/true);
1768
1939
  close_transport_locked(t, op->disconnect_with_error);
1769
1940
  }
1770
1941
 
1771
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE);
1942
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
1772
1943
 
1773
1944
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "transport_op");
1774
1945
  }
@@ -1783,7 +1954,7 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1783
1954
  GRPC_CHTTP2_REF_TRANSPORT(t, "transport_op");
1784
1955
  t->combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
1785
1956
  perform_transport_op_locked, op, nullptr),
1786
- GRPC_ERROR_NONE);
1957
+ absl::OkStatus());
1787
1958
  }
1788
1959
 
1789
1960
  //
@@ -1795,10 +1966,11 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t,
1795
1966
  if (s->recv_initial_metadata_ready != nullptr &&
1796
1967
  s->published_metadata[0] != GRPC_METADATA_NOT_PUBLISHED) {
1797
1968
  if (s->seen_error) {
1798
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
1969
+ grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1799
1970
  }
1800
1971
  *s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
1801
- s->recv_initial_metadata->Set(grpc_core::PeerString(), t->peer_string);
1972
+ s->recv_initial_metadata->Set(grpc_core::PeerString(),
1973
+ t->peer_string.Ref());
1802
1974
  // If we didn't receive initial metadata from the wire and instead faked a
1803
1975
  // status (due to stream cancellations for example), let upper layers know
1804
1976
  // that trailing metadata is immediately available.
@@ -1818,24 +1990,36 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
1818
1990
 
1819
1991
  grpc_core::chttp2::StreamFlowControl::IncomingUpdateContext upd(
1820
1992
  &s->flow_control);
1821
- grpc_error_handle error = GRPC_ERROR_NONE;
1993
+ grpc_error_handle error;
1822
1994
 
1823
1995
  // Lambda is immediately invoked as a big scoped section that can be
1824
1996
  // exited out of at any point by returning.
1825
1997
  [&]() {
1998
+ if (grpc_http_trace.enabled()) {
1999
+ gpr_log(GPR_DEBUG,
2000
+ "maybe_complete_recv_message %p final_metadata_requested=%d "
2001
+ "seen_error=%d",
2002
+ s, s->final_metadata_requested, s->seen_error);
2003
+ }
1826
2004
  if (s->final_metadata_requested && s->seen_error) {
1827
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
2005
+ grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1828
2006
  s->recv_message->reset();
1829
2007
  } else {
1830
2008
  if (s->frame_storage.length != 0) {
1831
2009
  while (true) {
1832
2010
  GPR_ASSERT(s->frame_storage.length > 0);
1833
- uint32_t min_progress_size;
2011
+ int64_t min_progress_size;
1834
2012
  auto r = grpc_deframe_unprocessed_incoming_frames(
1835
2013
  s, &min_progress_size, &**s->recv_message, s->recv_message_flags);
1836
- if (absl::holds_alternative<grpc_core::Pending>(r)) {
2014
+ if (grpc_http_trace.enabled()) {
2015
+ gpr_log(GPR_DEBUG, "Deframe data frame: %s",
2016
+ grpc_core::PollToString(r, [](absl::Status r) {
2017
+ return r.ToString();
2018
+ }).c_str());
2019
+ }
2020
+ if (r.pending()) {
1837
2021
  if (s->read_closed) {
1838
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
2022
+ grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1839
2023
  s->recv_message->reset();
1840
2024
  break;
1841
2025
  } else {
@@ -1843,10 +2027,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
1843
2027
  return; // Out of lambda to enclosing function
1844
2028
  }
1845
2029
  } else {
1846
- error = absl::get<grpc_error_handle>(r);
1847
- if (!GRPC_ERROR_IS_NONE(error)) {
2030
+ error = std::move(r.value());
2031
+ if (!error.ok()) {
1848
2032
  s->seen_error = true;
1849
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
2033
+ grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1850
2034
  break;
1851
2035
  } else {
1852
2036
  if (t->channelz_socket != nullptr) {
@@ -1865,7 +2049,7 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
1865
2049
  }
1866
2050
  // save the length of the buffer before handing control back to application
1867
2051
  // threads. Needed to support correct flow control bookkeeping
1868
- if (GRPC_ERROR_IS_NONE(error) && s->recv_message->has_value()) {
2052
+ if (error.ok() && s->recv_message->has_value()) {
1869
2053
  null_then_sched_closure(&s->recv_message_ready);
1870
2054
  } else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
1871
2055
  if (s->call_failed_before_recv_message != nullptr) {
@@ -1874,7 +2058,6 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
1874
2058
  }
1875
2059
  null_then_sched_closure(&s->recv_message_ready);
1876
2060
  }
1877
- GRPC_ERROR_UNREF(error);
1878
2061
  }();
1879
2062
 
1880
2063
  upd.SetPendingSize(s->frame_storage.length);
@@ -1884,17 +2067,24 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
1884
2067
  void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1885
2068
  grpc_chttp2_stream* s) {
1886
2069
  grpc_chttp2_maybe_complete_recv_message(t, s);
2070
+ if (grpc_http_trace.enabled()) {
2071
+ gpr_log(GPR_DEBUG,
2072
+ "maybe_complete_recv_trailing_metadata cli=%d s=%p closure=%p "
2073
+ "read_closed=%d "
2074
+ "write_closed=%d %" PRIdPTR,
2075
+ t->is_client, s, s->recv_trailing_metadata_finished, s->read_closed,
2076
+ s->write_closed, s->frame_storage.length);
2077
+ }
1887
2078
  if (s->recv_trailing_metadata_finished != nullptr && s->read_closed &&
1888
2079
  s->write_closed) {
1889
2080
  if (s->seen_error || !t->is_client) {
1890
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
2081
+ grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1891
2082
  }
1892
2083
  if (s->read_closed && s->frame_storage.length == 0 &&
1893
2084
  s->recv_trailing_metadata_finished != nullptr) {
1894
2085
  grpc_transport_move_stats(&s->stats, s->collecting_stats);
1895
2086
  s->collecting_stats = nullptr;
1896
2087
  *s->recv_trailing_metadata = std::move(s->trailing_metadata_buffer);
1897
- s->recv_trailing_metadata->Set(grpc_core::PeerString(), t->peer_string);
1898
2088
  null_then_sched_closure(&s->recv_trailing_metadata_finished);
1899
2089
  }
1900
2090
  }
@@ -1914,7 +2104,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
1914
2104
  post_benign_reclaimer(t);
1915
2105
  if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
1916
2106
  close_transport_locked(
1917
- t, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2107
+ t, GRPC_ERROR_CREATE_REFERENCING(
1918
2108
  "Last stream closed after sending GOAWAY", &error, 1));
1919
2109
  }
1920
2110
  }
@@ -1924,8 +2114,6 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
1924
2114
  grpc_chttp2_list_remove_stalled_by_stream(t, s);
1925
2115
  grpc_chttp2_list_remove_stalled_by_transport(t, s);
1926
2116
 
1927
- GRPC_ERROR_UNREF(error);
1928
-
1929
2117
  maybe_start_some_streams(t);
1930
2118
  }
1931
2119
 
@@ -1947,7 +2135,7 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
1947
2135
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM);
1948
2136
  }
1949
2137
  }
1950
- if (!GRPC_ERROR_IS_NONE(due_to_error) && !s->seen_error) {
2138
+ if (!due_to_error.ok() && !s->seen_error) {
1951
2139
  s->seen_error = true;
1952
2140
  }
1953
2141
  grpc_chttp2_mark_stream_closed(t, s, 1, 1, due_to_error);
@@ -1969,7 +2157,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
1969
2157
  // what we want - which is safe because we haven't told anyone
1970
2158
  // about the metadata yet
1971
2159
  if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
1972
- s->recv_trailing_metadata_finished != nullptr) {
2160
+ s->recv_trailing_metadata_finished != nullptr ||
2161
+ !s->final_metadata_requested) {
1973
2162
  s->trailing_metadata_buffer.Set(grpc_core::GrpcStatusMetadata(), status);
1974
2163
  if (!message.empty()) {
1975
2164
  s->trailing_metadata_buffer.Set(
@@ -1979,13 +2168,11 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
1979
2168
  s->published_metadata[1] = GRPC_METADATA_SYNTHESIZED_FROM_FAKE;
1980
2169
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
1981
2170
  }
1982
-
1983
- GRPC_ERROR_UNREF(error);
1984
2171
  }
1985
2172
 
1986
2173
  static void add_error(grpc_error_handle error, grpc_error_handle* refs,
1987
2174
  size_t* nrefs) {
1988
- if (GRPC_ERROR_IS_NONE(error)) return;
2175
+ if (error.ok()) return;
1989
2176
  for (size_t i = 0; i < *nrefs; i++) {
1990
2177
  if (error == refs[i]) {
1991
2178
  return;
@@ -2003,12 +2190,10 @@ static grpc_error_handle removal_error(grpc_error_handle extra_error,
2003
2190
  add_error(s->read_closed_error, refs, &nrefs);
2004
2191
  add_error(s->write_closed_error, refs, &nrefs);
2005
2192
  add_error(extra_error, refs, &nrefs);
2006
- grpc_error_handle error = GRPC_ERROR_NONE;
2193
+ grpc_error_handle error;
2007
2194
  if (nrefs > 0) {
2008
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
2009
- refs, nrefs);
2195
+ error = GRPC_ERROR_CREATE_REFERENCING(main_error_msg, refs, nrefs);
2010
2196
  }
2011
- GRPC_ERROR_UNREF(extra_error);
2012
2197
  return error;
2013
2198
  }
2014
2199
 
@@ -2018,12 +2203,11 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2018
2203
  while (*list) {
2019
2204
  grpc_chttp2_write_cb* cb = *list;
2020
2205
  *list = cb->next;
2021
- grpc_chttp2_complete_closure_step(t, s, &cb->closure, GRPC_ERROR_REF(error),
2206
+ grpc_chttp2_complete_closure_step(t, s, &cb->closure, error,
2022
2207
  "on_write_finished_cb");
2023
2208
  cb->next = t->write_cb_pool;
2024
2209
  t->write_cb_pool = cb;
2025
2210
  }
2026
- GRPC_ERROR_UNREF(error);
2027
2211
  }
2028
2212
 
2029
2213
  void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
@@ -2033,29 +2217,34 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2033
2217
  removal_error(error, s, "Pending writes failed due to stream closure");
2034
2218
  s->send_initial_metadata = nullptr;
2035
2219
  grpc_chttp2_complete_closure_step(t, s, &s->send_initial_metadata_finished,
2036
- GRPC_ERROR_REF(error),
2037
- "send_initial_metadata_finished");
2220
+ error, "send_initial_metadata_finished");
2038
2221
 
2039
2222
  s->send_trailing_metadata = nullptr;
2040
2223
  s->sent_trailing_metadata_op = nullptr;
2041
2224
  grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
2042
- GRPC_ERROR_REF(error),
2043
- "send_trailing_metadata_finished");
2225
+ error, "send_trailing_metadata_finished");
2044
2226
 
2045
- grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
2046
- GRPC_ERROR_REF(error),
2227
+ grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished, error,
2047
2228
  "fetching_send_message_finished");
2048
- flush_write_list(t, s, &s->on_write_finished_cbs, GRPC_ERROR_REF(error));
2229
+ flush_write_list(t, s, &s->on_write_finished_cbs, error);
2049
2230
  flush_write_list(t, s, &s->on_flow_controlled_cbs, error);
2050
2231
  }
2051
2232
 
2052
2233
  void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2053
2234
  grpc_chttp2_stream* s, int close_reads,
2054
2235
  int close_writes, grpc_error_handle error) {
2236
+ if (grpc_http_trace.enabled()) {
2237
+ gpr_log(
2238
+ GPR_DEBUG, "MARK_STREAM_CLOSED: t=%p s=%p(id=%d) %s [%s]", t, s, s->id,
2239
+ (close_reads && close_writes)
2240
+ ? "read+write"
2241
+ : (close_reads ? "read" : (close_writes ? "write" : "nothing??")),
2242
+ error.ToString().c_str());
2243
+ }
2055
2244
  if (s->read_closed && s->write_closed) {
2056
2245
  // already closed, but we should still fake the status if needed.
2057
2246
  grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2058
- if (!GRPC_ERROR_IS_NONE(overall_error)) {
2247
+ if (!overall_error.ok()) {
2059
2248
  grpc_chttp2_fake_status(t, s, overall_error);
2060
2249
  }
2061
2250
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
@@ -2064,26 +2253,25 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2064
2253
  bool closed_read = false;
2065
2254
  bool became_closed = false;
2066
2255
  if (close_reads && !s->read_closed) {
2067
- s->read_closed_error = GRPC_ERROR_REF(error);
2256
+ s->read_closed_error = error;
2068
2257
  s->read_closed = true;
2069
2258
  closed_read = true;
2070
2259
  }
2071
2260
  if (close_writes && !s->write_closed) {
2072
- s->write_closed_error = GRPC_ERROR_REF(error);
2261
+ s->write_closed_error = error;
2073
2262
  s->write_closed = true;
2074
- grpc_chttp2_fail_pending_writes(t, s, GRPC_ERROR_REF(error));
2263
+ grpc_chttp2_fail_pending_writes(t, s, error);
2075
2264
  }
2076
2265
  if (s->read_closed && s->write_closed) {
2077
2266
  became_closed = true;
2078
- grpc_error_handle overall_error =
2079
- removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
2267
+ grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2080
2268
  if (s->id != 0) {
2081
- remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
2269
+ remove_stream(t, s->id, overall_error);
2082
2270
  } else {
2083
2271
  // Purge streams waiting on concurrency still waiting for id assignment
2084
2272
  grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
2085
2273
  }
2086
- if (!GRPC_ERROR_IS_NONE(overall_error)) {
2274
+ if (!overall_error.ok()) {
2087
2275
  grpc_chttp2_fake_status(t, s, overall_error);
2088
2276
  }
2089
2277
  }
@@ -2097,10 +2285,11 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2097
2285
  grpc_chttp2_maybe_complete_recv_message(t, s);
2098
2286
  }
2099
2287
  if (became_closed) {
2288
+ s->stats.latency =
2289
+ gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), s->creation_time);
2100
2290
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
2101
2291
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2");
2102
2292
  }
2103
- GRPC_ERROR_UNREF(error);
2104
2293
  }
2105
2294
 
2106
2295
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
@@ -2183,8 +2372,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2183
2372
 
2184
2373
  status_hdr = GRPC_SLICE_MALLOC(15 + (grpc_status >= 10));
2185
2374
  p = GRPC_SLICE_START_PTR(status_hdr);
2186
- *p++ = 0x00; /* literal header, not indexed */
2187
- *p++ = 11; /* len(grpc-status) */
2375
+ *p++ = 0x00; // literal header, not indexed
2376
+ *p++ = 11; // len(grpc-status)
2188
2377
  *p++ = 'g';
2189
2378
  *p++ = 'r';
2190
2379
  *p++ = 'p';
@@ -2209,11 +2398,11 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2209
2398
 
2210
2399
  size_t msg_len = message.length();
2211
2400
  GPR_ASSERT(msg_len <= UINT32_MAX);
2212
- grpc_core::VarintWriter<1> msg_len_writer(msg_len);
2401
+ grpc_core::VarintWriter<1> msg_len_writer(static_cast<uint32_t>(msg_len));
2213
2402
  message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
2214
2403
  p = GRPC_SLICE_START_PTR(message_pfx);
2215
- *p++ = 0x00; /* literal header, not indexed */
2216
- *p++ = 12; /* len(grpc-message) */
2404
+ *p++ = 0x00; // literal header, not indexed
2405
+ *p++ = 12; // len(grpc-message)
2217
2406
  *p++ = 'g';
2218
2407
  *p++ = 'r';
2219
2408
  *p++ = 'p';
@@ -2270,7 +2459,7 @@ struct cancel_stream_cb_args {
2270
2459
  static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
2271
2460
  cancel_stream_cb_args* args = static_cast<cancel_stream_cb_args*>(user_data);
2272
2461
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(stream);
2273
- grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
2462
+ grpc_chttp2_cancel_stream(args->t, s, args->error);
2274
2463
  }
2275
2464
 
2276
2465
  static void end_all_the_calls(grpc_chttp2_transport* t,
@@ -2278,14 +2467,14 @@ static void end_all_the_calls(grpc_chttp2_transport* t,
2278
2467
  intptr_t http2_error;
2279
2468
  // If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
2280
2469
  if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
2281
- !grpc_error_get_int(error, GRPC_ERROR_INT_HTTP2_ERROR, &http2_error)) {
2282
- error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
2470
+ !grpc_error_get_int(error, grpc_core::StatusIntProperty::kHttp2Error,
2471
+ &http2_error)) {
2472
+ error = grpc_error_set_int(error, grpc_core::StatusIntProperty::kRpcStatus,
2283
2473
  GRPC_STATUS_UNAVAILABLE);
2284
2474
  }
2285
- cancel_unstarted_streams(t, GRPC_ERROR_REF(error));
2475
+ cancel_unstarted_streams(t, error);
2286
2476
  cancel_stream_cb_args args = {error, t};
2287
2477
  grpc_chttp2_stream_map_for_each(&t->stream_map, cancel_stream_cb, &args);
2288
- GRPC_ERROR_UNREF(error);
2289
2478
  }
2290
2479
 
2291
2480
  //
@@ -2330,31 +2519,39 @@ void grpc_chttp2_act_on_flowctl_action(
2330
2519
  queue_setting_update(t, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
2331
2520
  action.max_frame_size());
2332
2521
  });
2522
+ if (t->enable_preferred_rx_crypto_frame_advertisement) {
2523
+ WithUrgency(
2524
+ t, action.preferred_rx_crypto_frame_size_update(),
2525
+ GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS, [t, &action]() {
2526
+ queue_setting_update(
2527
+ t, GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE,
2528
+ action.preferred_rx_crypto_frame_size());
2529
+ });
2530
+ }
2333
2531
  }
2334
2532
 
2335
2533
  static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
2336
2534
  grpc_http_parser parser;
2337
2535
  size_t i = 0;
2338
- grpc_error_handle error = GRPC_ERROR_NONE;
2536
+ grpc_error_handle error;
2339
2537
  grpc_http_response response;
2340
2538
 
2341
2539
  grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
2342
2540
 
2343
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
2344
- for (; i < t->read_buffer.count && GRPC_ERROR_IS_NONE(parse_error); i++) {
2541
+ grpc_error_handle parse_error;
2542
+ for (; i < t->read_buffer.count && parse_error.ok(); i++) {
2345
2543
  parse_error =
2346
2544
  grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
2347
2545
  }
2348
- if (GRPC_ERROR_IS_NONE(parse_error) &&
2349
- (parse_error = grpc_http_parser_eof(&parser)) == GRPC_ERROR_NONE) {
2546
+ if (parse_error.ok() &&
2547
+ (parse_error = grpc_http_parser_eof(&parser)) == absl::OkStatus()) {
2350
2548
  error = grpc_error_set_int(
2351
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
2352
- "Trying to connect an http1.x server"),
2353
- GRPC_ERROR_INT_HTTP_STATUS, response.status),
2354
- GRPC_ERROR_INT_GRPC_STATUS,
2549
+ grpc_error_set_int(
2550
+ GRPC_ERROR_CREATE("Trying to connect an http1.x server"),
2551
+ grpc_core::StatusIntProperty::kHttpStatus, response.status),
2552
+ grpc_core::StatusIntProperty::kRpcStatus,
2355
2553
  grpc_http2_status_to_grpc_status(response.status));
2356
2554
  }
2357
- GRPC_ERROR_UNREF(parse_error);
2358
2555
 
2359
2556
  grpc_http_parser_destroy(&parser);
2360
2557
  grpc_http_response_destroy(&response);
@@ -2365,38 +2562,29 @@ static void read_action(void* tp, grpc_error_handle error) {
2365
2562
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2366
2563
  t->combiner->Run(
2367
2564
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
2368
- GRPC_ERROR_REF(error));
2565
+ error);
2369
2566
  }
2370
2567
 
2371
2568
  static void read_action_locked(void* tp, grpc_error_handle error) {
2372
2569
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2373
2570
 
2374
- (void)GRPC_ERROR_REF(error);
2375
-
2376
2571
  grpc_error_handle err = error;
2377
- if (!GRPC_ERROR_IS_NONE(err)) {
2378
- err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2379
- "Endpoint read failed", &err, 1),
2380
- GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
2381
- t->write_state);
2572
+ if (!err.ok()) {
2573
+ err = grpc_error_set_int(
2574
+ GRPC_ERROR_CREATE_REFERENCING("Endpoint read failed", &err, 1),
2575
+ grpc_core::StatusIntProperty::kOccurredDuringWrite, t->write_state);
2382
2576
  }
2383
2577
  std::swap(err, error);
2384
- GRPC_ERROR_UNREF(err);
2385
- if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2578
+ if (t->closed_with_error.ok()) {
2386
2579
  size_t i = 0;
2387
- grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2388
- GRPC_ERROR_NONE};
2389
- for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
2580
+ grpc_error_handle errors[3] = {error, absl::OkStatus(), absl::OkStatus()};
2581
+ for (; i < t->read_buffer.count && errors[1] == absl::OkStatus(); i++) {
2390
2582
  errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
2391
2583
  }
2392
- if (errors[1] != GRPC_ERROR_NONE) {
2584
+ if (errors[1] != absl::OkStatus()) {
2393
2585
  errors[2] = try_http_parsing(t);
2394
- GRPC_ERROR_UNREF(error);
2395
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2396
- "Failed parsing HTTP/2", errors, GPR_ARRAY_SIZE(errors));
2397
- }
2398
- for (i = 0; i < GPR_ARRAY_SIZE(errors); i++) {
2399
- GRPC_ERROR_UNREF(errors[i]);
2586
+ error = GRPC_ERROR_CREATE_REFERENCING("Failed parsing HTTP/2", errors,
2587
+ GPR_ARRAY_SIZE(errors));
2400
2588
  }
2401
2589
 
2402
2590
  if (t->initial_window_update != 0) {
@@ -2413,27 +2601,27 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
2413
2601
  }
2414
2602
 
2415
2603
  bool keep_reading = false;
2416
- if (GRPC_ERROR_IS_NONE(error) && !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2417
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2418
- "Transport closed", &t->closed_with_error, 1);
2604
+ if (error.ok() && !t->closed_with_error.ok()) {
2605
+ error = GRPC_ERROR_CREATE_REFERENCING("Transport closed",
2606
+ &t->closed_with_error, 1);
2419
2607
  }
2420
- if (!GRPC_ERROR_IS_NONE(error)) {
2608
+ if (!error.ok()) {
2421
2609
  // If a goaway frame was received, this might be the reason why the read
2422
2610
  // failed. Add this info to the error
2423
- if (!GRPC_ERROR_IS_NONE(t->goaway_error)) {
2424
- error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
2611
+ if (!t->goaway_error.ok()) {
2612
+ error = grpc_error_add_child(error, t->goaway_error);
2425
2613
  }
2426
2614
 
2427
- close_transport_locked(t, GRPC_ERROR_REF(error));
2615
+ close_transport_locked(t, error);
2428
2616
  t->endpoint_reading = 0;
2429
- } else if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2617
+ } else if (t->closed_with_error.ok()) {
2430
2618
  keep_reading = true;
2431
2619
  // Since we have read a byte, reset the keepalive timer
2432
2620
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2433
- grpc_timer_cancel(&t->keepalive_ping_timer);
2621
+ maybe_reset_keepalive_ping_timer_locked(t);
2434
2622
  }
2435
2623
  }
2436
- grpc_slice_buffer_reset_and_unref_internal(&t->read_buffer);
2624
+ grpc_slice_buffer_reset_and_unref(&t->read_buffer);
2437
2625
 
2438
2626
  if (keep_reading) {
2439
2627
  if (t->num_pending_induced_frames >= DEFAULT_MAX_PENDING_INDUCED_FRAMES) {
@@ -2449,12 +2637,10 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
2449
2637
  } else {
2450
2638
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action");
2451
2639
  }
2452
-
2453
- GRPC_ERROR_UNREF(error);
2454
2640
  }
2455
2641
 
2456
2642
  static void continue_read_action_locked(grpc_chttp2_transport* t) {
2457
- const bool urgent = !GRPC_ERROR_IS_NONE(t->goaway_error);
2643
+ const bool urgent = !t->goaway_error.ok();
2458
2644
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action, t,
2459
2645
  grpc_schedule_on_exec_ctx);
2460
2646
  grpc_endpoint_read(t->ep, &t->read_buffer, &t->read_action_locked, urgent,
@@ -2478,21 +2664,22 @@ static void start_bdp_ping(void* tp, grpc_error_handle error) {
2478
2664
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2479
2665
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
2480
2666
  start_bdp_ping_locked, t, nullptr),
2481
- GRPC_ERROR_REF(error));
2667
+ error);
2482
2668
  }
2483
2669
 
2484
2670
  static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2485
2671
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2486
2672
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2487
- gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
2488
- grpc_error_std_string(error).c_str());
2673
+ gpr_log(GPR_INFO, "%s: Start BDP ping err=%s",
2674
+ std::string(t->peer_string.as_string_view()).c_str(),
2675
+ grpc_core::StatusToString(error).c_str());
2489
2676
  }
2490
- if (!GRPC_ERROR_IS_NONE(error) || !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2677
+ if (!error.ok() || !t->closed_with_error.ok()) {
2491
2678
  return;
2492
2679
  }
2493
2680
  // Reset the keepalive ping timer
2494
2681
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2495
- grpc_timer_cancel(&t->keepalive_ping_timer);
2682
+ maybe_reset_keepalive_ping_timer_locked(t);
2496
2683
  }
2497
2684
  t->flow_control.bdp_estimator()->StartPing();
2498
2685
  t->bdp_ping_started = true;
@@ -2502,16 +2689,17 @@ static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2502
2689
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2503
2690
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2504
2691
  finish_bdp_ping_locked, t, nullptr),
2505
- GRPC_ERROR_REF(error));
2692
+ error);
2506
2693
  }
2507
2694
 
2508
2695
  static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2509
2696
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2510
2697
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2511
- gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
2512
- grpc_error_std_string(error).c_str());
2698
+ gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s",
2699
+ std::string(t->peer_string.as_string_view()).c_str(),
2700
+ grpc_core::StatusToString(error).c_str());
2513
2701
  }
2514
- if (!GRPC_ERROR_IS_NONE(error) || !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2702
+ if (!error.ok() || !t->closed_with_error.ok()) {
2515
2703
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2516
2704
  return;
2517
2705
  }
@@ -2520,7 +2708,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2520
2708
  // finish_bdp_ping_locked to be run later.
2521
2709
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2522
2710
  finish_bdp_ping_locked, t, nullptr),
2523
- GRPC_ERROR_REF(error));
2711
+ error);
2524
2712
  return;
2525
2713
  }
2526
2714
  t->bdp_ping_started = false;
@@ -2528,31 +2716,28 @@ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2528
2716
  t->flow_control.bdp_estimator()->CompletePing();
2529
2717
  grpc_chttp2_act_on_flowctl_action(t->flow_control.PeriodicUpdate(), t,
2530
2718
  nullptr);
2531
- GPR_ASSERT(!t->have_next_bdp_ping_timer);
2532
- t->have_next_bdp_ping_timer = true;
2533
- GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
2534
- next_bdp_ping_timer_expired, t, grpc_schedule_on_exec_ctx);
2535
- grpc_timer_init(&t->next_bdp_ping_timer, next_ping,
2536
- &t->next_bdp_ping_timer_expired_locked);
2719
+ GPR_ASSERT(!t->next_bdp_ping_timer_handle.has_value());
2720
+ t->next_bdp_ping_timer_handle =
2721
+ t->event_engine->RunAfter(next_ping - grpc_core::Timestamp::Now(), [t] {
2722
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2723
+ grpc_core::ExecCtx exec_ctx;
2724
+ next_bdp_ping_timer_expired(t);
2725
+ });
2537
2726
  }
2538
2727
 
2539
- static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
2540
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2728
+ static void next_bdp_ping_timer_expired(grpc_chttp2_transport* t) {
2541
2729
  t->combiner->Run(
2542
2730
  GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
2543
2731
  next_bdp_ping_timer_expired_locked, t, nullptr),
2544
- GRPC_ERROR_REF(error));
2732
+ absl::OkStatus());
2545
2733
  }
2546
2734
 
2547
- static void next_bdp_ping_timer_expired_locked(void* tp,
2548
- grpc_error_handle error) {
2735
+ static void next_bdp_ping_timer_expired_locked(
2736
+ void* tp, GRPC_UNUSED grpc_error_handle error) {
2737
+ GPR_DEBUG_ASSERT(error.ok());
2549
2738
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2550
- GPR_ASSERT(t->have_next_bdp_ping_timer);
2551
- t->have_next_bdp_ping_timer = false;
2552
- if (!GRPC_ERROR_IS_NONE(error)) {
2553
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2554
- return;
2555
- }
2739
+ GPR_ASSERT(t->next_bdp_ping_timer_handle.has_value());
2740
+ t->next_bdp_ping_timer_handle.reset();
2556
2741
  if (t->flow_control.bdp_estimator()->accumulator() == 0) {
2557
2742
  // Block the bdp ping till we receive more data.
2558
2743
  t->bdp_ping_blocked = true;
@@ -2621,47 +2806,37 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2621
2806
  }
2622
2807
  }
2623
2808
 
2624
- static void init_keepalive_ping(void* arg, grpc_error_handle error) {
2625
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2809
+ static void init_keepalive_ping(grpc_chttp2_transport* t) {
2626
2810
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
2627
2811
  init_keepalive_ping_locked, t, nullptr),
2628
- GRPC_ERROR_REF(error));
2812
+ absl::OkStatus());
2629
2813
  }
2630
2814
 
2631
- static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2815
+ static void init_keepalive_ping_locked(void* arg,
2816
+ GRPC_UNUSED grpc_error_handle error) {
2817
+ GPR_DEBUG_ASSERT(error.ok());
2632
2818
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2633
2819
  GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
2634
- if (t->destroying || !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2820
+ GPR_ASSERT(t->keepalive_ping_timer_handle.has_value());
2821
+ t->keepalive_ping_timer_handle.reset();
2822
+ if (t->destroying || !t->closed_with_error.ok()) {
2635
2823
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2636
- } else if (GRPC_ERROR_IS_NONE(error)) {
2824
+ } else {
2637
2825
  if (t->keepalive_permit_without_calls ||
2638
2826
  grpc_chttp2_stream_map_size(&t->stream_map) > 0) {
2639
2827
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_PINGING;
2640
2828
  GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive ping end");
2641
- grpc_timer_init_unset(&t->keepalive_watchdog_timer);
2642
2829
  send_keepalive_ping_locked(t);
2643
2830
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING);
2644
2831
  } else {
2645
2832
  GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
2646
- GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
2647
- grpc_schedule_on_exec_ctx);
2648
- grpc_timer_init(&t->keepalive_ping_timer,
2649
- grpc_core::Timestamp::Now() + t->keepalive_time,
2650
- &t->init_keepalive_ping_locked);
2651
- }
2652
- } else if (error == GRPC_ERROR_CANCELLED) {
2653
- // The keepalive ping timer may be cancelled by bdp
2654
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2655
- GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2656
- gpr_log(GPR_INFO, "%s: Keepalive ping cancelled. Resetting timer.",
2657
- t->peer_string.c_str());
2833
+ t->keepalive_ping_timer_handle =
2834
+ t->event_engine->RunAfter(t->keepalive_time, [t] {
2835
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2836
+ grpc_core::ExecCtx exec_ctx;
2837
+ init_keepalive_ping(t);
2838
+ });
2658
2839
  }
2659
- GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
2660
- GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
2661
- grpc_schedule_on_exec_ctx);
2662
- grpc_timer_init(&t->keepalive_ping_timer,
2663
- grpc_core::Timestamp::Now() + t->keepalive_time,
2664
- &t->init_keepalive_ping_locked);
2665
2840
  }
2666
2841
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
2667
2842
  }
@@ -2670,12 +2845,12 @@ static void start_keepalive_ping(void* arg, grpc_error_handle error) {
2670
2845
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2671
2846
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
2672
2847
  start_keepalive_ping_locked, t, nullptr),
2673
- GRPC_ERROR_REF(error));
2848
+ error);
2674
2849
  }
2675
2850
 
2676
2851
  static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2677
2852
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2678
- if (!GRPC_ERROR_IS_NONE(error)) {
2853
+ if (!error.ok()) {
2679
2854
  return;
2680
2855
  }
2681
2856
  if (t->channelz_socket != nullptr) {
@@ -2683,14 +2858,16 @@ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2683
2858
  }
2684
2859
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2685
2860
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2686
- gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string.c_str());
2861
+ gpr_log(GPR_INFO, "%s: Start keepalive ping",
2862
+ std::string(t->peer_string.as_string_view()).c_str());
2687
2863
  }
2688
2864
  GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
2689
- GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
2690
- keepalive_watchdog_fired, t, grpc_schedule_on_exec_ctx);
2691
- grpc_timer_init(&t->keepalive_watchdog_timer,
2692
- grpc_core::Timestamp::Now() + t->keepalive_timeout,
2693
- &t->keepalive_watchdog_fired_locked);
2865
+ t->keepalive_watchdog_timer_handle =
2866
+ t->event_engine->RunAfter(t->keepalive_timeout, [t] {
2867
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2868
+ grpc_core::ExecCtx exec_ctx;
2869
+ keepalive_watchdog_fired(t);
2870
+ });
2694
2871
  t->keepalive_ping_started = true;
2695
2872
  }
2696
2873
 
@@ -2698,16 +2875,17 @@ static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
2698
2875
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2699
2876
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2700
2877
  finish_keepalive_ping_locked, t, nullptr),
2701
- GRPC_ERROR_REF(error));
2878
+ error);
2702
2879
  }
2703
2880
 
2704
2881
  static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2705
2882
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2706
2883
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2707
- if (GRPC_ERROR_IS_NONE(error)) {
2884
+ if (error.ok()) {
2708
2885
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2709
2886
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2710
- gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
2887
+ gpr_log(GPR_INFO, "%s: Finish keepalive ping",
2888
+ std::string(t->peer_string.as_string_view()).c_str());
2711
2889
  }
2712
2890
  if (!t->keepalive_ping_started) {
2713
2891
  // start_keepalive_ping_locked has not run yet. Reschedule
@@ -2715,56 +2893,81 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2715
2893
  t->combiner->Run(
2716
2894
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2717
2895
  finish_keepalive_ping_locked, t, nullptr),
2718
- GRPC_ERROR_REF(error));
2896
+ error);
2719
2897
  return;
2720
2898
  }
2721
2899
  t->keepalive_ping_started = false;
2722
2900
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING;
2723
- grpc_timer_cancel(&t->keepalive_watchdog_timer);
2901
+ if (t->keepalive_watchdog_timer_handle.has_value()) {
2902
+ if (t->event_engine->Cancel(*t->keepalive_watchdog_timer_handle)) {
2903
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
2904
+ t->keepalive_watchdog_timer_handle.reset();
2905
+ }
2906
+ }
2907
+ GPR_ASSERT(!t->keepalive_ping_timer_handle.has_value());
2724
2908
  GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
2725
- GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
2726
- grpc_schedule_on_exec_ctx);
2727
- grpc_timer_init(&t->keepalive_ping_timer,
2728
- grpc_core::Timestamp::Now() + t->keepalive_time,
2729
- &t->init_keepalive_ping_locked);
2909
+ t->keepalive_ping_timer_handle =
2910
+ t->event_engine->RunAfter(t->keepalive_time, [t] {
2911
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2912
+ grpc_core::ExecCtx exec_ctx;
2913
+ init_keepalive_ping(t);
2914
+ });
2730
2915
  }
2731
2916
  }
2732
2917
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
2733
2918
  }
2734
2919
 
2735
- static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
2736
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2920
+ static void keepalive_watchdog_fired(grpc_chttp2_transport* t) {
2737
2921
  t->combiner->Run(
2738
2922
  GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
2739
2923
  keepalive_watchdog_fired_locked, t, nullptr),
2740
- GRPC_ERROR_REF(error));
2924
+ absl::OkStatus());
2741
2925
  }
2742
2926
 
2743
- static void keepalive_watchdog_fired_locked(void* arg,
2744
- grpc_error_handle error) {
2927
+ static void keepalive_watchdog_fired_locked(
2928
+ void* arg, GRPC_UNUSED grpc_error_handle error) {
2929
+ GPR_DEBUG_ASSERT(error.ok());
2745
2930
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2931
+ GPR_ASSERT(t->keepalive_watchdog_timer_handle.has_value());
2932
+ t->keepalive_watchdog_timer_handle.reset();
2746
2933
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2747
- if (GRPC_ERROR_IS_NONE(error)) {
2748
- gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2749
- t->peer_string.c_str());
2750
- t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2751
- close_transport_locked(
2752
- t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
2753
- "keepalive watchdog timeout"),
2754
- GRPC_ERROR_INT_GRPC_STATUS,
2755
- GRPC_STATUS_UNAVAILABLE));
2756
- }
2934
+ gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2935
+ std::string(t->peer_string.as_string_view()).c_str());
2936
+ t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2937
+ close_transport_locked(
2938
+ t, grpc_error_set_int(GRPC_ERROR_CREATE("keepalive watchdog timeout"),
2939
+ grpc_core::StatusIntProperty::kRpcStatus,
2940
+ GRPC_STATUS_UNAVAILABLE));
2757
2941
  } else {
2758
- // The watchdog timer should have been cancelled by
2759
- // finish_keepalive_ping_locked.
2760
- if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
2761
- gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
2762
- t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
2763
- }
2942
+ // If keepalive_state is not PINGING, we consider it as an error. Maybe the
2943
+ // cancellation failed in finish_keepalive_ping_locked. Users have seen
2944
+ // other states: https://github.com/grpc/grpc/issues/32085.
2945
+ gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
2946
+ t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
2764
2947
  }
2765
2948
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
2766
2949
  }
2767
2950
 
2951
+ static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t) {
2952
+ if (t->keepalive_ping_timer_handle.has_value()) {
2953
+ if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
2954
+ // Cancel succeeds, resets the keepalive ping timer. Note that we don't
2955
+ // need to Ref or Unref here since we still hold the Ref.
2956
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2957
+ GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2958
+ gpr_log(GPR_INFO, "%s: Keepalive ping cancelled. Resetting timer.",
2959
+ std::string(t->peer_string.as_string_view()).c_str());
2960
+ }
2961
+ t->keepalive_ping_timer_handle =
2962
+ t->event_engine->RunAfter(t->keepalive_time, [t] {
2963
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2964
+ grpc_core::ExecCtx exec_ctx;
2965
+ init_keepalive_ping(t);
2966
+ });
2967
+ }
2968
+ }
2969
+ }
2970
+
2768
2971
  //
2769
2972
  // CALLBACK LOOP
2770
2973
  //
@@ -2810,7 +3013,7 @@ static void post_benign_reclaimer(grpc_chttp2_transport* t) {
2810
3013
  benign_reclaimer_locked, t,
2811
3014
  grpc_schedule_on_exec_ctx);
2812
3015
  t->active_reclamation = std::move(*sweep);
2813
- t->combiner->Run(&t->benign_reclaimer_locked, GRPC_ERROR_NONE);
3016
+ t->combiner->Run(&t->benign_reclaimer_locked, absl::OkStatus());
2814
3017
  } else {
2815
3018
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
2816
3019
  }
@@ -2830,9 +3033,10 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
2830
3033
  destructive_reclaimer_locked, t,
2831
3034
  grpc_schedule_on_exec_ctx);
2832
3035
  t->active_reclamation = std::move(*sweep);
2833
- t->combiner->Run(&t->destructive_reclaimer_locked, GRPC_ERROR_NONE);
3036
+ t->combiner->Run(&t->destructive_reclaimer_locked,
3037
+ absl::OkStatus());
2834
3038
  } else {
2835
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3039
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
2836
3040
  }
2837
3041
  });
2838
3042
  }
@@ -2840,29 +3044,27 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
2840
3044
 
2841
3045
  static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
2842
3046
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2843
- if (GRPC_ERROR_IS_NONE(error) &&
2844
- grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
3047
+ if (error.ok() && grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
2845
3048
  // Channel with no active streams: send a goaway to try and make it
2846
3049
  // disconnect cleanly
2847
3050
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
2848
3051
  gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
2849
- t->peer_string.c_str());
3052
+ std::string(t->peer_string.as_string_view()).c_str());
2850
3053
  }
2851
3054
  send_goaway(t,
2852
- grpc_error_set_int(
2853
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"),
2854
- GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM),
3055
+ grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
3056
+ grpc_core::StatusIntProperty::kHttp2Error,
3057
+ GRPC_HTTP2_ENHANCE_YOUR_CALM),
2855
3058
  /*immediate_disconnect_hint=*/true);
2856
- } else if (GRPC_ERROR_IS_NONE(error) &&
2857
- GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
3059
+ } else if (error.ok() && GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
2858
3060
  gpr_log(GPR_INFO,
2859
3061
  "HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
2860
3062
  " streams",
2861
- t->peer_string.c_str(),
3063
+ std::string(t->peer_string.as_string_view()).c_str(),
2862
3064
  grpc_chttp2_stream_map_size(&t->stream_map));
2863
3065
  }
2864
3066
  t->benign_reclaimer_registered = false;
2865
- if (error != GRPC_ERROR_CANCELLED) {
3067
+ if (error != absl::CancelledError()) {
2866
3068
  t->active_reclamation.Finish();
2867
3069
  }
2868
3070
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
@@ -2872,17 +3074,17 @@ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
2872
3074
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2873
3075
  size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
2874
3076
  t->destructive_reclaimer_registered = false;
2875
- if (GRPC_ERROR_IS_NONE(error) && n > 0) {
3077
+ if (error.ok() && n > 0) {
2876
3078
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
2877
3079
  grpc_chttp2_stream_map_rand(&t->stream_map));
2878
3080
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
2879
3081
  gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
2880
- t->peer_string.c_str(), s->id);
3082
+ std::string(t->peer_string.as_string_view()).c_str(), s->id);
2881
3083
  }
2882
3084
  grpc_chttp2_cancel_stream(
2883
3085
  t, s,
2884
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"),
2885
- GRPC_ERROR_INT_HTTP2_ERROR,
3086
+ grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
3087
+ grpc_core::StatusIntProperty::kHttp2Error,
2886
3088
  GRPC_HTTP2_ENHANCE_YOUR_CALM));
2887
3089
  if (n > 1) {
2888
3090
  // Since we cancel one stream per destructive reclamation, if
@@ -2892,7 +3094,7 @@ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
2892
3094
  post_destructive_reclaimer(t);
2893
3095
  }
2894
3096
  }
2895
- if (error != GRPC_ERROR_CANCELLED) {
3097
+ if (error != absl::CancelledError()) {
2896
3098
  t->active_reclamation.Finish();
2897
3099
  }
2898
3100
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
@@ -2958,6 +3160,7 @@ static grpc_endpoint* chttp2_get_endpoint(grpc_transport* t) {
2958
3160
  }
2959
3161
 
2960
3162
  static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
3163
+ false,
2961
3164
  "chttp2",
2962
3165
  init_stream,
2963
3166
  nullptr,
@@ -2991,14 +3194,29 @@ void grpc_chttp2_transport_start_reading(
2991
3194
  grpc_chttp2_transport* t =
2992
3195
  reinterpret_cast<grpc_chttp2_transport*>(transport);
2993
3196
  GRPC_CHTTP2_REF_TRANSPORT(
2994
- t, "reading_action"); /* matches unref inside reading_action */
3197
+ t, "reading_action"); // matches unref inside reading_action
2995
3198
  if (read_buffer != nullptr) {
2996
3199
  grpc_slice_buffer_move_into(read_buffer, &t->read_buffer);
2997
3200
  gpr_free(read_buffer);
2998
3201
  }
2999
- t->notify_on_receive_settings = notify_on_receive_settings;
3000
- t->notify_on_close = notify_on_close;
3001
3202
  t->combiner->Run(
3002
- GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
3003
- GRPC_ERROR_NONE);
3203
+ grpc_core::NewClosure([t, notify_on_receive_settings,
3204
+ notify_on_close](grpc_error_handle) {
3205
+ if (!t->closed_with_error.ok()) {
3206
+ if (notify_on_receive_settings != nullptr) {
3207
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_receive_settings,
3208
+ t->closed_with_error);
3209
+ }
3210
+ if (notify_on_close != nullptr) {
3211
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_close,
3212
+ t->closed_with_error);
3213
+ }
3214
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action");
3215
+ return;
3216
+ }
3217
+ t->notify_on_receive_settings = notify_on_receive_settings;
3218
+ t->notify_on_close = notify_on_close;
3219
+ read_action_locked(t, absl::OkStatus());
3220
+ }),
3221
+ absl::OkStatus());
3004
3222
  }