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