grpc 1.35.0 → 1.47.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 (2272) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +617 -386
  3. data/etc/roots.pem +335 -326
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/event_engine/README.md +38 -0
  7. data/include/grpc/event_engine/endpoint_config.h +43 -0
  8. data/include/grpc/event_engine/event_engine.h +434 -0
  9. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  10. data/include/grpc/event_engine/memory_allocator.h +211 -0
  11. data/include/grpc/event_engine/memory_request.h +57 -0
  12. data/include/grpc/event_engine/port.h +39 -0
  13. data/include/grpc/event_engine/slice.h +286 -0
  14. data/include/grpc/event_engine/slice_buffer.h +112 -0
  15. data/include/grpc/fork.h +1 -1
  16. data/include/grpc/grpc.h +76 -19
  17. data/include/grpc/grpc_posix.h +22 -18
  18. data/include/grpc/grpc_security.h +378 -195
  19. data/include/grpc/grpc_security_constants.h +17 -14
  20. data/include/grpc/impl/codegen/atm.h +5 -3
  21. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  22. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  23. data/include/grpc/impl/codegen/atm_windows.h +2 -0
  24. data/include/grpc/impl/codegen/byte_buffer.h +2 -0
  25. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
  26. data/include/grpc/impl/codegen/compression_types.h +2 -2
  27. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  28. data/include/grpc/impl/codegen/fork.h +2 -0
  29. data/include/grpc/impl/codegen/gpr_slice.h +2 -0
  30. data/include/grpc/impl/codegen/gpr_types.h +2 -0
  31. data/include/grpc/impl/codegen/grpc_types.h +68 -41
  32. data/include/grpc/impl/codegen/log.h +2 -0
  33. data/include/grpc/impl/codegen/port_platform.h +162 -35
  34. data/include/grpc/impl/codegen/propagation_bits.h +2 -0
  35. data/include/grpc/impl/codegen/slice.h +6 -1
  36. data/include/grpc/impl/codegen/status.h +2 -0
  37. data/include/grpc/impl/codegen/sync.h +8 -5
  38. data/include/grpc/impl/codegen/sync_abseil.h +2 -0
  39. data/include/grpc/impl/codegen/sync_custom.h +2 -0
  40. data/include/grpc/impl/codegen/sync_generic.h +3 -0
  41. data/include/grpc/impl/codegen/sync_posix.h +4 -2
  42. data/include/grpc/impl/codegen/sync_windows.h +2 -0
  43. data/include/grpc/module.modulemap +14 -14
  44. data/include/grpc/slice.h +1 -12
  45. data/include/grpc/status.h +1 -1
  46. data/include/grpc/support/atm.h +1 -1
  47. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  48. data/include/grpc/support/atm_gcc_sync.h +1 -1
  49. data/include/grpc/support/atm_windows.h +1 -1
  50. data/include/grpc/support/log.h +1 -1
  51. data/include/grpc/support/port_platform.h +1 -1
  52. data/include/grpc/support/sync.h +1 -1
  53. data/include/grpc/support/sync_abseil.h +1 -1
  54. data/include/grpc/support/sync_custom.h +1 -1
  55. data/include/grpc/support/sync_generic.h +1 -1
  56. data/include/grpc/support/sync_posix.h +1 -1
  57. data/include/grpc/support/sync_windows.h +1 -1
  58. data/include/grpc/support/time.h +2 -2
  59. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  60. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +297 -0
  61. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +125 -0
  62. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
  63. data/src/core/ext/filters/channel_idle/idle_filter_state.h +66 -0
  64. data/src/core/ext/filters/client_channel/backend_metric.cc +32 -30
  65. data/src/core/ext/filters/client_channel/backend_metric.h +19 -8
  66. data/src/core/ext/filters/client_channel/backup_poller.cc +22 -17
  67. data/src/core/ext/filters/client_channel/backup_poller.h +2 -3
  68. data/src/core/ext/filters/client_channel/channel_connectivity.cc +181 -203
  69. data/src/core/ext/filters/client_channel/client_channel.cc +1429 -3634
  70. data/src/core/ext/filters/client_channel/client_channel.h +583 -56
  71. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -7
  72. data/src/core/ext/filters/client_channel/client_channel_channelz.h +14 -4
  73. data/src/core/ext/filters/client_channel/client_channel_factory.cc +7 -1
  74. data/src/core/ext/filters/client_channel/client_channel_factory.h +26 -19
  75. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +19 -31
  76. data/src/core/ext/filters/client_channel/config_selector.cc +3 -1
  77. data/src/core/ext/filters/client_channel/config_selector.h +37 -15
  78. data/src/core/ext/filters/client_channel/connector.h +28 -22
  79. data/src/core/ext/filters/client_channel/dynamic_filters.cc +35 -21
  80. data/src/core/ext/filters/client_channel/dynamic_filters.h +16 -6
  81. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +27 -163
  82. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +19 -24
  83. data/src/core/ext/filters/client_channel/health/health_check_client.cc +141 -581
  84. data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -158
  85. data/src/core/ext/filters/client_channel/http_proxy.cc +110 -109
  86. data/src/core/ext/filters/client_channel/http_proxy.h +20 -0
  87. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +10 -5
  88. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
  89. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  90. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +18 -2
  91. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
  92. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +21 -27
  93. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +350 -213
  94. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
  95. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +5 -1
  96. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  97. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -4
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +11 -4
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -19
  100. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +10 -7
  101. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
  102. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  103. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
  104. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
  105. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +144 -111
  106. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +334 -245
  107. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +865 -0
  108. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +39 -0
  109. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2577 -0
  110. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +205 -195
  111. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +55 -47
  112. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +146 -89
  113. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +418 -275
  114. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +7 -1
  115. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +219 -133
  117. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +84 -76
  118. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +532 -515
  119. data/src/core/ext/filters/client_channel/lb_policy.cc +21 -29
  120. data/src/core/ext/filters/client_channel/lb_policy.h +168 -141
  121. data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -1
  122. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +16 -12
  123. data/src/core/ext/filters/client_channel/lb_policy_registry.h +7 -2
  124. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +31 -67
  125. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +11 -9
  126. data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
  127. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
  128. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
  129. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +151 -0
  130. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +396 -336
  131. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +31 -13
  132. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +33 -26
  133. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +55 -71
  134. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +220 -332
  135. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +52 -30
  136. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +4 -3
  137. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  138. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
  139. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +118 -245
  140. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +70 -73
  141. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +14 -8
  142. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +446 -0
  143. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +213 -0
  144. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +113 -0
  145. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +59 -54
  146. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +786 -452
  147. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +46 -263
  148. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +43 -60
  149. data/src/core/ext/filters/client_channel/retry_filter.cc +2695 -0
  150. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  151. data/src/core/ext/filters/client_channel/retry_service_config.cc +313 -0
  152. data/src/core/ext/filters/client_channel/retry_service_config.h +111 -0
  153. data/src/core/ext/filters/client_channel/retry_throttle.cc +14 -66
  154. data/src/core/ext/filters/client_channel/retry_throttle.h +18 -6
  155. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +72 -40
  156. data/src/core/ext/filters/client_channel/subchannel.cc +319 -464
  157. data/src/core/ext/filters/client_channel/subchannel.h +163 -154
  158. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
  159. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  160. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +48 -9
  161. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +26 -12
  162. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +558 -0
  163. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +226 -0
  164. data/src/core/ext/filters/deadline/deadline_filter.cc +45 -43
  165. data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
  166. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +255 -0
  167. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +62 -0
  168. data/src/core/ext/filters/fault_injection/service_config_parser.cc +179 -0
  169. data/src/core/ext/filters/fault_injection/service_config_parser.h +91 -0
  170. data/src/core/ext/filters/http/client/http_client_filter.cc +92 -538
  171. data/src/core/ext/filters/http/client/http_client_filter.h +27 -4
  172. data/src/core/ext/filters/http/client_authority_filter.cc +42 -111
  173. data/src/core/ext/filters/http/client_authority_filter.h +24 -5
  174. data/src/core/ext/filters/http/http_filters_plugin.cc +54 -73
  175. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +68 -157
  176. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -56
  177. data/src/core/ext/filters/http/server/http_server_filter.cc +91 -464
  178. data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
  179. data/src/core/ext/filters/message_size/message_size_filter.cc +78 -90
  180. data/src/core/ext/filters/message_size/message_size_filter.h +13 -6
  181. data/src/core/ext/filters/rbac/rbac_filter.cc +163 -0
  182. data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
  183. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
  184. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
  185. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
  186. data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
  187. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
  188. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
  189. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  190. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +285 -86
  191. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +15 -13
  192. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +778 -235
  193. data/src/core/ext/transport/chttp2/server/chttp2_server.h +13 -2
  194. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -5
  195. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -1
  196. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +2 -0
  197. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +604 -489
  198. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +29 -5
  199. data/src/core/ext/transport/chttp2/transport/context_list.cc +8 -6
  200. data/src/core/ext/transport/chttp2/transport/context_list.h +7 -6
  201. data/src/core/ext/transport/chttp2/transport/flow_control.cc +72 -49
  202. data/src/core/ext/transport/chttp2/transport/flow_control.h +33 -23
  203. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  204. data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -26
  205. data/src/core/ext/transport/chttp2/transport/frame_data.h +15 -11
  206. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +24 -20
  207. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +10 -7
  208. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +22 -17
  209. data/src/core/ext/transport/chttp2/transport/frame_ping.h +11 -6
  210. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +23 -17
  211. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +10 -6
  212. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +63 -20
  213. data/src/core/ext/transport/chttp2/transport/frame_settings.h +11 -6
  214. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +20 -14
  215. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +8 -6
  216. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  217. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +526 -757
  218. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +198 -73
  219. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +89 -0
  220. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +74 -0
  221. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +836 -1200
  222. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +109 -84
  223. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +257 -0
  224. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +132 -0
  225. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
  226. data/src/core/ext/transport/chttp2/transport/internal.h +80 -79
  227. data/src/core/ext/transport/chttp2/transport/parsing.cc +192 -299
  228. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +15 -11
  229. data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
  230. data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
  231. data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
  232. data/src/core/ext/transport/chttp2/transport/varint.h +41 -28
  233. data/src/core/ext/transport/chttp2/transport/writing.cc +169 -173
  234. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  235. data/src/core/ext/transport/inproc/inproc_transport.cc +190 -216
  236. data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
  237. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  238. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  239. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  240. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  241. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +444 -0
  242. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2156 -0
  243. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  244. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  245. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  246. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  247. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  248. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  249. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  250. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  251. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  252. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  253. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  254. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  255. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  256. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  257. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
  258. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +52 -1
  259. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
  260. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +57 -18
  261. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +144 -118
  262. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +761 -386
  263. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +411 -0
  264. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2161 -0
  265. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +50 -29
  266. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +224 -95
  267. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +341 -256
  268. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1943 -800
  269. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -8
  270. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +50 -24
  271. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +61 -27
  272. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +291 -95
  273. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  274. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  275. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +75 -54
  276. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +398 -190
  277. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -8
  278. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +53 -25
  279. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +252 -143
  280. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1285 -493
  281. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +107 -47
  282. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +562 -172
  283. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +20 -7
  284. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +46 -24
  285. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +17 -23
  286. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +49 -95
  287. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  288. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  289. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +146 -118
  290. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +853 -415
  291. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +142 -92
  292. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +807 -340
  293. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -9
  294. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +65 -31
  295. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +235 -89
  296. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1244 -288
  297. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -6
  298. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +36 -17
  299. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +60 -0
  300. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +169 -0
  301. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +23 -10
  302. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +83 -34
  303. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +30 -10
  304. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +118 -32
  305. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
  306. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +118 -0
  307. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -37
  308. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +214 -109
  309. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +92 -39
  310. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +449 -131
  311. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +71 -54
  312. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +389 -188
  313. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +20 -7
  314. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +42 -21
  315. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +105 -68
  316. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +616 -242
  317. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +106 -75
  318. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +637 -287
  319. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +63 -0
  320. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +234 -0
  321. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +27 -12
  322. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +96 -49
  323. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  324. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  325. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +165 -0
  326. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +716 -0
  327. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +174 -0
  328. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +721 -0
  329. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +131 -100
  330. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +628 -282
  331. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -25
  332. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +338 -115
  333. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +688 -537
  334. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4135 -1819
  335. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +39 -20
  336. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +168 -72
  337. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  338. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  339. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  340. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  341. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  342. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  343. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +28 -15
  344. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +91 -46
  345. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  346. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  347. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  348. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  349. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  350. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  351. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  352. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  353. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  354. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  355. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  356. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  357. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  358. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  359. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +42 -0
  360. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +85 -0
  361. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +96 -0
  362. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +375 -0
  363. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +94 -0
  364. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +433 -0
  365. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
  366. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
  367. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +55 -0
  368. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +168 -0
  369. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +301 -202
  370. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1794 -663
  371. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -2
  372. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +7 -4
  373. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +114 -49
  374. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +652 -198
  375. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +43 -31
  376. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +176 -104
  377. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +128 -84
  378. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +673 -259
  379. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  380. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  381. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +16 -3
  382. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +29 -15
  383. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +99 -73
  384. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +550 -282
  385. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -19
  386. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +121 -62
  387. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +138 -0
  388. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +631 -0
  389. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  390. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  391. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +76 -0
  392. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +249 -0
  393. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  394. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  395. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +29 -14
  396. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +116 -56
  397. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +49 -0
  398. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +117 -0
  399. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -8
  400. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +56 -27
  401. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +20 -7
  402. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +46 -24
  403. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +37 -21
  404. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +137 -69
  405. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +32 -19
  406. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +137 -65
  407. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +60 -0
  408. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +170 -0
  409. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +38 -23
  410. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +170 -83
  411. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +51 -32
  412. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +273 -145
  413. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +54 -37
  414. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +268 -132
  415. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  416. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  417. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +10 -1
  418. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +4 -1
  419. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  420. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  421. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +24 -10
  422. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +76 -36
  423. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +31 -16
  424. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +118 -52
  425. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  426. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  427. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -7
  428. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -19
  429. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  430. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  431. data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
  432. data/src/core/ext/upb-generated/google/api/annotations.upb.h +24 -1
  433. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +155 -126
  434. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +791 -385
  435. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +167 -118
  436. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +886 -390
  437. data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
  438. data/src/core/ext/upb-generated/google/api/http.upb.h +236 -115
  439. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  440. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  441. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
  442. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +46 -22
  443. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -283
  444. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2263 -1053
  445. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
  446. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +44 -20
  447. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
  448. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +29 -15
  449. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
  450. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +197 -93
  451. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
  452. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +44 -20
  453. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
  454. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +296 -149
  455. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
  456. data/src/core/ext/upb-generated/google/rpc/status.upb.h +60 -30
  457. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  458. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  459. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
  460. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +111 -48
  461. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
  462. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +753 -365
  463. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
  464. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +90 -41
  465. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
  466. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +70 -35
  467. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
  468. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +448 -232
  469. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
  470. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +208 -0
  471. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  472. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  473. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
  474. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +213 -57
  475. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +32 -8
  476. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +62 -18
  477. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
  478. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +17 -1
  479. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
  480. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -20
  481. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +31 -5
  482. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +57 -18
  483. data/src/core/ext/upb-generated/validate/validate.upb.c +407 -295
  484. data/src/core/ext/upb-generated/validate/validate.upb.h +3021 -1221
  485. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  486. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  487. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  488. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  489. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  490. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  491. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
  492. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +290 -0
  493. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  494. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  495. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +41 -0
  496. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +79 -0
  497. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +66 -0
  498. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +200 -0
  499. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +56 -0
  500. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +115 -0
  501. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  502. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  503. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +49 -0
  504. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +127 -0
  505. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +68 -0
  506. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +240 -0
  507. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +49 -0
  508. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +121 -0
  509. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
  510. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +187 -0
  511. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
  512. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
  513. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  514. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  515. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  516. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  517. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  518. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  519. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +46 -0
  520. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +103 -0
  521. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  522. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  523. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  524. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  525. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +309 -0
  526. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  527. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  528. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  529. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  530. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  531. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  532. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  533. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  534. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  535. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  536. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  537. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  538. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  539. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  540. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  541. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +22 -12
  542. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  543. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
  544. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  545. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +183 -215
  546. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  547. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +393 -0
  548. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  549. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +60 -62
  550. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  551. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +497 -498
  552. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +80 -70
  553. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
  554. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  555. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +28 -23
  556. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  557. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  558. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  559. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +17 -32
  560. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
  561. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
  562. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  563. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +225 -224
  564. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +83 -58
  565. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +140 -115
  566. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
  567. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +16 -19
  568. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  569. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +24 -43
  570. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
  571. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  572. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  573. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +23 -51
  574. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  575. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +182 -187
  576. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
  577. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
  578. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  579. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +267 -197
  580. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +61 -31
  581. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +15 -20
  582. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  583. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +55 -0
  584. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  585. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +16 -18
  586. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
  587. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +46 -31
  588. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  589. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +49 -0
  590. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  591. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +69 -80
  592. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  593. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +98 -83
  594. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +23 -13
  595. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
  596. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  597. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
  598. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  599. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +157 -150
  600. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +21 -16
  601. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +155 -150
  602. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  603. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +88 -0
  604. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  605. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +40 -39
  606. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  607. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  608. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  609. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +125 -0
  610. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  611. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +134 -0
  612. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
  613. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  614. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  615. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +85 -67
  616. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +12 -7
  617. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +826 -845
  618. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +166 -151
  619. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
  620. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  621. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  622. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  623. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  624. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  625. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  626. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  627. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +32 -39
  628. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  629. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  630. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  631. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  632. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  633. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  634. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  635. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  636. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  637. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  638. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  639. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  640. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  641. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  642. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  643. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +50 -0
  644. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  645. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +92 -0
  646. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  647. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +117 -0
  648. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  649. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  650. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  651. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +78 -0
  652. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  653. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +428 -388
  654. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +67 -52
  655. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +22 -22
  656. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  657. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +174 -130
  658. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +26 -16
  659. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +57 -71
  660. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  661. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +217 -212
  662. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
  663. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  664. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  665. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
  666. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  667. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +99 -123
  668. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +24 -19
  669. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +19 -26
  670. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  671. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +153 -0
  672. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  673. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  674. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  675. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +56 -0
  676. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  677. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  678. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  679. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +24 -27
  680. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  681. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +54 -0
  682. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  683. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
  684. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  685. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
  686. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  687. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +45 -48
  688. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  689. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +40 -47
  690. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  691. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +58 -0
  692. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  693. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
  694. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  695. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
  696. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  697. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
  698. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  699. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  700. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  701. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
  702. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  703. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  704. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  705. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
  706. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  707. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
  708. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  709. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  710. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  711. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
  712. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  713. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  714. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  715. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
  716. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  717. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  718. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  719. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  720. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  721. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
  722. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  723. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  724. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  725. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
  726. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  727. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +107 -164
  728. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  729. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
  730. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  731. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
  732. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  733. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
  734. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  735. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
  736. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  737. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
  738. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  739. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +9 -14
  740. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  741. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  742. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  743. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  744. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  745. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +10 -18
  746. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  747. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +24 -33
  748. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  749. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +9 -8
  750. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  751. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +10 -13
  752. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  753. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +10 -14
  754. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  755. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +189 -213
  756. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  757. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  758. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  759. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  760. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  761. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  762. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  763. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  764. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  765. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  766. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  767. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +38 -0
  768. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  769. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +56 -0
  770. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  771. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +39 -0
  772. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  773. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  774. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  775. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +45 -0
  776. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  777. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +61 -0
  778. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  779. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +46 -0
  780. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  781. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  782. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  783. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  784. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  785. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  786. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  787. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
  788. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  789. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  790. data/src/core/ext/xds/certificate_provider_registry.cc +3 -3
  791. data/src/core/ext/xds/certificate_provider_store.cc +10 -0
  792. data/src/core/ext/xds/certificate_provider_store.h +13 -4
  793. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +7 -7
  794. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +4 -4
  795. data/src/core/ext/xds/upb_utils.h +67 -0
  796. data/src/core/ext/xds/xds_api.cc +347 -1925
  797. data/src/core/ext/xds/xds_api.h +127 -405
  798. data/src/core/ext/xds/xds_bootstrap.cc +324 -274
  799. data/src/core/ext/xds/xds_bootstrap.h +61 -26
  800. data/src/core/ext/xds/xds_certificate_provider.cc +192 -81
  801. data/src/core/ext/xds/xds_certificate_provider.h +92 -45
  802. data/src/core/ext/xds/xds_channel_args.h +5 -2
  803. data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
  804. data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
  805. data/src/core/ext/xds/xds_client.cc +1166 -867
  806. data/src/core/ext/xds/xds_client.h +172 -160
  807. data/src/core/ext/xds/xds_client_stats.cc +31 -29
  808. data/src/core/ext/xds/xds_client_stats.h +17 -15
  809. data/src/core/ext/xds/xds_cluster.cc +543 -0
  810. data/src/core/ext/xds/xds_cluster.h +111 -0
  811. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  812. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  813. data/src/core/ext/xds/xds_common_types.cc +388 -0
  814. data/src/core/ext/xds/xds_common_types.h +95 -0
  815. data/src/core/ext/xds/xds_endpoint.cc +371 -0
  816. data/src/core/ext/xds/xds_endpoint.h +135 -0
  817. data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
  818. data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
  819. data/src/core/ext/xds/xds_http_filters.cc +122 -0
  820. data/src/core/ext/xds/xds_http_filters.h +133 -0
  821. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  822. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  823. data/src/core/ext/xds/xds_listener.cc +1049 -0
  824. data/src/core/ext/xds/xds_listener.h +220 -0
  825. data/src/core/ext/xds/xds_resource_type.cc +33 -0
  826. data/src/core/ext/xds/xds_resource_type.h +98 -0
  827. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  828. data/src/core/ext/xds/xds_route_config.cc +1122 -0
  829. data/src/core/ext/xds/xds_route_config.h +218 -0
  830. data/src/core/ext/xds/xds_routing.cc +250 -0
  831. data/src/core/ext/xds/xds_routing.h +101 -0
  832. data/src/core/ext/xds/xds_server_config_fetcher.cc +1250 -66
  833. data/src/core/lib/address_utils/parse_address.cc +340 -0
  834. data/src/core/lib/address_utils/parse_address.h +82 -0
  835. data/src/core/lib/address_utils/sockaddr_utils.cc +442 -0
  836. data/src/core/lib/address_utils/sockaddr_utils.h +98 -0
  837. data/src/core/lib/avl/avl.h +454 -88
  838. data/src/core/lib/backoff/backoff.cc +9 -38
  839. data/src/core/lib/backoff/backoff.h +11 -11
  840. data/src/core/lib/channel/call_finalization.h +90 -0
  841. data/src/core/lib/channel/call_tracer.h +94 -0
  842. data/src/core/lib/channel/channel_args.cc +212 -36
  843. data/src/core/lib/channel/channel_args.h +246 -3
  844. data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
  845. data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
  846. data/src/core/lib/channel/channel_stack.cc +77 -17
  847. data/src/core/lib/channel/channel_stack.h +105 -18
  848. data/src/core/lib/channel/channel_stack_builder.cc +19 -288
  849. data/src/core/lib/channel/channel_stack_builder.h +107 -158
  850. data/src/core/lib/channel/channel_stack_builder_impl.cc +97 -0
  851. data/src/core/lib/channel/channel_stack_builder_impl.h +45 -0
  852. data/src/core/lib/channel/channel_trace.cc +13 -20
  853. data/src/core/lib/channel/channel_trace.h +8 -4
  854. data/src/core/lib/channel/channelz.cc +156 -60
  855. data/src/core/lib/channel/channelz.h +73 -32
  856. data/src/core/lib/channel/channelz_registry.cc +27 -19
  857. data/src/core/lib/channel/channelz_registry.h +11 -10
  858. data/src/core/lib/channel/connected_channel.cc +30 -36
  859. data/src/core/lib/channel/connected_channel.h +3 -2
  860. data/src/core/lib/channel/context.h +14 -0
  861. data/src/core/lib/channel/promise_based_filter.cc +1257 -0
  862. data/src/core/lib/channel/promise_based_filter.h +570 -0
  863. data/src/core/lib/channel/status_util.cc +14 -2
  864. data/src/core/lib/channel/status_util.h +9 -3
  865. data/src/core/lib/compression/compression.cc +22 -114
  866. data/src/core/lib/compression/compression_internal.cc +173 -206
  867. data/src/core/lib/compression/compression_internal.h +64 -69
  868. data/src/core/lib/compression/message_compress.cc +13 -13
  869. data/src/core/lib/compression/message_compress.h +2 -2
  870. data/src/core/lib/config/core_configuration.cc +107 -0
  871. data/src/core/lib/config/core_configuration.h +197 -0
  872. data/src/core/lib/debug/stats.cc +1 -1
  873. data/src/core/lib/debug/stats.h +2 -1
  874. data/src/core/lib/debug/stats_data.cc +17 -20
  875. data/src/core/lib/debug/stats_data.h +19 -21
  876. data/src/core/lib/debug/trace.cc +1 -0
  877. data/src/core/lib/debug/trace.h +4 -3
  878. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +48 -0
  879. data/src/core/lib/event_engine/channel_args_endpoint_config.h +43 -0
  880. data/src/core/lib/event_engine/default_event_engine_factory.cc +33 -0
  881. data/src/core/lib/event_engine/event_engine.cc +62 -0
  882. data/src/core/lib/event_engine/event_engine_factory.h +41 -0
  883. data/src/core/lib/event_engine/handle_containers.h +67 -0
  884. data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
  885. data/src/core/lib/event_engine/iomgr_engine.h +118 -0
  886. data/src/core/lib/event_engine/memory_allocator.cc +74 -0
  887. data/src/core/lib/event_engine/resolved_address.cc +41 -0
  888. data/src/core/lib/event_engine/slice.cc +102 -0
  889. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  890. data/src/core/lib/event_engine/trace.cc +18 -0
  891. data/src/core/lib/event_engine/trace.h +30 -0
  892. data/src/core/lib/gpr/alloc.cc +4 -3
  893. data/src/core/lib/gpr/atm.cc +1 -1
  894. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  895. data/src/core/lib/gpr/env_linux.cc +1 -2
  896. data/src/core/lib/gpr/env_posix.cc +2 -3
  897. data/src/core/lib/gpr/log.cc +13 -3
  898. data/src/core/lib/gpr/log_android.cc +3 -2
  899. data/src/core/lib/gpr/log_linux.cc +7 -4
  900. data/src/core/lib/gpr/log_posix.cc +6 -3
  901. data/src/core/lib/gpr/murmur_hash.cc +4 -2
  902. data/src/core/lib/gpr/string.cc +2 -2
  903. data/src/core/lib/gpr/string.h +2 -2
  904. data/src/core/lib/gpr/sync.cc +2 -2
  905. data/src/core/lib/gpr/sync_abseil.cc +10 -12
  906. data/src/core/lib/gpr/sync_posix.cc +4 -3
  907. data/src/core/lib/gpr/sync_windows.cc +2 -2
  908. data/src/core/lib/gpr/time.cc +5 -3
  909. data/src/core/lib/gpr/time_windows.cc +3 -2
  910. data/src/core/lib/gpr/tls.h +124 -40
  911. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  912. data/src/core/lib/gpr/useful.h +97 -32
  913. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  914. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  915. data/src/core/lib/gprpp/bitset.h +211 -0
  916. data/src/core/lib/gprpp/chunked_vector.h +257 -0
  917. data/src/core/lib/gprpp/construct_destruct.h +40 -0
  918. data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
  919. data/src/core/lib/gprpp/debug_location.h +2 -0
  920. data/src/core/lib/gprpp/dual_ref_counted.h +27 -31
  921. data/src/core/lib/gprpp/examine_stack.h +0 -1
  922. data/src/core/lib/gprpp/fork.cc +17 -18
  923. data/src/core/lib/gprpp/fork.h +4 -4
  924. data/src/core/lib/gprpp/global_config.h +2 -5
  925. data/src/core/lib/gprpp/global_config_env.cc +16 -15
  926. data/src/core/lib/gprpp/global_config_env.h +5 -3
  927. data/src/core/lib/gprpp/global_config_generic.h +0 -4
  928. data/src/core/lib/gprpp/host_port.cc +2 -0
  929. data/src/core/lib/gprpp/manual_constructor.h +11 -10
  930. data/src/core/lib/gprpp/match.h +75 -0
  931. data/src/core/lib/gprpp/memory.h +8 -6
  932. data/src/core/lib/gprpp/mpscq.cc +9 -9
  933. data/src/core/lib/gprpp/mpscq.h +6 -5
  934. data/src/core/lib/gprpp/orphanable.h +5 -8
  935. data/src/core/lib/gprpp/overload.h +59 -0
  936. data/src/core/lib/gprpp/ref_counted.h +49 -35
  937. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -5
  938. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  939. data/src/core/lib/gprpp/stat.h +0 -2
  940. data/src/core/lib/gprpp/stat_posix.cc +7 -2
  941. data/src/core/lib/gprpp/status_helper.cc +439 -0
  942. data/src/core/lib/gprpp/status_helper.h +185 -0
  943. data/src/core/lib/gprpp/sync.h +109 -44
  944. data/src/core/lib/gprpp/table.h +444 -0
  945. data/src/core/lib/gprpp/thd.h +3 -6
  946. data/src/core/lib/gprpp/thd_posix.cc +9 -7
  947. data/src/core/lib/gprpp/thd_windows.cc +6 -11
  948. data/src/core/lib/gprpp/time.cc +206 -0
  949. data/src/core/lib/gprpp/time.h +297 -0
  950. data/src/core/lib/gprpp/time_util.cc +81 -0
  951. data/src/core/lib/gprpp/time_util.h +42 -0
  952. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  953. data/src/core/lib/http/format_request.cc +58 -25
  954. data/src/core/lib/http/format_request.h +10 -6
  955. data/src/core/lib/http/httpcli.cc +306 -209
  956. data/src/core/lib/http/httpcli.h +215 -85
  957. data/src/core/lib/http/httpcli_security_connector.cc +72 -83
  958. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  959. data/src/core/lib/http/parser.cc +98 -27
  960. data/src/core/lib/http/parser.h +20 -6
  961. data/src/core/lib/iomgr/buffer_list.cc +16 -17
  962. data/src/core/lib/iomgr/buffer_list.h +23 -25
  963. data/src/core/lib/iomgr/call_combiner.cc +55 -23
  964. data/src/core/lib/iomgr/call_combiner.h +12 -14
  965. data/src/core/lib/iomgr/cfstream_handle.cc +6 -6
  966. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  967. data/src/core/lib/iomgr/closure.h +33 -12
  968. data/src/core/lib/iomgr/combiner.cc +46 -36
  969. data/src/core/lib/iomgr/combiner.h +3 -2
  970. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  971. data/src/core/lib/iomgr/endpoint.cc +5 -9
  972. data/src/core/lib/iomgr/endpoint.h +9 -10
  973. data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -58
  974. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  975. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  976. data/src/core/lib/iomgr/endpoint_pair_posix.cc +12 -9
  977. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  978. data/src/core/lib/iomgr/error.cc +270 -99
  979. data/src/core/lib/iomgr/error.h +278 -114
  980. data/src/core/lib/iomgr/error_cfstream.cc +10 -4
  981. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  982. data/src/core/lib/iomgr/error_internal.h +6 -1
  983. data/src/core/lib/iomgr/ev_apple.cc +19 -15
  984. data/src/core/lib/iomgr/ev_apple.h +1 -1
  985. data/src/core/lib/iomgr/ev_epoll1_linux.cc +45 -51
  986. data/src/core/lib/iomgr/ev_poll_posix.cc +73 -73
  987. data/src/core/lib/iomgr/ev_posix.cc +22 -26
  988. data/src/core/lib/iomgr/ev_posix.h +9 -9
  989. data/src/core/lib/iomgr/exec_ctx.cc +29 -98
  990. data/src/core/lib/iomgr/exec_ctx.h +32 -58
  991. data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
  992. data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
  993. data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
  994. data/src/core/lib/iomgr/executor/threadpool.h +4 -3
  995. data/src/core/lib/iomgr/executor.cc +37 -46
  996. data/src/core/lib/iomgr/executor.h +3 -3
  997. data/src/core/lib/iomgr/fork_posix.cc +2 -1
  998. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  999. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  1000. data/src/core/lib/iomgr/internal_errqueue.cc +41 -49
  1001. data/src/core/lib/iomgr/internal_errqueue.h +1 -6
  1002. data/src/core/lib/iomgr/iocp_windows.cc +10 -9
  1003. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  1004. data/src/core/lib/iomgr/iomgr.cc +5 -4
  1005. data/src/core/lib/iomgr/iomgr.h +3 -3
  1006. data/src/core/lib/iomgr/iomgr_fwd.h +25 -0
  1007. data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
  1008. data/src/core/lib/iomgr/iomgr_internal.h +6 -5
  1009. data/src/core/lib/iomgr/iomgr_posix.cc +5 -4
  1010. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +44 -15
  1011. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  1012. data/src/core/lib/iomgr/load_file.cc +6 -6
  1013. data/src/core/lib/iomgr/load_file.h +2 -2
  1014. data/src/core/lib/iomgr/lockfree_event.cc +23 -5
  1015. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  1016. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  1017. data/src/core/lib/iomgr/polling_entity.h +6 -0
  1018. data/src/core/lib/iomgr/pollset.cc +5 -5
  1019. data/src/core/lib/iomgr/pollset.h +9 -9
  1020. data/src/core/lib/iomgr/pollset_set.h +1 -2
  1021. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  1022. data/src/core/lib/iomgr/pollset_windows.cc +6 -6
  1023. data/src/core/lib/iomgr/port.h +28 -17
  1024. data/src/core/lib/iomgr/python_util.h +3 -2
  1025. data/src/core/lib/iomgr/resolve_address.cc +17 -23
  1026. data/src/core/lib/iomgr/resolve_address.h +58 -46
  1027. data/src/core/lib/iomgr/resolve_address_impl.h +58 -0
  1028. data/src/core/lib/iomgr/resolve_address_posix.cc +84 -78
  1029. data/src/core/lib/iomgr/resolve_address_posix.h +50 -0
  1030. data/src/core/lib/iomgr/resolve_address_windows.cc +95 -85
  1031. data/src/core/lib/iomgr/resolve_address_windows.h +50 -0
  1032. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1033. data/src/core/lib/iomgr/sockaddr.h +3 -3
  1034. data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
  1035. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  1036. data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
  1037. data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
  1038. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  1039. data/src/core/lib/iomgr/socket_mutator.cc +17 -4
  1040. data/src/core/lib/iomgr/socket_mutator.h +27 -3
  1041. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -44
  1042. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  1043. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  1044. data/src/core/lib/iomgr/socket_utils_posix.h +22 -22
  1045. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  1046. data/src/core/lib/iomgr/tcp_client.cc +1 -1
  1047. data/src/core/lib/iomgr/tcp_client.h +5 -2
  1048. data/src/core/lib/iomgr/tcp_client_cfstream.cc +22 -30
  1049. data/src/core/lib/iomgr/tcp_client_posix.cc +50 -50
  1050. data/src/core/lib/iomgr/tcp_client_posix.h +7 -6
  1051. data/src/core/lib/iomgr/tcp_client_windows.cc +26 -19
  1052. data/src/core/lib/iomgr/tcp_posix.cc +211 -204
  1053. data/src/core/lib/iomgr/tcp_posix.h +17 -12
  1054. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  1055. data/src/core/lib/iomgr/tcp_server.h +16 -14
  1056. data/src/core/lib/iomgr/tcp_server_posix.cc +91 -58
  1057. data/src/core/lib/iomgr/tcp_server_utils_posix.h +34 -29
  1058. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +53 -47
  1059. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +18 -15
  1060. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  1061. data/src/core/lib/iomgr/tcp_server_windows.cc +37 -32
  1062. data/src/core/lib/iomgr/tcp_windows.cc +42 -56
  1063. data/src/core/lib/iomgr/tcp_windows.h +3 -3
  1064. data/src/core/lib/iomgr/timer.cc +3 -2
  1065. data/src/core/lib/iomgr/timer.h +17 -8
  1066. data/src/core/lib/iomgr/timer_generic.cc +118 -129
  1067. data/src/core/lib/iomgr/timer_generic.h +1 -0
  1068. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  1069. data/src/core/lib/iomgr/timer_manager.cc +17 -16
  1070. data/src/core/lib/iomgr/unix_sockets_posix.cc +25 -39
  1071. data/src/core/lib/iomgr/unix_sockets_posix.h +6 -10
  1072. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -18
  1073. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  1074. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
  1075. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
  1076. data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
  1077. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  1078. data/src/core/lib/iomgr/work_serializer.cc +120 -44
  1079. data/src/core/lib/iomgr/work_serializer.h +33 -5
  1080. data/src/core/lib/json/json.h +2 -3
  1081. data/src/core/lib/json/json_reader.cc +106 -59
  1082. data/src/core/lib/json/json_util.cc +78 -3
  1083. data/src/core/lib/json/json_util.h +77 -118
  1084. data/src/core/lib/json/json_writer.cc +6 -4
  1085. data/src/core/lib/matchers/matchers.cc +327 -0
  1086. data/src/core/lib/matchers/matchers.h +160 -0
  1087. data/src/core/lib/profiling/basic_timers.cc +8 -6
  1088. data/src/core/lib/profiling/stap_timers.cc +2 -2
  1089. data/src/core/lib/promise/activity.cc +121 -0
  1090. data/src/core/lib/promise/activity.h +540 -0
  1091. data/src/core/lib/promise/arena_promise.h +198 -0
  1092. data/src/core/lib/promise/call_push_pull.h +148 -0
  1093. data/src/core/lib/promise/context.h +86 -0
  1094. data/src/core/lib/promise/detail/basic_seq.h +496 -0
  1095. data/src/core/lib/promise/detail/promise_factory.h +188 -0
  1096. data/src/core/lib/promise/detail/promise_like.h +85 -0
  1097. data/src/core/lib/promise/detail/status.h +50 -0
  1098. data/src/core/lib/promise/detail/switch.h +1455 -0
  1099. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  1100. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  1101. data/src/core/lib/promise/latch.h +103 -0
  1102. data/src/core/lib/promise/loop.h +135 -0
  1103. data/src/core/lib/promise/map.h +88 -0
  1104. data/src/core/lib/promise/poll.h +66 -0
  1105. data/src/core/lib/promise/promise.h +95 -0
  1106. data/src/core/lib/promise/race.h +83 -0
  1107. data/src/core/lib/promise/seq.h +87 -0
  1108. data/src/core/lib/promise/sleep.cc +76 -0
  1109. data/src/core/lib/promise/sleep.h +76 -0
  1110. data/src/core/lib/promise/try_seq.h +157 -0
  1111. data/src/core/lib/resolver/resolver.cc +79 -0
  1112. data/src/core/lib/resolver/resolver.h +135 -0
  1113. data/src/core/lib/resolver/resolver_factory.h +75 -0
  1114. data/src/core/lib/resolver/resolver_registry.cc +156 -0
  1115. data/src/core/lib/resolver/resolver_registry.h +113 -0
  1116. data/src/core/lib/resolver/server_address.cc +176 -0
  1117. data/src/core/lib/resolver/server_address.h +144 -0
  1118. data/src/core/lib/resource_quota/api.cc +96 -0
  1119. data/src/core/lib/resource_quota/api.h +43 -0
  1120. data/src/core/lib/resource_quota/arena.cc +101 -0
  1121. data/src/core/lib/resource_quota/arena.h +141 -0
  1122. data/src/core/lib/resource_quota/memory_quota.cc +520 -0
  1123. data/src/core/lib/resource_quota/memory_quota.h +476 -0
  1124. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  1125. data/src/core/lib/resource_quota/resource_quota.h +74 -0
  1126. data/src/core/lib/resource_quota/thread_quota.cc +45 -0
  1127. data/src/core/lib/resource_quota/thread_quota.h +61 -0
  1128. data/src/core/lib/resource_quota/trace.cc +19 -0
  1129. data/src/core/lib/resource_quota/trace.h +24 -0
  1130. data/src/core/lib/security/authorization/authorization_engine.h +13 -53
  1131. data/src/core/lib/security/authorization/authorization_policy_provider.h +40 -0
  1132. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  1133. data/src/core/lib/security/authorization/evaluate_args.cc +143 -79
  1134. data/src/core/lib/security/authorization/evaluate_args.h +50 -17
  1135. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  1136. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  1137. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +109 -0
  1138. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
  1139. data/src/core/lib/security/authorization/matchers.cc +227 -0
  1140. data/src/core/lib/security/authorization/matchers.h +211 -0
  1141. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  1142. data/src/core/lib/security/authorization/rbac_policy.h +171 -0
  1143. data/src/core/lib/security/context/security_context.cc +15 -10
  1144. data/src/core/lib/security/context/security_context.h +9 -2
  1145. data/src/core/lib/security/credentials/alts/alts_credentials.cc +14 -6
  1146. data/src/core/lib/security/credentials/alts/alts_credentials.h +11 -1
  1147. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  1148. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  1149. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  1150. data/src/core/lib/security/credentials/call_creds_util.cc +89 -0
  1151. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  1152. data/src/core/lib/security/credentials/channel_creds_registry.h +98 -0
  1153. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  1154. data/src/core/lib/security/credentials/composite/composite_credentials.cc +31 -85
  1155. data/src/core/lib/security/credentials/composite/composite_credentials.h +25 -11
  1156. data/src/core/lib/security/credentials/credentials.cc +11 -10
  1157. data/src/core/lib/security/credentials/credentials.h +90 -83
  1158. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +160 -73
  1159. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +23 -13
  1160. data/src/core/lib/security/credentials/external/aws_request_signer.cc +5 -4
  1161. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  1162. data/src/core/lib/security/credentials/external/external_account_credentials.cc +132 -82
  1163. data/src/core/lib/security/credentials/external/external_account_credentials.h +15 -17
  1164. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +6 -6
  1165. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  1166. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +46 -27
  1167. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -7
  1168. data/src/core/lib/security/credentials/fake/fake_credentials.cc +33 -27
  1169. data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
  1170. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
  1171. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +117 -47
  1172. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -4
  1173. data/src/core/lib/security/credentials/iam/iam_credentials.cc +25 -28
  1174. data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
  1175. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +31 -26
  1176. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  1177. data/src/core/lib/security/credentials/jwt/json_token.cc +7 -12
  1178. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  1179. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +58 -52
  1180. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +27 -15
  1181. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +66 -62
  1182. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
  1183. data/src/core/lib/security/credentials/local/local_credentials.cc +14 -7
  1184. data/src/core/lib/security/credentials/local/local_credentials.h +11 -1
  1185. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +178 -193
  1186. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +62 -34
  1187. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +100 -155
  1188. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
  1189. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -19
  1190. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -5
  1191. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +11 -9
  1192. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +19 -15
  1193. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +90 -25
  1194. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +67 -12
  1195. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +234 -0
  1196. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +169 -0
  1197. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +35 -85
  1198. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +75 -151
  1199. data/src/core/lib/security/credentials/tls/tls_credentials.cc +42 -17
  1200. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -1
  1201. data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
  1202. data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
  1203. data/src/core/lib/security/credentials/xds/xds_credentials.cc +134 -63
  1204. data/src/core/lib/security/credentials/xds/xds_credentials.h +40 -9
  1205. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -18
  1206. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  1207. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +25 -26
  1208. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -3
  1209. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +10 -20
  1210. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -16
  1211. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  1212. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +5 -6
  1213. data/src/core/lib/security/security_connector/local/local_security_connector.cc +34 -26
  1214. data/src/core/lib/security/security_connector/security_connector.cc +9 -16
  1215. data/src/core/lib/security/security_connector/security_connector.h +34 -25
  1216. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +29 -25
  1217. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
  1218. data/src/core/lib/security/security_connector/ssl_utils.cc +76 -43
  1219. data/src/core/lib/security/security_connector/ssl_utils.h +17 -21
  1220. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +440 -283
  1221. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +118 -79
  1222. data/src/core/lib/security/transport/auth_filters.h +39 -5
  1223. data/src/core/lib/security/transport/client_auth_filter.cc +96 -355
  1224. data/src/core/lib/security/transport/secure_endpoint.cc +221 -151
  1225. data/src/core/lib/security/transport/secure_endpoint.h +2 -1
  1226. data/src/core/lib/security/transport/security_handshaker.cc +174 -96
  1227. data/src/core/lib/security/transport/security_handshaker.h +3 -2
  1228. data/src/core/lib/security/transport/server_auth_filter.cc +61 -50
  1229. data/src/core/lib/security/transport/tsi_error.cc +5 -6
  1230. data/src/core/lib/security/transport/tsi_error.h +2 -1
  1231. data/src/core/lib/security/util/json_util.cc +8 -10
  1232. data/src/core/lib/security/util/json_util.h +1 -1
  1233. data/src/core/lib/service_config/service_config.h +78 -0
  1234. data/src/core/lib/service_config/service_config_call_data.h +75 -0
  1235. data/src/core/lib/service_config/service_config_impl.cc +237 -0
  1236. data/src/core/lib/service_config/service_config_impl.h +132 -0
  1237. data/src/core/lib/service_config/service_config_parser.cc +101 -0
  1238. data/src/core/lib/service_config/service_config_parser.h +113 -0
  1239. data/src/core/lib/slice/b64.cc +1 -1
  1240. data/src/core/lib/slice/b64.h +2 -0
  1241. data/src/core/lib/slice/percent_encoding.cc +87 -97
  1242. data/src/core/lib/slice/percent_encoding.h +22 -33
  1243. data/src/core/lib/slice/slice.cc +83 -192
  1244. data/src/core/lib/slice/slice.h +389 -0
  1245. data/src/core/lib/slice/slice_api.cc +39 -0
  1246. data/src/core/lib/slice/slice_buffer.cc +59 -29
  1247. data/src/core/lib/slice/slice_buffer.h +106 -0
  1248. data/src/core/lib/slice/slice_buffer_api.cc +35 -0
  1249. data/src/core/lib/slice/slice_internal.h +18 -278
  1250. data/src/core/lib/slice/slice_refcount.cc +35 -0
  1251. data/src/core/lib/slice/slice_refcount.h +45 -0
  1252. data/src/core/lib/slice/slice_refcount_base.h +60 -0
  1253. data/src/core/lib/slice/slice_split.cc +103 -0
  1254. data/src/core/lib/slice/slice_split.h +36 -0
  1255. data/src/core/lib/slice/slice_string_helpers.cc +2 -81
  1256. data/src/core/lib/slice/slice_string_helpers.h +1 -15
  1257. data/src/core/lib/surface/api_trace.cc +2 -1
  1258. data/src/core/lib/surface/api_trace.h +1 -0
  1259. data/src/core/lib/surface/builtins.cc +54 -0
  1260. data/src/core/lib/surface/builtins.h +26 -0
  1261. data/src/core/lib/surface/byte_buffer.cc +7 -1
  1262. data/src/core/lib/surface/byte_buffer_reader.cc +5 -5
  1263. data/src/core/lib/surface/call.cc +1186 -1256
  1264. data/src/core/lib/surface/call.h +29 -24
  1265. data/src/core/lib/surface/call_details.cc +4 -4
  1266. data/src/core/lib/surface/call_log_batch.cc +9 -3
  1267. data/src/core/lib/surface/call_test_only.h +4 -1
  1268. data/src/core/lib/surface/channel.cc +221 -315
  1269. data/src/core/lib/surface/channel.h +102 -72
  1270. data/src/core/lib/surface/channel_init.cc +22 -76
  1271. data/src/core/lib/surface/channel_init.h +45 -39
  1272. data/src/core/lib/surface/channel_ping.cc +10 -5
  1273. data/src/core/lib/surface/channel_stack_type.cc +0 -1
  1274. data/src/core/lib/surface/channel_stack_type.h +0 -2
  1275. data/src/core/lib/surface/completion_queue.cc +150 -151
  1276. data/src/core/lib/surface/completion_queue.h +8 -3
  1277. data/src/core/lib/surface/completion_queue_factory.cc +4 -3
  1278. data/src/core/lib/surface/completion_queue_factory.h +1 -2
  1279. data/src/core/lib/surface/event_string.cc +1 -6
  1280. data/src/core/lib/surface/event_string.h +1 -1
  1281. data/src/core/lib/surface/init.cc +82 -90
  1282. data/src/core/lib/surface/init.h +2 -4
  1283. data/src/core/lib/surface/lame_client.cc +80 -92
  1284. data/src/core/lib/surface/lame_client.h +42 -3
  1285. data/src/core/lib/surface/metadata_array.cc +4 -2
  1286. data/src/core/lib/surface/server.cc +201 -220
  1287. data/src/core/lib/surface/server.h +160 -64
  1288. data/src/core/lib/surface/validate_metadata.cc +57 -29
  1289. data/src/core/lib/surface/validate_metadata.h +6 -2
  1290. data/src/core/lib/surface/version.cc +2 -2
  1291. data/src/core/lib/transport/bdp_estimator.cc +14 -13
  1292. data/src/core/lib/transport/bdp_estimator.h +4 -5
  1293. data/src/core/lib/transport/byte_stream.cc +15 -8
  1294. data/src/core/lib/transport/byte_stream.h +14 -9
  1295. data/src/core/lib/transport/connectivity_state.cc +15 -10
  1296. data/src/core/lib/transport/connectivity_state.h +4 -5
  1297. data/src/core/lib/transport/error_utils.cc +71 -30
  1298. data/src/core/lib/transport/error_utils.h +18 -7
  1299. data/src/core/lib/transport/handshaker.cc +227 -0
  1300. data/src/core/lib/transport/handshaker.h +168 -0
  1301. data/src/core/lib/transport/handshaker_factory.h +49 -0
  1302. data/src/core/lib/transport/handshaker_registry.cc +54 -0
  1303. data/src/core/lib/transport/handshaker_registry.h +72 -0
  1304. data/src/core/lib/transport/http_connect_handshaker.cc +401 -0
  1305. data/src/core/lib/transport/http_connect_handshaker.h +42 -0
  1306. data/src/core/lib/transport/metadata_batch.cc +213 -318
  1307. data/src/core/lib/transport/metadata_batch.h +1230 -158
  1308. data/src/core/lib/transport/parsed_metadata.cc +39 -0
  1309. data/src/core/lib/transport/parsed_metadata.h +408 -0
  1310. data/src/core/lib/transport/pid_controller.cc +4 -4
  1311. data/src/core/lib/transport/status_conversion.cc +4 -2
  1312. data/src/core/lib/transport/status_conversion.h +3 -3
  1313. data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
  1314. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  1315. data/src/core/lib/transport/timeout_encoding.cc +203 -70
  1316. data/src/core/lib/transport/timeout_encoding.h +44 -10
  1317. data/src/core/lib/transport/transport.cc +33 -52
  1318. data/src/core/lib/transport/transport.h +137 -10
  1319. data/src/core/lib/transport/transport_impl.h +24 -0
  1320. data/src/core/lib/transport/transport_op_string.cc +21 -44
  1321. data/src/core/lib/uri/uri_parser.cc +248 -66
  1322. data/src/core/lib/uri/uri_parser.h +39 -25
  1323. data/src/core/plugin_registry/grpc_plugin_registry.cc +84 -90
  1324. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1325. data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
  1326. data/src/core/tsi/alts/crypt/gsec.h +5 -0
  1327. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  1328. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  1329. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +54 -55
  1330. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  1331. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1332. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +56 -42
  1333. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  1334. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  1335. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1336. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1337. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -5
  1338. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1339. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  1340. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  1341. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  1342. data/src/core/tsi/fake_transport_security.cc +26 -9
  1343. data/src/core/tsi/local_transport_security.cc +42 -87
  1344. data/src/core/tsi/local_transport_security.h +1 -4
  1345. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1346. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1347. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -6
  1348. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
  1349. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
  1350. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +8 -11
  1351. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +4 -2
  1352. data/src/core/tsi/ssl_transport_security.cc +261 -79
  1353. data/src/core/tsi/ssl_transport_security.h +53 -16
  1354. data/src/core/tsi/transport_security.cc +15 -3
  1355. data/src/core/tsi/transport_security.h +16 -1
  1356. data/src/core/tsi/transport_security_grpc.h +1 -0
  1357. data/src/core/tsi/transport_security_interface.h +28 -0
  1358. data/src/ruby/bin/math_services_pb.rb +1 -1
  1359. data/src/ruby/ext/grpc/extconf.rb +31 -11
  1360. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  1361. data/src/ruby/ext/grpc/rb_call.c +5 -5
  1362. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
  1363. data/src/ruby/ext/grpc/rb_channel.c +24 -10
  1364. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  1365. data/src/ruby/ext/grpc/rb_channel_credentials.c +15 -5
  1366. data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
  1367. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  1368. data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
  1369. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  1370. data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
  1371. data/src/ruby/ext/grpc/rb_grpc.c +9 -4
  1372. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  1373. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -34
  1374. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -53
  1375. data/src/ruby/ext/grpc/rb_server.c +26 -10
  1376. data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
  1377. data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
  1378. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
  1379. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
  1380. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
  1381. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
  1382. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1383. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
  1384. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1385. data/src/ruby/lib/grpc/version.rb +1 -1
  1386. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1387. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  1388. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
  1389. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
  1390. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  1391. data/src/ruby/pb/test/client.rb +769 -0
  1392. data/src/ruby/pb/test/server.rb +252 -0
  1393. data/src/ruby/pb/test/xds_client.rb +415 -0
  1394. data/src/ruby/spec/call_spec.rb +1 -1
  1395. data/src/ruby/spec/channel_credentials_spec.rb +32 -0
  1396. data/src/ruby/spec/channel_spec.rb +17 -6
  1397. data/src/ruby/spec/client_auth_spec.rb +27 -1
  1398. data/src/ruby/spec/client_server_spec.rb +1 -1
  1399. data/src/ruby/spec/errors_spec.rb +1 -1
  1400. data/src/ruby/spec/generic/active_call_spec.rb +2 -2
  1401. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  1402. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1403. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1404. data/src/ruby/spec/server_spec.rb +22 -0
  1405. data/third_party/abseil-cpp/absl/algorithm/container.h +104 -94
  1406. data/third_party/abseil-cpp/absl/base/attributes.h +88 -35
  1407. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  1408. data/third_party/abseil-cpp/absl/base/config.h +102 -44
  1409. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +25 -36
  1410. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  1411. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  1412. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  1413. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  1414. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  1415. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  1416. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  1417. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +17 -6
  1418. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1419. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  1420. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1421. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +13 -11
  1422. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1423. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +70 -1
  1424. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
  1425. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
  1426. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1427. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1428. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +17 -3
  1429. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
  1430. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  1431. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  1432. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  1433. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1434. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1435. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  1436. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  1437. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  1438. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -7
  1439. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +1 -1
  1440. data/third_party/abseil-cpp/absl/container/inlined_vector.h +110 -100
  1441. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  1442. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
  1443. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +23 -103
  1444. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +39 -79
  1445. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  1446. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +469 -429
  1447. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  1448. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
  1449. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +21 -2
  1450. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +374 -243
  1451. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +27 -13
  1452. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
  1453. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
  1454. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  1455. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +15 -17
  1456. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1457. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  1458. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  1459. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
  1460. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +11 -7
  1461. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
  1462. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  1463. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
  1464. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  1465. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +16 -2
  1466. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1467. data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
  1468. data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
  1469. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  1470. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  1471. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +27 -13
  1472. data/third_party/abseil-cpp/absl/hash/internal/hash.h +145 -45
  1473. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
  1474. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  1475. data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
  1476. data/third_party/abseil-cpp/absl/meta/type_traits.h +47 -3
  1477. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  1478. data/third_party/abseil-cpp/absl/numeric/int128.cc +6 -13
  1479. data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
  1480. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1481. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1482. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1483. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1484. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  1485. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  1486. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  1487. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1488. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1489. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1490. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1491. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1492. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1493. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1494. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1495. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  1496. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  1497. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1498. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1499. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1500. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  1501. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1502. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1503. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1504. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1505. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1506. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  1507. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  1508. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1509. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  1510. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1511. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1512. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1513. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1514. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1515. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1516. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  1517. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1518. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1519. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  1520. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1521. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  1522. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  1523. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  1524. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1525. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1526. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1527. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1528. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  1529. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1530. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1531. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  1532. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  1533. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  1534. data/third_party/abseil-cpp/absl/status/status.cc +27 -28
  1535. data/third_party/abseil-cpp/absl/status/status.h +98 -33
  1536. data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
  1537. data/third_party/abseil-cpp/absl/status/statusor.h +34 -24
  1538. data/third_party/abseil-cpp/absl/strings/charconv.cc +8 -8
  1539. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1540. data/third_party/abseil-cpp/absl/strings/cord.cc +619 -570
  1541. data/third_party/abseil-cpp/absl/strings/cord.h +346 -101
  1542. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  1543. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +7 -7
  1544. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +89 -0
  1545. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +478 -31
  1546. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  1547. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  1548. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  1549. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  1550. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  1551. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  1552. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  1553. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1554. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  1555. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +771 -0
  1556. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  1557. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  1558. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1559. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1560. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1561. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1562. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  1563. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1564. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  1565. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1566. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  1567. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1568. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  1569. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +22 -0
  1570. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +18 -5
  1571. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +20 -5
  1572. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  1573. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1574. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
  1575. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  1576. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  1577. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +76 -73
  1578. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +38 -16
  1579. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
  1580. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  1581. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1582. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1583. data/third_party/abseil-cpp/absl/strings/numbers.cc +133 -5
  1584. data/third_party/abseil-cpp/absl/strings/numbers.h +44 -10
  1585. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1586. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
  1587. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  1588. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  1589. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  1590. data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
  1591. data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
  1592. data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
  1593. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  1594. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  1595. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1596. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
  1597. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  1598. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  1599. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  1600. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +2 -66
  1601. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  1602. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  1603. data/third_party/abseil-cpp/absl/synchronization/mutex.h +82 -65
  1604. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
  1605. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1606. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1607. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  1608. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  1609. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
  1610. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1611. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1612. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
  1613. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  1614. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1615. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +5 -5
  1616. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
  1617. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1618. data/third_party/abseil-cpp/absl/time/time.h +93 -60
  1619. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1620. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  1621. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  1622. data/third_party/abseil-cpp/absl/types/span.h +3 -3
  1623. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  1624. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1625. data/third_party/boringssl-with-bazel/err_data.c +760 -724
  1626. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +70 -57
  1627. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
  1628. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1629. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
  1630. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1631. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
  1632. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1633. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +67 -54
  1634. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1635. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1636. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +650 -0
  1637. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1638. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
  1639. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
  1640. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
  1641. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1642. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +75 -63
  1643. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1644. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  1645. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  1646. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  1647. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +224 -0
  1648. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +79 -354
  1649. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +327 -281
  1650. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
  1651. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
  1652. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -8
  1653. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
  1654. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1655. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
  1656. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1657. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1658. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1659. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1660. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1661. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1662. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1663. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
  1664. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1665. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +11 -10
  1666. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1667. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
  1668. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  1669. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
  1670. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1671. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  1672. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  1673. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  1674. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  1675. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1676. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  1677. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1678. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  1679. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1680. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1681. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +272 -0
  1682. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
  1683. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1684. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1685. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  1686. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
  1687. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  1688. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  1689. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  1690. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1691. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
  1692. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  1693. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +15 -4
  1694. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  1695. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  1696. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +44 -16
  1697. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +35 -2
  1698. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  1699. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  1700. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1701. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +456 -0
  1702. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
  1703. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  1704. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  1705. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  1706. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  1707. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  1708. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +105 -95
  1709. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  1710. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
  1711. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
  1712. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  1713. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  1714. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  1715. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  1716. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  1717. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  1718. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  1719. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
  1720. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
  1721. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
  1722. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +50 -33
  1723. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +65 -41
  1724. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  1725. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +168 -16
  1726. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
  1727. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
  1728. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
  1729. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +400 -325
  1730. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  1731. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  1732. data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
  1733. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  1734. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  1735. data/third_party/boringssl-with-bazel/src/crypto/mem.c +46 -9
  1736. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
  1737. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  1738. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  1739. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  1740. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  1741. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  1742. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  1743. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
  1744. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
  1745. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1746. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1747. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +96 -49
  1748. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
  1749. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1750. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1751. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1752. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
  1753. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  1754. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  1755. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  1756. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  1757. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  1758. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  1759. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  1760. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1761. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  1762. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  1763. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
  1764. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  1765. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  1766. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  1767. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +351 -13
  1768. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  1769. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
  1770. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
  1771. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  1772. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
  1773. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
  1774. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
  1775. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +4 -31
  1776. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +12 -9
  1777. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  1778. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
  1779. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  1780. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
  1781. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
  1782. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +26 -23
  1783. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +25 -69
  1784. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
  1785. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +61 -23
  1786. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
  1787. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  1788. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
  1789. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -16
  1790. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  1791. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +15 -13
  1792. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  1793. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
  1794. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1795. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  1796. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  1797. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  1798. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  1799. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +50 -14
  1800. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  1801. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +239 -11
  1802. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
  1803. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +2 -2
  1804. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1805. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
  1806. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1807. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
  1808. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
  1809. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +29 -18
  1810. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
  1811. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +26 -25
  1812. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -13
  1813. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  1814. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
  1815. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
  1816. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1817. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +48 -40
  1818. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  1819. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  1820. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
  1821. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +2 -2
  1822. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -6
  1823. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
  1824. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
  1825. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +69 -4
  1826. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1794 -665
  1827. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -179
  1828. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +63 -14
  1829. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1830. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
  1831. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1832. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  1833. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
  1834. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1835. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +36 -7
  1836. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  1837. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1838. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  1839. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +60 -38
  1840. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +10 -2
  1841. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  1842. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  1843. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1844. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +41 -10
  1845. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  1846. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +67 -106
  1847. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +99 -0
  1848. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  1849. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
  1850. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  1851. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  1852. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  1853. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
  1854. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
  1855. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
  1856. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
  1857. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1858. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  1859. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +128 -91
  1860. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
  1861. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +435 -119
  1862. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +48 -36
  1863. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1397 -380
  1864. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
  1865. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +192 -52
  1866. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
  1867. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  1868. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
  1869. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +4325 -0
  1870. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
  1871. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +92 -44
  1872. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +314 -217
  1873. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +177 -35
  1874. data/third_party/boringssl-with-bazel/src/ssl/internal.h +493 -154
  1875. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  1876. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
  1877. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  1878. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
  1879. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  1880. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
  1881. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
  1882. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +64 -112
  1883. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  1884. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +136 -104
  1885. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  1886. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
  1887. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +11 -3
  1888. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  1889. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
  1890. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +79 -34
  1891. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +235 -178
  1892. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
  1893. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +269 -118
  1894. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  1895. data/third_party/cares/cares/include/ares.h +742 -0
  1896. data/third_party/cares/cares/include/ares_dns.h +112 -0
  1897. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1898. data/third_party/cares/cares/include/ares_version.h +24 -0
  1899. data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
  1900. data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
  1901. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1902. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1903. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1904. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1905. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1906. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1907. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1908. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1909. data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
  1910. data/third_party/cares/cares/src/lib/ares_data.c +240 -0
  1911. data/third_party/cares/cares/src/lib/ares_data.h +74 -0
  1912. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1913. data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
  1914. data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
  1915. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1916. data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
  1917. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  1918. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  1919. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  1920. data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
  1921. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  1922. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
  1923. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
  1924. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
  1925. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  1926. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  1927. data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
  1928. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  1929. data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
  1930. data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
  1931. data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
  1932. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  1933. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  1934. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  1935. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1936. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  1937. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  1938. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  1939. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1940. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1941. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1942. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
  1943. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
  1944. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
  1945. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
  1946. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1947. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
  1948. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
  1949. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  1950. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  1951. data/third_party/cares/cares/src/lib/ares_private.h +423 -0
  1952. data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
  1953. data/third_party/cares/cares/src/lib/ares_query.c +180 -0
  1954. data/third_party/cares/cares/src/lib/ares_search.c +321 -0
  1955. data/third_party/cares/cares/src/lib/ares_send.c +131 -0
  1956. data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
  1957. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  1958. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  1959. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  1960. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  1961. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  1962. data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
  1963. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  1964. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  1965. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  1966. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  1967. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  1968. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  1969. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  1970. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  1971. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  1972. data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
  1973. data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
  1974. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  1975. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  1976. data/third_party/re2/re2/compile.cc +91 -109
  1977. data/third_party/re2/re2/dfa.cc +27 -39
  1978. data/third_party/re2/re2/filtered_re2.cc +18 -2
  1979. data/third_party/re2/re2/filtered_re2.h +10 -5
  1980. data/third_party/re2/re2/nfa.cc +1 -1
  1981. data/third_party/re2/re2/parse.cc +42 -23
  1982. data/third_party/re2/re2/perl_groups.cc +34 -34
  1983. data/third_party/re2/re2/prefilter.cc +3 -2
  1984. data/third_party/re2/re2/prog.cc +182 -4
  1985. data/third_party/re2/re2/prog.h +28 -9
  1986. data/third_party/re2/re2/re2.cc +87 -118
  1987. data/third_party/re2/re2/re2.h +156 -141
  1988. data/third_party/re2/re2/regexp.cc +12 -5
  1989. data/third_party/re2/re2/regexp.h +8 -2
  1990. data/third_party/re2/re2/set.cc +31 -9
  1991. data/third_party/re2/re2/set.h +9 -4
  1992. data/third_party/re2/re2/simplify.cc +11 -3
  1993. data/third_party/re2/re2/tostring.cc +1 -1
  1994. data/third_party/re2/re2/walker-inl.h +1 -1
  1995. data/third_party/re2/util/mutex.h +2 -2
  1996. data/third_party/re2/util/pcre.h +3 -3
  1997. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  1998. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  1999. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  2000. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  2001. data/third_party/upb/upb/decode.c +774 -351
  2002. data/third_party/upb/upb/decode.h +66 -12
  2003. data/third_party/upb/upb/decode_fast.c +596 -581
  2004. data/third_party/upb/upb/decode_fast.h +40 -13
  2005. data/third_party/upb/upb/decode_internal.h +211 -0
  2006. data/third_party/upb/upb/def.c +2151 -1068
  2007. data/third_party/upb/upb/def.h +352 -258
  2008. data/third_party/upb/upb/def.hpp +160 -161
  2009. data/third_party/upb/upb/encode.c +291 -165
  2010. data/third_party/upb/upb/encode.h +38 -13
  2011. data/third_party/upb/upb/json_encode.c +267 -204
  2012. data/third_party/upb/upb/json_encode.h +33 -7
  2013. data/third_party/upb/upb/msg.c +274 -102
  2014. data/third_party/upb/upb/msg.h +83 -582
  2015. data/third_party/upb/upb/msg_internal.h +831 -0
  2016. data/third_party/upb/upb/port_def.inc +93 -24
  2017. data/third_party/upb/upb/port_undef.inc +39 -1
  2018. data/third_party/upb/upb/reflection.c +312 -240
  2019. data/third_party/upb/upb/reflection.h +119 -67
  2020. data/third_party/upb/upb/reflection.hpp +37 -0
  2021. data/third_party/upb/upb/table.c +406 -197
  2022. data/third_party/upb/upb/table_internal.h +385 -0
  2023. data/third_party/upb/upb/text_encode.c +141 -90
  2024. data/third_party/upb/upb/text_encode.h +31 -5
  2025. data/third_party/upb/upb/upb.c +164 -66
  2026. data/third_party/upb/upb/upb.h +182 -146
  2027. data/third_party/upb/upb/upb.hpp +50 -23
  2028. data/third_party/upb/upb/upb_internal.h +68 -0
  2029. data/third_party/xxhash/xxhash.h +5580 -0
  2030. data/third_party/zlib/crc32.c +966 -292
  2031. data/third_party/zlib/crc32.h +9441 -436
  2032. data/third_party/zlib/deflate.c +78 -30
  2033. data/third_party/zlib/deflate.h +12 -15
  2034. data/third_party/zlib/gzguts.h +3 -2
  2035. data/third_party/zlib/gzlib.c +5 -3
  2036. data/third_party/zlib/gzread.c +5 -7
  2037. data/third_party/zlib/gzwrite.c +25 -13
  2038. data/third_party/zlib/infback.c +2 -1
  2039. data/third_party/zlib/inffast.c +14 -14
  2040. data/third_party/zlib/inflate.c +39 -8
  2041. data/third_party/zlib/inflate.h +3 -2
  2042. data/third_party/zlib/inftrees.c +3 -3
  2043. data/third_party/zlib/trees.c +27 -48
  2044. data/third_party/zlib/zlib.h +123 -100
  2045. data/third_party/zlib/zutil.c +2 -2
  2046. data/third_party/zlib/zutil.h +12 -9
  2047. metadata +734 -307
  2048. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +0 -388
  2049. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -34
  2050. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -45
  2051. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -85
  2052. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
  2053. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  2054. data/src/core/ext/filters/client_channel/resolver.cc +0 -87
  2055. data/src/core/ext/filters/client_channel/resolver.h +0 -147
  2056. data/src/core/ext/filters/client_channel/resolver_factory.h +0 -73
  2057. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
  2058. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  2059. data/src/core/ext/filters/client_channel/server_address.cc +0 -161
  2060. data/src/core/ext/filters/client_channel/server_address.h +0 -113
  2061. data/src/core/ext/filters/client_channel/service_config.cc +0 -226
  2062. data/src/core/ext/filters/client_channel/service_config.h +0 -126
  2063. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -86
  2064. data/src/core/ext/filters/client_channel/service_config_parser.cc +0 -89
  2065. data/src/core/ext/filters/client_channel/service_config_parser.h +0 -92
  2066. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -440
  2067. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -557
  2068. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  2069. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
  2070. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -27
  2071. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  2072. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  2073. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  2074. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  2075. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -124
  2076. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -90
  2077. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -212
  2078. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -45
  2079. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -76
  2080. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -86
  2081. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  2082. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -242
  2083. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  2084. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  2085. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  2086. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
  2087. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -56
  2088. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -30
  2089. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -56
  2090. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -30
  2091. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -56
  2092. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -29
  2093. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -56
  2094. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
  2095. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -56
  2096. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +0 -28
  2097. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
  2098. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
  2099. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
  2100. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
  2101. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
  2102. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +0 -36
  2103. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
  2104. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
  2105. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
  2106. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
  2107. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
  2108. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  2109. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -124
  2110. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
  2111. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  2112. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -83
  2113. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  2114. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -82
  2115. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  2116. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -86
  2117. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  2118. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
  2119. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  2120. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
  2121. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
  2122. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
  2123. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
  2124. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
  2125. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
  2126. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
  2127. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
  2128. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
  2129. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
  2130. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
  2131. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
  2132. data/src/core/lib/avl/avl.cc +0 -306
  2133. data/src/core/lib/channel/handshaker.cc +0 -262
  2134. data/src/core/lib/channel/handshaker.h +0 -179
  2135. data/src/core/lib/channel/handshaker_factory.h +0 -42
  2136. data/src/core/lib/channel/handshaker_registry.cc +0 -105
  2137. data/src/core/lib/channel/handshaker_registry.h +0 -54
  2138. data/src/core/lib/compression/algorithm_metadata.h +0 -61
  2139. data/src/core/lib/compression/compression_args.cc +0 -135
  2140. data/src/core/lib/compression/compression_args.h +0 -56
  2141. data/src/core/lib/compression/stream_compression.cc +0 -80
  2142. data/src/core/lib/compression/stream_compression.h +0 -116
  2143. data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
  2144. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  2145. data/src/core/lib/compression/stream_compression_identity.cc +0 -90
  2146. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  2147. data/src/core/lib/gpr/arena.h +0 -47
  2148. data/src/core/lib/gpr/tls_gcc.h +0 -52
  2149. data/src/core/lib/gpr/tls_msvc.h +0 -54
  2150. data/src/core/lib/gpr/tls_pthread.cc +0 -30
  2151. data/src/core/lib/gpr/tls_pthread.h +0 -56
  2152. data/src/core/lib/gpr/tls_stdcpp.h +0 -48
  2153. data/src/core/lib/gprpp/arena.cc +0 -103
  2154. data/src/core/lib/gprpp/arena.h +0 -121
  2155. data/src/core/lib/gprpp/atomic.h +0 -104
  2156. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  2157. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1658
  2158. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  2159. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  2160. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  2161. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  2162. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  2163. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  2164. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  2165. data/src/core/lib/iomgr/parse_address.cc +0 -322
  2166. data/src/core/lib/iomgr/parse_address.h +0 -77
  2167. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  2168. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  2169. data/src/core/lib/iomgr/pollset_custom.cc +0 -106
  2170. data/src/core/lib/iomgr/pollset_custom.h +0 -35
  2171. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
  2172. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  2173. data/src/core/lib/iomgr/pollset_uv.cc +0 -93
  2174. data/src/core/lib/iomgr/pollset_uv.h +0 -32
  2175. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -168
  2176. data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
  2177. data/src/core/lib/iomgr/resource_quota.cc +0 -1016
  2178. data/src/core/lib/iomgr/resource_quota.h +0 -177
  2179. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  2180. data/src/core/lib/iomgr/sockaddr_utils.cc +0 -296
  2181. data/src/core/lib/iomgr/sockaddr_utils.h +0 -80
  2182. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  2183. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  2184. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -161
  2185. data/src/core/lib/iomgr/tcp_custom.cc +0 -391
  2186. data/src/core/lib/iomgr/tcp_custom.h +0 -84
  2187. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -483
  2188. data/src/core/lib/iomgr/tcp_uv.cc +0 -419
  2189. data/src/core/lib/iomgr/timer_custom.cc +0 -95
  2190. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2191. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  2192. data/src/core/lib/iomgr/udp_server.cc +0 -747
  2193. data/src/core/lib/iomgr/udp_server.h +0 -103
  2194. data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
  2195. data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
  2196. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
  2197. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
  2198. data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
  2199. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
  2200. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
  2201. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
  2202. data/src/core/lib/slice/slice_intern.cc +0 -374
  2203. data/src/core/lib/slice/slice_utils.h +0 -200
  2204. data/src/core/lib/surface/init_secure.cc +0 -81
  2205. data/src/core/lib/transport/authority_override.cc +0 -40
  2206. data/src/core/lib/transport/authority_override.h +0 -37
  2207. data/src/core/lib/transport/metadata.cc +0 -689
  2208. data/src/core/lib/transport/metadata.h +0 -446
  2209. data/src/core/lib/transport/static_metadata.cc +0 -1249
  2210. data/src/core/lib/transport/static_metadata.h +0 -604
  2211. data/src/core/lib/transport/status_metadata.cc +0 -62
  2212. data/src/core/lib/transport/status_metadata.h +0 -48
  2213. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  2214. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +0 -93
  2215. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +0 -130
  2216. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  2217. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
  2218. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  2219. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +0 -533
  2220. data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +0 -93
  2221. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  2222. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -237
  2223. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +0 -653
  2224. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  2225. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +0 -116
  2226. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  2227. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +0 -4100
  2228. data/third_party/cares/cares/ares.h +0 -670
  2229. data/third_party/cares/cares/ares__close_sockets.c +0 -61
  2230. data/third_party/cares/cares/ares__get_hostent.c +0 -261
  2231. data/third_party/cares/cares/ares_create_query.c +0 -206
  2232. data/third_party/cares/cares/ares_data.c +0 -222
  2233. data/third_party/cares/cares/ares_data.h +0 -72
  2234. data/third_party/cares/cares/ares_dns.h +0 -103
  2235. data/third_party/cares/cares/ares_expand_name.c +0 -209
  2236. data/third_party/cares/cares/ares_expand_string.c +0 -70
  2237. data/third_party/cares/cares/ares_free_hostent.c +0 -41
  2238. data/third_party/cares/cares/ares_getenv.c +0 -30
  2239. data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
  2240. data/third_party/cares/cares/ares_gethostbyname.c +0 -529
  2241. data/third_party/cares/cares/ares_getnameinfo.c +0 -453
  2242. data/third_party/cares/cares/ares_getopt.c +0 -122
  2243. data/third_party/cares/cares/ares_getopt.h +0 -53
  2244. data/third_party/cares/cares/ares_init.c +0 -2615
  2245. data/third_party/cares/cares/ares_ipv6.h +0 -78
  2246. data/third_party/cares/cares/ares_library_init.c +0 -195
  2247. data/third_party/cares/cares/ares_library_init.h +0 -43
  2248. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2249. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2250. data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
  2251. data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
  2252. data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
  2253. data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
  2254. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2255. data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
  2256. data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
  2257. data/third_party/cares/cares/ares_private.h +0 -382
  2258. data/third_party/cares/cares/ares_process.c +0 -1473
  2259. data/third_party/cares/cares/ares_query.c +0 -186
  2260. data/third_party/cares/cares/ares_search.c +0 -323
  2261. data/third_party/cares/cares/ares_send.c +0 -137
  2262. data/third_party/cares/cares/ares_setup.h +0 -217
  2263. data/third_party/cares/cares/ares_strsplit.c +0 -174
  2264. data/third_party/cares/cares/ares_version.h +0 -24
  2265. data/third_party/cares/cares/inet_net_pton.c +0 -450
  2266. data/third_party/cares/cares/inet_ntop.c +0 -207
  2267. data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
  2268. data/third_party/upb/upb/decode.int.h +0 -163
  2269. data/third_party/upb/upb/json_decode.c +0 -1443
  2270. data/third_party/upb/upb/json_decode.h +0 -23
  2271. data/third_party/upb/upb/table.int.h +0 -475
  2272. data/third_party/upb/upb/upb.int.h +0 -29
@@ -18,44 +18,86 @@
18
18
 
19
19
  #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
20
20
 
21
+ #include <inttypes.h>
22
+ #include <limits.h>
23
+ #include <stdio.h>
24
+ #include <stdlib.h>
25
+ #include <string.h>
26
+
27
+ #include <algorithm>
28
+ #include <memory>
29
+ #include <new>
30
+ #include <string>
31
+ #include <utility>
32
+
33
+ #include "absl/base/attributes.h"
34
+ #include "absl/status/status.h"
35
+ #include "absl/strings/cord.h"
36
+ #include "absl/strings/str_cat.h"
21
37
  #include "absl/strings/str_format.h"
38
+ #include "absl/strings/string_view.h"
39
+ #include "absl/types/optional.h"
22
40
 
41
+ #include <grpc/impl/codegen/connectivity_state.h>
23
42
  #include <grpc/slice_buffer.h>
43
+ #include <grpc/status.h>
24
44
  #include <grpc/support/alloc.h>
45
+ #include <grpc/support/atm.h>
25
46
  #include <grpc/support/log.h>
26
- #include <grpc/support/port_platform.h>
27
- #include <grpc/support/string_util.h>
28
- #include <inttypes.h>
29
- #include <limits.h>
30
- #include <math.h>
31
- #include <stdio.h>
32
- #include <string.h>
33
47
 
34
48
  #include "src/core/ext/transport/chttp2/transport/context_list.h"
49
+ #include "src/core/ext/transport/chttp2/transport/flow_control.h"
50
+ #include "src/core/ext/transport/chttp2/transport/frame.h"
35
51
  #include "src/core/ext/transport/chttp2/transport/frame_data.h"
52
+ #include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
53
+ #include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
54
+ #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
55
+ #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
36
56
  #include "src/core/ext/transport/chttp2/transport/internal.h"
57
+ #include "src/core/ext/transport/chttp2/transport/stream_map.h"
37
58
  #include "src/core/ext/transport/chttp2/transport/varint.h"
38
59
  #include "src/core/lib/channel/channel_args.h"
39
- #include "src/core/lib/compression/stream_compression.h"
60
+ #include "src/core/lib/channel/channel_stack_builder.h"
40
61
  #include "src/core/lib/debug/stats.h"
41
- #include "src/core/lib/gpr/env.h"
42
- #include "src/core/lib/gpr/string.h"
43
- #include "src/core/lib/gprpp/memory.h"
62
+ #include "src/core/lib/gpr/useful.h"
63
+ #include "src/core/lib/gprpp/bitset.h"
64
+ #include "src/core/lib/gprpp/debug_location.h"
65
+ #include "src/core/lib/gprpp/global_config_env.h"
66
+ #include "src/core/lib/gprpp/manual_constructor.h"
67
+ #include "src/core/lib/gprpp/orphanable.h"
68
+ #include "src/core/lib/gprpp/ref_counted.h"
69
+ #include "src/core/lib/gprpp/time.h"
44
70
  #include "src/core/lib/http/parser.h"
45
- #include "src/core/lib/iomgr/executor.h"
46
- #include "src/core/lib/iomgr/iomgr.h"
71
+ #include "src/core/lib/iomgr/combiner.h"
72
+ #include "src/core/lib/iomgr/error.h"
73
+ #include "src/core/lib/iomgr/exec_ctx.h"
74
+ #include "src/core/lib/iomgr/iomgr_fwd.h"
75
+ #include "src/core/lib/iomgr/pollset.h"
47
76
  #include "src/core/lib/iomgr/timer.h"
48
77
  #include "src/core/lib/profiling/timers.h"
78
+ #include "src/core/lib/resource_quota/api.h"
79
+ #include "src/core/lib/resource_quota/arena.h"
80
+ #include "src/core/lib/resource_quota/memory_quota.h"
81
+ #include "src/core/lib/resource_quota/resource_quota.h"
82
+ #include "src/core/lib/resource_quota/trace.h"
83
+ #include "src/core/lib/slice/slice.h"
49
84
  #include "src/core/lib/slice/slice_internal.h"
50
- #include "src/core/lib/slice/slice_string_helpers.h"
85
+ #include "src/core/lib/slice/slice_refcount.h"
86
+ #include "src/core/lib/transport/bdp_estimator.h"
87
+ #include "src/core/lib/transport/byte_stream.h"
88
+ #include "src/core/lib/transport/connectivity_state.h"
51
89
  #include "src/core/lib/transport/error_utils.h"
52
90
  #include "src/core/lib/transport/http2_errors.h"
53
- #include "src/core/lib/transport/static_metadata.h"
91
+ #include "src/core/lib/transport/metadata_batch.h"
54
92
  #include "src/core/lib/transport/status_conversion.h"
55
- #include "src/core/lib/transport/timeout_encoding.h"
56
93
  #include "src/core/lib/transport/transport.h"
57
94
  #include "src/core/lib/transport/transport_impl.h"
58
- #include "src/core/lib/uri/uri_parser.h"
95
+
96
+ GPR_GLOBAL_CONFIG_DEFINE_BOOL(
97
+ grpc_experimental_disable_flow_control, false,
98
+ "If set, flow control will be effectively disabled. Max out all values and "
99
+ "assume the remote peer does the same. Thus we can ignore any flow control "
100
+ "bookkeeping, error checking, and decision making");
59
101
 
60
102
  #define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
61
103
  #define MAX_WINDOW 0x7fffffffu
@@ -100,23 +142,23 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
100
142
  "chttp2_refcount");
101
143
 
102
144
  // forward declarations of various callbacks that we'll build closures around
103
- static void write_action_begin_locked(void* t, grpc_error* error);
104
- static void write_action(void* t, grpc_error* error);
105
- static void write_action_end(void* t, grpc_error* error);
106
- static void write_action_end_locked(void* t, grpc_error* error);
145
+ static void write_action_begin_locked(void* t, grpc_error_handle error);
146
+ static void write_action(void* t, grpc_error_handle error);
147
+ static void write_action_end(void* t, grpc_error_handle error);
148
+ static void write_action_end_locked(void* t, grpc_error_handle error);
107
149
 
108
- static void read_action(void* t, grpc_error* error);
109
- static void read_action_locked(void* t, grpc_error* error);
150
+ static void read_action(void* t, grpc_error_handle error);
151
+ static void read_action_locked(void* t, grpc_error_handle error);
110
152
  static void continue_read_action_locked(grpc_chttp2_transport* t);
111
153
 
112
- static void complete_fetch(void* gs, grpc_error* error);
113
- static void complete_fetch_locked(void* gs, grpc_error* error);
154
+ static void complete_fetch(void* gs, grpc_error_handle error);
155
+ static void complete_fetch_locked(void* gs, grpc_error_handle error);
114
156
  // Set a transport level setting, and push it to our peer
115
157
  static void queue_setting_update(grpc_chttp2_transport* t,
116
158
  grpc_chttp2_setting_id id, uint32_t value);
117
159
 
118
160
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
119
- grpc_error* error);
161
+ grpc_error_handle error);
120
162
 
121
163
  // Start new streams that have been created if we can
122
164
  static void maybe_start_some_streams(grpc_chttp2_transport* t);
@@ -126,44 +168,67 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
126
168
  const absl::Status& status,
127
169
  const char* reason);
128
170
 
129
- static void benign_reclaimer(void* arg, grpc_error* error);
130
- static void destructive_reclaimer(void* arg, grpc_error* error);
131
- static void benign_reclaimer_locked(void* arg, grpc_error* error);
132
- static void destructive_reclaimer_locked(void* arg, grpc_error* error);
171
+ static void benign_reclaimer_locked(void* arg, grpc_error_handle error);
172
+ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error);
133
173
 
134
174
  static void post_benign_reclaimer(grpc_chttp2_transport* t);
135
175
  static void post_destructive_reclaimer(grpc_chttp2_transport* t);
136
176
 
137
- static void close_transport_locked(grpc_chttp2_transport* t, grpc_error* error);
138
- static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error);
139
-
140
- static void start_bdp_ping(void* tp, grpc_error* error);
141
- static void finish_bdp_ping(void* tp, grpc_error* error);
142
- static void start_bdp_ping_locked(void* tp, grpc_error* error);
143
- static void finish_bdp_ping_locked(void* tp, grpc_error* error);
144
- static void next_bdp_ping_timer_expired(void* tp, grpc_error* error);
145
- static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error);
146
-
147
- static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error);
177
+ static void close_transport_locked(grpc_chttp2_transport* t,
178
+ grpc_error_handle error);
179
+ static void end_all_the_calls(grpc_chttp2_transport* t,
180
+ grpc_error_handle error);
181
+
182
+ static void start_bdp_ping(void* tp, grpc_error_handle error);
183
+ static void finish_bdp_ping(void* tp, grpc_error_handle error);
184
+ static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
185
+ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
186
+ static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error);
187
+ static void next_bdp_ping_timer_expired_locked(void* tp,
188
+ grpc_error_handle error);
189
+
190
+ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
148
191
  static void send_ping_locked(grpc_chttp2_transport* t,
149
192
  grpc_closure* on_initiate, grpc_closure* on_ack);
150
- static void retry_initiate_ping_locked(void* tp, grpc_error* error);
193
+ static void retry_initiate_ping_locked(void* tp, grpc_error_handle error);
151
194
 
152
195
  // keepalive-relevant functions
153
- static void init_keepalive_ping(void* arg, grpc_error* error);
154
- static void init_keepalive_ping_locked(void* arg, grpc_error* error);
155
- static void start_keepalive_ping(void* arg, grpc_error* error);
156
- static void finish_keepalive_ping(void* arg, grpc_error* error);
157
- static void start_keepalive_ping_locked(void* arg, grpc_error* error);
158
- static void finish_keepalive_ping_locked(void* arg, grpc_error* error);
159
- static void keepalive_watchdog_fired(void* arg, grpc_error* error);
160
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error);
196
+ static void init_keepalive_ping(void* arg, grpc_error_handle error);
197
+ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error);
198
+ static void start_keepalive_ping(void* arg, grpc_error_handle error);
199
+ static void finish_keepalive_ping(void* arg, grpc_error_handle error);
200
+ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
201
+ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
202
+ static void keepalive_watchdog_fired(void* arg, grpc_error_handle error);
203
+ static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error);
204
+
205
+ static void reset_byte_stream(void* arg, grpc_error_handle error);
161
206
 
162
- static void reset_byte_stream(void* arg, grpc_error* error);
207
+ namespace grpc_core {
163
208
 
164
- // Flow control default enabled. Can be disabled by setting
165
- // GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
166
- bool g_flow_control_enabled = true;
209
+ namespace {
210
+ TestOnlyGlobalHttp2TransportInitCallback test_only_init_callback = nullptr;
211
+ TestOnlyGlobalHttp2TransportDestructCallback test_only_destruct_callback =
212
+ nullptr;
213
+ bool test_only_disable_transient_failure_state_notification = false;
214
+ } // namespace
215
+
216
+ void TestOnlySetGlobalHttp2TransportInitCallback(
217
+ TestOnlyGlobalHttp2TransportInitCallback callback) {
218
+ test_only_init_callback = callback;
219
+ }
220
+
221
+ void TestOnlySetGlobalHttp2TransportDestructCallback(
222
+ TestOnlyGlobalHttp2TransportDestructCallback callback) {
223
+ test_only_destruct_callback = callback;
224
+ }
225
+
226
+ void TestOnlyGlobalHttp2TransportDisableTransientFailureStateNotification(
227
+ bool disable) {
228
+ test_only_disable_transient_failure_state_notification = disable;
229
+ }
230
+
231
+ } // namespace grpc_core
167
232
 
168
233
  //
169
234
  // CONSTRUCTION/DESTRUCTION/REFCOUNTING
@@ -181,9 +246,8 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
181
246
  grpc_slice_buffer_destroy_internal(&qbuf);
182
247
 
183
248
  grpc_slice_buffer_destroy_internal(&outbuf);
184
- grpc_chttp2_hpack_compressor_destroy(&hpack_compressor);
185
249
 
186
- grpc_error* error =
250
+ grpc_error_handle error =
187
251
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
188
252
  // ContextList::Execute follows semantics of a callback function and does not
189
253
  // take a ref on error
@@ -192,7 +256,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
192
256
  cl = nullptr;
193
257
 
194
258
  grpc_slice_buffer_destroy_internal(&read_buffer);
195
- grpc_chttp2_hpack_parser_destroy(&hpack_parser);
196
259
  grpc_chttp2_goaway_parser_destroy(&goaway_parser);
197
260
 
198
261
  for (i = 0; i < STREAM_LIST_COUNT; i++) {
@@ -221,6 +284,9 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
221
284
 
222
285
  GRPC_ERROR_UNREF(closed_with_error);
223
286
  gpr_free(ping_acks);
287
+ if (grpc_core::test_only_destruct_callback != nullptr) {
288
+ grpc_core::test_only_destruct_callback();
289
+ }
224
290
  }
225
291
 
226
292
  static const grpc_transport_vtable* get_vtable(void);
@@ -255,8 +321,7 @@ static bool read_channel_args(grpc_chttp2_transport* t,
255
321
  const int value =
256
322
  grpc_channel_arg_get_integer(&channel_args->args[i], options);
257
323
  if (value >= 0) {
258
- grpc_chttp2_hpack_compressor_set_max_usable_size(
259
- &t->hpack_compressor, static_cast<uint32_t>(value));
324
+ t->hpack_compressor.SetMaxUsableSize(value);
260
325
  }
261
326
  } else if (0 == strcmp(channel_args->args[i].key,
262
327
  GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
@@ -271,11 +336,11 @@ static bool read_channel_args(grpc_chttp2_transport* t,
271
336
  strcmp(channel_args->args[i].key,
272
337
  GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
273
338
  t->ping_policy.min_recv_ping_interval_without_data =
274
- grpc_channel_arg_get_integer(
339
+ grpc_core::Duration::Milliseconds(grpc_channel_arg_get_integer(
275
340
  &channel_args->args[i],
276
341
  grpc_integer_options{
277
342
  g_default_min_recv_ping_interval_without_data_ms, 0,
278
- INT_MAX});
343
+ INT_MAX}));
279
344
  } else if (0 == strcmp(channel_args->args[i].key,
280
345
  GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)) {
281
346
  t->write_buffer_size = static_cast<uint32_t>(grpc_channel_arg_get_integer(
@@ -291,7 +356,9 @@ static bool read_channel_args(grpc_chttp2_transport* t,
291
356
  ? g_default_client_keepalive_time_ms
292
357
  : g_default_server_keepalive_time_ms,
293
358
  1, INT_MAX});
294
- t->keepalive_time = value == INT_MAX ? GRPC_MILLIS_INF_FUTURE : value;
359
+ t->keepalive_time = value == INT_MAX
360
+ ? grpc_core::Duration::Infinity()
361
+ : grpc_core::Duration::Milliseconds(value);
295
362
  } else if (0 == strcmp(channel_args->args[i].key,
296
363
  GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
297
364
  const int value = grpc_channel_arg_get_integer(
@@ -300,7 +367,9 @@ static bool read_channel_args(grpc_chttp2_transport* t,
300
367
  ? g_default_client_keepalive_timeout_ms
301
368
  : g_default_server_keepalive_timeout_ms,
302
369
  0, INT_MAX});
303
- t->keepalive_timeout = value == INT_MAX ? GRPC_MILLIS_INF_FUTURE : value;
370
+ t->keepalive_timeout = value == INT_MAX
371
+ ? grpc_core::Duration::Infinity()
372
+ : grpc_core::Duration::Milliseconds(value);
304
373
  } else if (0 == strcmp(channel_args->args[i].key,
305
374
  GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)) {
306
375
  t->keepalive_permit_without_calls = static_cast<uint32_t>(
@@ -366,7 +435,9 @@ static bool read_channel_args(grpc_chttp2_transport* t,
366
435
  t->channelz_socket =
367
436
  grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
368
437
  std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
369
- absl::StrFormat("%s %s", get_vtable()->name, t->peer_string));
438
+ absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
439
+ grpc_core::channelz::SocketNode::Security::GetFromChannelArgs(
440
+ channel_args));
370
441
  }
371
442
  return enable_bdp;
372
443
  }
@@ -374,20 +445,24 @@ static bool read_channel_args(grpc_chttp2_transport* t,
374
445
  static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
375
446
  if (t->is_client) {
376
447
  t->keepalive_time = g_default_client_keepalive_time_ms == INT_MAX
377
- ? GRPC_MILLIS_INF_FUTURE
378
- : g_default_client_keepalive_time_ms;
448
+ ? grpc_core::Duration::Infinity()
449
+ : grpc_core::Duration::Milliseconds(
450
+ g_default_client_keepalive_time_ms);
379
451
  t->keepalive_timeout = g_default_client_keepalive_timeout_ms == INT_MAX
380
- ? GRPC_MILLIS_INF_FUTURE
381
- : g_default_client_keepalive_timeout_ms;
452
+ ? grpc_core::Duration::Infinity()
453
+ : grpc_core::Duration::Milliseconds(
454
+ g_default_client_keepalive_timeout_ms);
382
455
  t->keepalive_permit_without_calls =
383
456
  g_default_client_keepalive_permit_without_calls;
384
457
  } else {
385
458
  t->keepalive_time = g_default_server_keepalive_time_ms == INT_MAX
386
- ? GRPC_MILLIS_INF_FUTURE
387
- : g_default_server_keepalive_time_ms;
459
+ ? grpc_core::Duration::Infinity()
460
+ : grpc_core::Duration::Milliseconds(
461
+ g_default_server_keepalive_time_ms);
388
462
  t->keepalive_timeout = g_default_server_keepalive_timeout_ms == INT_MAX
389
- ? GRPC_MILLIS_INF_FUTURE
390
- : g_default_server_keepalive_timeout_ms;
463
+ ? grpc_core::Duration::Infinity()
464
+ : grpc_core::Duration::Milliseconds(
465
+ g_default_server_keepalive_timeout_ms);
391
466
  t->keepalive_permit_without_calls =
392
467
  g_default_server_keepalive_permit_without_calls;
393
468
  }
@@ -397,11 +472,12 @@ static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
397
472
  t->ping_policy.max_pings_without_data = g_default_max_pings_without_data;
398
473
  t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
399
474
  t->ping_policy.min_recv_ping_interval_without_data =
400
- g_default_min_recv_ping_interval_without_data_ms;
475
+ grpc_core::Duration::Milliseconds(
476
+ g_default_min_recv_ping_interval_without_data_ms);
401
477
  }
402
478
 
403
479
  static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
404
- if (t->keepalive_time != GRPC_MILLIS_INF_FUTURE) {
480
+ if (t->keepalive_time != grpc_core::Duration::Infinity()) {
405
481
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING;
406
482
  GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
407
483
  GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
@@ -417,14 +493,18 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
417
493
  }
418
494
 
419
495
  grpc_chttp2_transport::grpc_chttp2_transport(
420
- const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client,
421
- grpc_resource_user* resource_user)
496
+ const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client)
422
497
  : refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
423
498
  ? "chttp2_refcount"
424
499
  : nullptr),
425
500
  ep(ep),
426
501
  peer_string(grpc_endpoint_get_peer(ep)),
427
- resource_user(resource_user),
502
+ memory_owner(grpc_core::ResourceQuotaFromChannelArgs(channel_args)
503
+ ->memory_quota()
504
+ ->CreateMemoryOwner(absl::StrCat(
505
+ grpc_endpoint_get_peer(ep), ":client_transport"))),
506
+ self_reservation(
507
+ memory_owner.MakeReservation(sizeof(grpc_chttp2_transport))),
428
508
  combiner(grpc_combiner_create()),
429
509
  state_tracker(is_client ? "client_transport" : "server_transport",
430
510
  GRPC_CHANNEL_READY),
@@ -447,7 +527,6 @@ grpc_chttp2_transport::grpc_chttp2_transport(
447
527
  grpc_slice_buffer_add(&outbuf, grpc_slice_from_copied_string(
448
528
  GRPC_CHTTP2_CLIENT_CONNECT_STRING));
449
529
  }
450
- grpc_chttp2_hpack_compressor_init(&hpack_compressor);
451
530
  grpc_slice_buffer_init(&qbuf);
452
531
  // copy in initial settings to all setting sets
453
532
  size_t i;
@@ -457,7 +536,6 @@ grpc_chttp2_transport::grpc_chttp2_transport(
457
536
  settings[j][i] = grpc_chttp2_settings_parameters[i].default_value;
458
537
  }
459
538
  }
460
- grpc_chttp2_hpack_parser_init(&hpack_parser);
461
539
  grpc_chttp2_goaway_parser_init(&goaway_parser);
462
540
 
463
541
  // configure http2 the way we like it
@@ -478,7 +556,9 @@ grpc_chttp2_transport::grpc_chttp2_transport(
478
556
  enable_bdp = read_channel_args(this, channel_args, is_client);
479
557
  }
480
558
 
481
- if (g_flow_control_enabled) {
559
+ static const bool kEnableFlowControl =
560
+ !GPR_GLOBAL_CONFIG_GET(grpc_experimental_disable_flow_control);
561
+ if (kEnableFlowControl) {
482
562
  flow_control.Init<grpc_core::chttp2::TransportFlowControl>(this,
483
563
  enable_bdp);
484
564
  } else {
@@ -489,9 +569,9 @@ grpc_chttp2_transport::grpc_chttp2_transport(
489
569
  // No pings allowed before receiving a header or data frame.
490
570
  ping_state.pings_before_data_required = 0;
491
571
  ping_state.is_delayed_ping_timer_set = false;
492
- ping_state.last_ping_sent_time = GRPC_MILLIS_INF_PAST;
572
+ ping_state.last_ping_sent_time = grpc_core::Timestamp::InfPast();
493
573
 
494
- ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
574
+ ping_recv_state.last_ping_recv_time = grpc_core::Timestamp::InfPast();
495
575
  ping_recv_state.ping_strikes = 0;
496
576
 
497
577
  init_keepalive_pings_if_enabled(this);
@@ -504,15 +584,19 @@ grpc_chttp2_transport::grpc_chttp2_transport(
504
584
 
505
585
  grpc_chttp2_initiate_write(this, GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE);
506
586
  post_benign_reclaimer(this);
587
+ if (grpc_core::test_only_init_callback != nullptr) {
588
+ grpc_core::test_only_init_callback();
589
+ }
507
590
  }
508
591
 
509
- static void destroy_transport_locked(void* tp, grpc_error* /*error*/) {
592
+ static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
510
593
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
511
594
  t->destroying = 1;
512
595
  close_transport_locked(
513
596
  t, grpc_error_set_int(
514
597
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"),
515
598
  GRPC_ERROR_INT_OCCURRED_DURING_WRITE, t->write_state));
599
+ t->memory_owner.Reset();
516
600
  // Must be the last line.
517
601
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "destroy");
518
602
  }
@@ -524,7 +608,7 @@ static void destroy_transport(grpc_transport* gt) {
524
608
  }
525
609
 
526
610
  static void close_transport_locked(grpc_chttp2_transport* t,
527
- grpc_error* error) {
611
+ grpc_error_handle error) {
528
612
  end_all_the_calls(t, GRPC_ERROR_REF(error));
529
613
  cancel_pings(t, GRPC_ERROR_REF(error));
530
614
  if (t->closed_with_error == GRPC_ERROR_NONE) {
@@ -533,7 +617,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
533
617
  GRPC_STATUS_UNAVAILABLE);
534
618
  }
535
619
  if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
536
- if (t->close_transport_on_writes_finished == nullptr) {
620
+ if (t->close_transport_on_writes_finished == GRPC_ERROR_NONE) {
537
621
  t->close_transport_on_writes_finished =
538
622
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
539
623
  "Delayed close due to in-progress write");
@@ -579,6 +663,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
579
663
  GRPC_ERROR_REF(error));
580
664
  t->notify_on_receive_settings = nullptr;
581
665
  }
666
+ if (t->notify_on_close != nullptr) {
667
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
668
+ GRPC_ERROR_REF(error));
669
+ t->notify_on_close = nullptr;
670
+ }
582
671
  GRPC_ERROR_UNREF(error);
583
672
  }
584
673
 
@@ -613,8 +702,8 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
613
702
  : t(t),
614
703
  refcount(refcount),
615
704
  reffer(this),
616
- metadata_buffer{grpc_chttp2_incoming_metadata_buffer(arena),
617
- grpc_chttp2_incoming_metadata_buffer(arena)} {
705
+ initial_metadata_buffer(arena),
706
+ trailing_metadata_buffer(arena) {
618
707
  if (server_data) {
619
708
  id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
620
709
  *t->accepting_stream = this;
@@ -652,16 +741,9 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
652
741
 
653
742
  grpc_slice_buffer_destroy_internal(&unprocessed_incoming_frames_buffer);
654
743
  grpc_slice_buffer_destroy_internal(&frame_storage);
655
- if (stream_compression_method != GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS) {
656
- grpc_slice_buffer_destroy_internal(&compressed_data_buffer);
657
- }
658
- if (stream_decompression_method !=
659
- GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
660
- grpc_slice_buffer_destroy_internal(&decompressed_data_buffer);
661
- }
662
744
 
663
745
  for (int i = 0; i < STREAM_LIST_COUNT; i++) {
664
- if (GPR_UNLIKELY(included[i])) {
746
+ if (GPR_UNLIKELY(included.is_set(i))) {
665
747
  gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
666
748
  t->is_client ? "client" : "server", id, i);
667
749
  abort();
@@ -678,13 +760,7 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
678
760
  GRPC_ERROR_UNREF(read_closed_error);
679
761
  GRPC_ERROR_UNREF(write_closed_error);
680
762
  GRPC_ERROR_UNREF(byte_stream_error);
681
-
682
763
  flow_control.Destroy();
683
-
684
- if (t->resource_user != nullptr) {
685
- grpc_resource_user_free(t->resource_user, GRPC_RESOURCE_QUOTA_CALL_SIZE);
686
- }
687
-
688
764
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream");
689
765
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, GRPC_ERROR_NONE);
690
766
  }
@@ -698,7 +774,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs,
698
774
  return 0;
699
775
  }
700
776
 
701
- static void destroy_stream_locked(void* sp, grpc_error* /*error*/) {
777
+ static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
702
778
  GPR_TIMER_SCOPE("destroy_stream", 0);
703
779
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
704
780
  s->~grpc_chttp2_stream();
@@ -709,18 +785,6 @@ static void destroy_stream(grpc_transport* gt, grpc_stream* gs,
709
785
  GPR_TIMER_SCOPE("destroy_stream", 0);
710
786
  grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
711
787
  grpc_chttp2_stream* s = reinterpret_cast<grpc_chttp2_stream*>(gs);
712
- if (s->stream_compression_method !=
713
- GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS &&
714
- s->stream_compression_ctx != nullptr) {
715
- grpc_stream_compression_context_destroy(s->stream_compression_ctx);
716
- s->stream_compression_ctx = nullptr;
717
- }
718
- if (s->stream_decompression_method !=
719
- GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS &&
720
- s->stream_decompression_ctx != nullptr) {
721
- grpc_stream_compression_context_destroy(s->stream_decompression_ctx);
722
- s->stream_decompression_ctx = nullptr;
723
- }
724
788
 
725
789
  s->destroy_stream_arg = then_schedule_closure;
726
790
  t->combiner->Run(
@@ -733,18 +797,6 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
733
797
  if (t->accept_stream_cb == nullptr) {
734
798
  return nullptr;
735
799
  }
736
- // Don't accept the stream if memory quota doesn't allow. Note that we should
737
- // simply refuse the stream here instead of canceling the stream after it's
738
- // accepted since the latter will create the call which costs much memory.
739
- if (t->resource_user != nullptr &&
740
- !grpc_resource_user_safe_alloc(t->resource_user,
741
- GRPC_RESOURCE_QUOTA_CALL_SIZE)) {
742
- gpr_log(GPR_ERROR, "Memory exhausted, rejecting the stream.");
743
- grpc_chttp2_add_rst_stream_to_next_write(t, id, GRPC_HTTP2_REFUSED_STREAM,
744
- nullptr);
745
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM);
746
- return nullptr;
747
- }
748
800
  grpc_chttp2_stream* accepting = nullptr;
749
801
  GPR_ASSERT(t->accepting_stream == nullptr);
750
802
  t->accepting_stream = &accepting;
@@ -785,9 +837,9 @@ static void set_write_state(grpc_chttp2_transport* t,
785
837
  // from peer while we had some pending writes)
786
838
  if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
787
839
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
788
- if (t->close_transport_on_writes_finished != nullptr) {
789
- grpc_error* err = t->close_transport_on_writes_finished;
790
- t->close_transport_on_writes_finished = nullptr;
840
+ if (t->close_transport_on_writes_finished != GRPC_ERROR_NONE) {
841
+ grpc_error_handle err = t->close_transport_on_writes_finished;
842
+ t->close_transport_on_writes_finished = GRPC_ERROR_NONE;
791
843
  close_transport_locked(t, err);
792
844
  }
793
845
  }
@@ -835,6 +887,9 @@ static void inc_initiate_write_reason(
835
887
  case GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS:
836
888
  GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS();
837
889
  break;
890
+ case GRPC_CHTTP2_INITIATE_WRITE_SETTINGS_ACK:
891
+ GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SETTINGS_ACK();
892
+ break;
838
893
  case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING:
839
894
  GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING();
840
895
  break;
@@ -918,7 +973,8 @@ static const char* begin_writing_desc(bool partial) {
918
973
  }
919
974
  }
920
975
 
921
- static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
976
+ static void write_action_begin_locked(void* gt,
977
+ grpc_error_handle /*error_ignored*/) {
922
978
  GPR_TIMER_SCOPE("write_action_begin_locked", 0);
923
979
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
924
980
  GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
@@ -957,7 +1013,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
957
1013
  }
958
1014
  }
959
1015
 
960
- static void write_action(void* gt, grpc_error* /*error*/) {
1016
+ static void write_action(void* gt, grpc_error_handle /*error*/) {
961
1017
  GPR_TIMER_SCOPE("write_action", 0);
962
1018
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
963
1019
  void* cl = t->cl;
@@ -966,10 +1022,10 @@ static void write_action(void* gt, grpc_error* /*error*/) {
966
1022
  t->ep, &t->outbuf,
967
1023
  GRPC_CLOSURE_INIT(&t->write_action_end_locked, write_action_end, t,
968
1024
  grpc_schedule_on_exec_ctx),
969
- cl);
1025
+ cl, /*max_frame_size=*/INT_MAX);
970
1026
  }
971
1027
 
972
- static void write_action_end(void* tp, grpc_error* error) {
1028
+ static void write_action_end(void* tp, grpc_error_handle error) {
973
1029
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
974
1030
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
975
1031
  write_action_end_locked, t, nullptr),
@@ -978,7 +1034,7 @@ static void write_action_end(void* tp, grpc_error* error) {
978
1034
 
979
1035
  // Callback from the grpc_endpoint after bytes have been written by calling
980
1036
  // sendmsg
981
- static void write_action_end_locked(void* tp, grpc_error* error) {
1037
+ static void write_action_end_locked(void* tp, grpc_error_handle error) {
982
1038
  GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
983
1039
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
984
1040
 
@@ -988,8 +1044,8 @@ static void write_action_end_locked(void* tp, grpc_error* error) {
988
1044
  closed = true;
989
1045
  }
990
1046
 
991
- if (t->sent_goaway_state == GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED) {
992
- t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SENT;
1047
+ if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED) {
1048
+ t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SENT;
993
1049
  closed = true;
994
1050
  if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
995
1051
  close_transport_locked(
@@ -1033,7 +1089,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
1033
1089
  grpc_chttp2_setting_id id, uint32_t value) {
1034
1090
  const grpc_chttp2_setting_parameters* sp =
1035
1091
  &grpc_chttp2_settings_parameters[id];
1036
- uint32_t use_value = GPR_CLAMP(value, sp->min_value, sp->max_value);
1092
+ uint32_t use_value = grpc_core::Clamp(value, sp->min_value, sp->max_value);
1037
1093
  if (use_value != value) {
1038
1094
  gpr_log(GPR_INFO, "Requested parameter %s clamped from %d to %d", sp->name,
1039
1095
  value, use_value);
@@ -1044,10 +1100,23 @@ static void queue_setting_update(grpc_chttp2_transport* t,
1044
1100
  }
1045
1101
  }
1046
1102
 
1103
+ // Cancel out streams that haven't yet started if we have received a GOAWAY
1104
+ static void cancel_unstarted_streams(grpc_chttp2_transport* t,
1105
+ grpc_error_handle error) {
1106
+ grpc_chttp2_stream* s;
1107
+ while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1108
+ s->trailing_metadata_buffer.Set(
1109
+ grpc_core::GrpcStreamNetworkState(),
1110
+ grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
1111
+ grpc_chttp2_cancel_stream(t, s, GRPC_ERROR_REF(error));
1112
+ }
1113
+ GRPC_ERROR_UNREF(error);
1114
+ }
1115
+
1047
1116
  void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1048
1117
  uint32_t goaway_error,
1049
1118
  uint32_t last_stream_id,
1050
- const grpc_slice& goaway_text) {
1119
+ absl::string_view goaway_text) {
1051
1120
  // Discard the error from a previous goaway frame (if any)
1052
1121
  if (t->goaway_error != GRPC_ERROR_NONE) {
1053
1122
  GRPC_ERROR_UNREF(t->goaway_error);
@@ -1067,7 +1136,25 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1067
1136
  // received a GOAWAY with a non NO_ERROR code.
1068
1137
  if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1069
1138
  gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
1070
- goaway_error, grpc_error_string(t->goaway_error));
1139
+ goaway_error, grpc_error_std_string(t->goaway_error).c_str());
1140
+ }
1141
+ if (t->is_client) {
1142
+ cancel_unstarted_streams(t, GRPC_ERROR_REF(t->goaway_error));
1143
+ // Cancel all unseen streams
1144
+ grpc_chttp2_stream_map_for_each(
1145
+ &t->stream_map,
1146
+ [](void* user_data, uint32_t /* key */, void* stream) {
1147
+ uint32_t last_stream_id = *(static_cast<uint32_t*>(user_data));
1148
+ grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(stream);
1149
+ if (s->id > last_stream_id) {
1150
+ s->trailing_metadata_buffer.Set(
1151
+ grpc_core::GrpcStreamNetworkState(),
1152
+ grpc_core::GrpcStreamNetworkState::kNotSeenByServer);
1153
+ grpc_chttp2_cancel_stream(s->t, s,
1154
+ GRPC_ERROR_REF(s->t->goaway_error));
1155
+ }
1156
+ },
1157
+ &last_stream_id);
1071
1158
  }
1072
1159
  absl::Status status = grpc_error_to_absl_status(t->goaway_error);
1073
1160
  // When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
@@ -1076,38 +1163,33 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1076
1163
  // for new connections on that channel.
1077
1164
  if (GPR_UNLIKELY(t->is_client &&
1078
1165
  goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
1079
- grpc_slice_str_cmp(goaway_text, "too_many_pings") == 0)) {
1166
+ goaway_text == "too_many_pings")) {
1080
1167
  gpr_log(GPR_ERROR,
1081
1168
  "Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
1082
1169
  "data equal to \"too_many_pings\"");
1083
- double current_keepalive_time_ms = static_cast<double>(t->keepalive_time);
1084
- constexpr int max_keepalive_time_ms =
1085
- INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
1170
+ constexpr auto max_keepalive_time = grpc_core::Duration::Milliseconds(
1171
+ INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
1086
1172
  t->keepalive_time =
1087
- current_keepalive_time_ms > static_cast<double>(max_keepalive_time_ms)
1088
- ? GRPC_MILLIS_INF_FUTURE
1089
- : static_cast<grpc_millis>(current_keepalive_time_ms *
1090
- KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
1173
+ t->keepalive_time > max_keepalive_time
1174
+ ? grpc_core::Duration::Infinity()
1175
+ : t->keepalive_time * KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
1091
1176
  status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
1092
- absl::Cord(std::to_string(t->keepalive_time)));
1177
+ absl::Cord(std::to_string(t->keepalive_time.millis())));
1093
1178
  }
1094
1179
  // lie: use transient failure from the transport to indicate goaway has been
1095
1180
  // received.
1096
- connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status,
1097
- "got_goaway");
1181
+ if (!grpc_core::test_only_disable_transient_failure_state_notification) {
1182
+ connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status,
1183
+ "got_goaway");
1184
+ }
1098
1185
  }
1099
1186
 
1100
1187
  static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1101
1188
  grpc_chttp2_stream* s;
1102
- // cancel out streams that haven't yet started if we have received a GOAWAY
1189
+ // maybe cancel out streams that haven't yet started if we have received a
1190
+ // GOAWAY
1103
1191
  if (t->goaway_error != GRPC_ERROR_NONE) {
1104
- while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1105
- grpc_chttp2_cancel_stream(
1106
- t, s,
1107
- grpc_error_set_int(
1108
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("GOAWAY received"),
1109
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1110
- }
1192
+ cancel_unstarted_streams(t, GRPC_ERROR_REF(t->goaway_error));
1111
1193
  return;
1112
1194
  }
1113
1195
  // start streams where we have free grpc_chttp2_stream ids and free
@@ -1142,6 +1224,9 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1142
1224
  // cancel out streams that will never be started
1143
1225
  if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
1144
1226
  while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1227
+ s->trailing_metadata_buffer.Set(
1228
+ grpc_core::GrpcStreamNetworkState(),
1229
+ grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
1145
1230
  grpc_chttp2_cancel_stream(
1146
1231
  t, s,
1147
1232
  grpc_error_set_int(
@@ -1173,7 +1258,8 @@ static void null_then_sched_closure(grpc_closure** closure) {
1173
1258
  void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1174
1259
  grpc_chttp2_stream* /*s*/,
1175
1260
  grpc_closure** pclosure,
1176
- grpc_error* error, const char* desc) {
1261
+ grpc_error_handle error,
1262
+ const char* desc) {
1177
1263
  grpc_closure* closure = *pclosure;
1178
1264
  *pclosure = nullptr;
1179
1265
  if (closure == nullptr) {
@@ -1182,7 +1268,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1182
1268
  }
1183
1269
  closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
1184
1270
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1185
- const char* errstr = grpc_error_string(error);
1186
1271
  gpr_log(
1187
1272
  GPR_INFO,
1188
1273
  "complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
@@ -1192,39 +1277,53 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1192
1277
  CLOSURE_BARRIER_FIRST_REF_BIT),
1193
1278
  static_cast<int>(closure->next_data.scratch %
1194
1279
  CLOSURE_BARRIER_FIRST_REF_BIT),
1195
- desc, errstr, write_state_name(t->write_state));
1280
+ desc, grpc_error_std_string(error).c_str(),
1281
+ write_state_name(t->write_state));
1196
1282
  }
1197
1283
  if (error != GRPC_ERROR_NONE) {
1198
- if (closure->error_data.error == GRPC_ERROR_NONE) {
1199
- closure->error_data.error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1284
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
1285
+ grpc_error_handle cl_err =
1286
+ grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
1287
+ #else
1288
+ grpc_error_handle cl_err =
1289
+ reinterpret_cast<grpc_error_handle>(closure->error_data.error);
1290
+ #endif
1291
+ if (cl_err == GRPC_ERROR_NONE) {
1292
+ cl_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1200
1293
  "Error in HTTP transport completing operation");
1201
- closure->error_data.error = grpc_error_set_str(
1202
- closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
1203
- grpc_slice_from_copied_string(t->peer_string.c_str()));
1294
+ cl_err = grpc_error_set_str(cl_err, GRPC_ERROR_STR_TARGET_ADDRESS,
1295
+ t->peer_string);
1204
1296
  }
1205
- closure->error_data.error =
1206
- grpc_error_add_child(closure->error_data.error, error);
1297
+ cl_err = grpc_error_add_child(cl_err, error);
1298
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
1299
+ closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(cl_err);
1300
+ #else
1301
+ closure->error_data.error = reinterpret_cast<intptr_t>(cl_err);
1302
+ #endif
1207
1303
  }
1208
1304
  if (closure->next_data.scratch < CLOSURE_BARRIER_FIRST_REF_BIT) {
1209
1305
  if ((t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE) ||
1210
1306
  !(closure->next_data.scratch & CLOSURE_BARRIER_MAY_COVER_WRITE)) {
1211
1307
  // Using GRPC_CLOSURE_SCHED instead of GRPC_CLOSURE_RUN to avoid running
1212
1308
  // closures earlier than when it is safe to do so.
1213
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure,
1214
- closure->error_data.error);
1309
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
1310
+ grpc_error_handle run_error =
1311
+ grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
1312
+ #else
1313
+ grpc_error_handle run_error =
1314
+ reinterpret_cast<grpc_error_handle>(closure->error_data.error);
1315
+ #endif
1316
+ closure->error_data.error = 0;
1317
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, run_error);
1215
1318
  } else {
1216
- grpc_closure_list_append(&t->run_after_write, closure,
1217
- closure->error_data.error);
1319
+ grpc_closure_list_append(&t->run_after_write, closure);
1218
1320
  }
1219
1321
  }
1220
1322
  }
1221
1323
 
1222
1324
  static bool contains_non_ok_status(grpc_metadata_batch* batch) {
1223
- if (batch->idx.named.grpc_status != nullptr) {
1224
- return !grpc_mdelem_static_value_eq(batch->idx.named.grpc_status->md,
1225
- GRPC_MDELEM_GRPC_STATUS_0);
1226
- }
1227
- return false;
1325
+ return batch->get(grpc_core::GrpcStatusMetadata()).value_or(GRPC_STATUS_OK) !=
1326
+ GRPC_STATUS_OK;
1228
1327
  }
1229
1328
 
1230
1329
  static void maybe_become_writable_due_to_send_msg(grpc_chttp2_transport* t,
@@ -1250,7 +1349,6 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1250
1349
  if (s->fetching_send_message == nullptr) {
1251
1350
  // Stream was cancelled before message fetch completed
1252
1351
  abort(); /* TODO(ctiller): what cleanup here? */
1253
- return; /* early out */
1254
1352
  }
1255
1353
  if (s->fetched_send_message_length == s->fetching_send_message->length()) {
1256
1354
  int64_t notify_offset = s->next_message_end_offset;
@@ -1281,7 +1379,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1281
1379
  UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
1282
1380
  ::complete_fetch, s,
1283
1381
  grpc_schedule_on_exec_ctx))) {
1284
- grpc_error* error = s->fetching_send_message->Pull(&s->fetching_slice);
1382
+ grpc_error_handle error =
1383
+ s->fetching_send_message->Pull(&s->fetching_slice);
1285
1384
  if (error != GRPC_ERROR_NONE) {
1286
1385
  s->fetching_send_message.reset();
1287
1386
  grpc_chttp2_cancel_stream(t, s, error);
@@ -1292,14 +1391,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1292
1391
  }
1293
1392
  }
1294
1393
 
1295
- static void complete_fetch(void* gs, grpc_error* error) {
1394
+ static void complete_fetch(void* gs, grpc_error_handle error) {
1296
1395
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
1297
1396
  s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
1298
1397
  ::complete_fetch_locked, s, nullptr),
1299
1398
  GRPC_ERROR_REF(error));
1300
1399
  }
1301
1400
 
1302
- static void complete_fetch_locked(void* gs, grpc_error* error) {
1401
+ static void complete_fetch_locked(void* gs, grpc_error_handle error) {
1303
1402
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
1304
1403
  grpc_chttp2_transport* t = s->t;
1305
1404
  if (error == GRPC_ERROR_NONE) {
@@ -1317,19 +1416,15 @@ static void complete_fetch_locked(void* gs, grpc_error* error) {
1317
1416
 
1318
1417
  static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
1319
1418
  bool is_client, bool is_initial) {
1320
- for (grpc_linked_mdelem* md = md_batch->list.head; md != nullptr;
1321
- md = md->next) {
1322
- char* key = grpc_slice_to_c_string(GRPC_MDKEY(md->md));
1323
- char* value = grpc_slice_to_c_string(GRPC_MDVALUE(md->md));
1324
- gpr_log(GPR_INFO, "HTTP:%d:%s:%s: %s: %s", id, is_initial ? "HDR" : "TRL",
1325
- is_client ? "CLI" : "SVR", key, value);
1326
- gpr_free(key);
1327
- gpr_free(value);
1328
- }
1419
+ const std::string prefix = absl::StrCat(
1420
+ "HTTP:", id, is_initial ? ":HDR" : ":TRL", is_client ? ":CLI:" : ":SVR:");
1421
+ md_batch->Log([&prefix](absl::string_view key, absl::string_view value) {
1422
+ gpr_log(GPR_INFO, "%s", absl::StrCat(prefix, key, ": ", value).c_str());
1423
+ });
1329
1424
  }
1330
1425
 
1331
1426
  static void perform_stream_op_locked(void* stream_op,
1332
- grpc_error* /*error_ignored*/) {
1427
+ grpc_error_handle /*error_ignored*/) {
1333
1428
  GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
1334
1429
 
1335
1430
  grpc_transport_stream_op_batch* op =
@@ -1344,8 +1439,10 @@ static void perform_stream_op_locked(void* stream_op,
1344
1439
  s->context = op->payload->context;
1345
1440
  s->traced = op->is_traced;
1346
1441
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1347
- gpr_log(GPR_INFO, "perform_stream_op_locked: %s; on_complete = %p",
1348
- grpc_transport_stream_op_batch_string(op).c_str(), op->on_complete);
1442
+ gpr_log(GPR_INFO,
1443
+ "perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s,
1444
+ op, grpc_transport_stream_op_batch_string(op).c_str(),
1445
+ op->on_complete);
1349
1446
  if (op->send_initial_metadata) {
1350
1447
  log_metadata(op_payload->send_initial_metadata.send_initial_metadata,
1351
1448
  s->id, t->is_client, true);
@@ -1362,7 +1459,7 @@ static void perform_stream_op_locked(void* stream_op,
1362
1459
  // This batch has send ops. Use final_data as a barrier until enqueue time;
1363
1460
  // the initial counter is dropped at the end of this function.
1364
1461
  on_complete->next_data.scratch = CLOSURE_BARRIER_FIRST_REF_BIT;
1365
- on_complete->error_data.error = GRPC_ERROR_NONE;
1462
+ on_complete->error_data.error = 0;
1366
1463
  }
1367
1464
 
1368
1465
  if (op->cancel_stream) {
@@ -1378,27 +1475,14 @@ static void perform_stream_op_locked(void* stream_op,
1378
1475
  GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
1379
1476
  on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1380
1477
 
1381
- // Identify stream compression
1382
- if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
1383
- .content_encoding == nullptr ||
1384
- grpc_stream_compression_method_parse(
1385
- GRPC_MDVALUE(
1386
- op_payload->send_initial_metadata.send_initial_metadata->idx
1387
- .named.content_encoding->md),
1388
- true, &s->stream_compression_method) == 0) {
1389
- s->stream_compression_method = GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS;
1390
- }
1391
- if (s->stream_compression_method !=
1392
- GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS) {
1393
- s->uncompressed_data_size = 0;
1394
- s->stream_compression_ctx = nullptr;
1395
- grpc_slice_buffer_init(&s->compressed_data_buffer);
1396
- }
1397
1478
  s->send_initial_metadata_finished = add_closure_barrier(on_complete);
1398
1479
  s->send_initial_metadata =
1399
1480
  op_payload->send_initial_metadata.send_initial_metadata;
1400
1481
  if (t->is_client) {
1401
- s->deadline = GPR_MIN(s->deadline, s->send_initial_metadata->deadline);
1482
+ s->deadline = std::min(
1483
+ s->deadline,
1484
+ s->send_initial_metadata->get(grpc_core::GrpcTimeoutMetadata())
1485
+ .value_or(grpc_core::Timestamp::InfFuture()));
1402
1486
  }
1403
1487
  if (contains_non_ok_status(s->send_initial_metadata)) {
1404
1488
  s->seen_error = true;
@@ -1410,6 +1494,9 @@ static void perform_stream_op_locked(void* stream_op,
1410
1494
  grpc_chttp2_list_add_waiting_for_concurrency(t, s);
1411
1495
  maybe_start_some_streams(t);
1412
1496
  } else {
1497
+ s->trailing_metadata_buffer.Set(
1498
+ grpc_core::GrpcStreamNetworkState(),
1499
+ grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
1413
1500
  grpc_chttp2_cancel_stream(
1414
1501
  t, s,
1415
1502
  grpc_error_set_int(
@@ -1504,8 +1591,7 @@ static void perform_stream_op_locked(void* stream_op,
1504
1591
  s->sent_trailing_metadata_op = nullptr;
1505
1592
  grpc_chttp2_complete_closure_step(
1506
1593
  t, s, &s->send_trailing_metadata_finished,
1507
- grpc_metadata_batch_is_empty(
1508
- op->payload->send_trailing_metadata.send_trailing_metadata)
1594
+ op->payload->send_trailing_metadata.send_trailing_metadata->empty()
1509
1595
  ? GRPC_ERROR_NONE
1510
1596
  : GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1511
1597
  "Attempt to send trailing metadata after "
@@ -1543,6 +1629,8 @@ static void perform_stream_op_locked(void* stream_op,
1543
1629
  GPR_ASSERT(!s->pending_byte_stream);
1544
1630
  s->recv_message_ready = op_payload->recv_message.recv_message_ready;
1545
1631
  s->recv_message = op_payload->recv_message.recv_message;
1632
+ s->call_failed_before_recv_message =
1633
+ op_payload->recv_message.call_failed_before_recv_message;
1546
1634
  if (s->id != 0) {
1547
1635
  if (!s->read_closed) {
1548
1636
  before = s->frame_storage.length +
@@ -1552,8 +1640,7 @@ static void perform_stream_op_locked(void* stream_op,
1552
1640
  grpc_chttp2_maybe_complete_recv_message(t, s);
1553
1641
  if (s->id != 0) {
1554
1642
  if (!s->read_closed && s->frame_storage.length == 0) {
1555
- size_t after = s->frame_storage.length +
1556
- s->unprocessed_incoming_frames_buffer_cached_length;
1643
+ size_t after = s->unprocessed_incoming_frames_buffer_cached_length;
1557
1644
  s->flow_control->IncomingByteStreamUpdate(GRPC_HEADER_SIZE_IN_BYTES,
1558
1645
  before - after);
1559
1646
  grpc_chttp2_act_on_flowctl_action(s->flow_control->MakeAction(), t, s);
@@ -1590,19 +1677,19 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1590
1677
 
1591
1678
  if (!t->is_client) {
1592
1679
  if (op->send_initial_metadata) {
1593
- grpc_millis deadline =
1594
- op->payload->send_initial_metadata.send_initial_metadata->deadline;
1595
- GPR_ASSERT(deadline == GRPC_MILLIS_INF_FUTURE);
1680
+ GPR_ASSERT(!op->payload->send_initial_metadata.send_initial_metadata
1681
+ ->get(grpc_core::GrpcTimeoutMetadata())
1682
+ .has_value());
1596
1683
  }
1597
1684
  if (op->send_trailing_metadata) {
1598
- grpc_millis deadline =
1599
- op->payload->send_trailing_metadata.send_trailing_metadata->deadline;
1600
- GPR_ASSERT(deadline == GRPC_MILLIS_INF_FUTURE);
1685
+ GPR_ASSERT(!op->payload->send_trailing_metadata.send_trailing_metadata
1686
+ ->get(grpc_core::GrpcTimeoutMetadata())
1687
+ .has_value());
1601
1688
  }
1602
1689
  }
1603
1690
 
1604
1691
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1605
- gpr_log(GPR_INFO, "perform_stream_op[s=%p]: %s", s,
1692
+ gpr_log(GPR_INFO, "perform_stream_op[s=%p; op=%p]: %s", s, op,
1606
1693
  grpc_transport_stream_op_batch_string(op).c_str());
1607
1694
  }
1608
1695
 
@@ -1613,7 +1700,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1613
1700
  GRPC_ERROR_NONE);
1614
1701
  }
1615
1702
 
1616
- static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) {
1703
+ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
1617
1704
  // callback remaining pings: they're not allowed to call into the transport,
1618
1705
  // and maybe they hold resources that need to be freed
1619
1706
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
@@ -1680,14 +1767,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1680
1767
  GRPC_ERROR_NONE);
1681
1768
  }
1682
1769
 
1683
- void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error* error) {
1770
+ void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
1684
1771
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1685
1772
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
1686
1773
  retry_initiate_ping_locked, t, nullptr),
1687
1774
  GRPC_ERROR_REF(error));
1688
1775
  }
1689
1776
 
1690
- static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
1777
+ static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
1691
1778
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1692
1779
  t->ping_state.is_delayed_ping_timer_set = false;
1693
1780
  if (error == GRPC_ERROR_NONE) {
@@ -1710,18 +1797,129 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1710
1797
  }
1711
1798
  }
1712
1799
 
1713
- static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) {
1714
- // We want to log this irrespective of whether http tracing is enabled
1715
- gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1716
- grpc_error_string(error));
1717
- t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
1800
+ namespace {
1801
+
1802
+ // Fire and forget (deletes itself on completion). Does a graceful shutdown by
1803
+ // sending a GOAWAY frame with the last stream id set to 2^31-1, sending a ping
1804
+ // and waiting for an ack (effective waiting for an RTT) and then sending a
1805
+ // final GOAWAY freame with an updated last stream identifier. This helps ensure
1806
+ // that a connection can be cleanly shut down without losing requests.
1807
+ // In the event, that the client does not respond to the ping for some reason,
1808
+ // we add a 20 second deadline, after which we send the second goaway.
1809
+ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1810
+ public:
1811
+ static void Start(grpc_chttp2_transport* t) { new GracefulGoaway(t); }
1812
+
1813
+ ~GracefulGoaway() override {
1814
+ GRPC_CHTTP2_UNREF_TRANSPORT(t_, "graceful goaway");
1815
+ }
1816
+
1817
+ private:
1818
+ explicit GracefulGoaway(grpc_chttp2_transport* t) : t_(t) {
1819
+ t->sent_goaway_state = GRPC_CHTTP2_GRACEFUL_GOAWAY;
1820
+ GRPC_CHTTP2_REF_TRANSPORT(t_, "graceful goaway");
1821
+ grpc_chttp2_goaway_append((1u << 31) - 1, 0, grpc_empty_slice(), &t->qbuf);
1822
+ send_ping_locked(
1823
+ t, nullptr, GRPC_CLOSURE_INIT(&on_ping_ack_, OnPingAck, this, nullptr));
1824
+ grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1825
+ Ref().release(); // Ref for the timer
1826
+ grpc_timer_init(
1827
+ &timer_,
1828
+ grpc_core::ExecCtx::Get()->Now() + grpc_core::Duration::Seconds(20),
1829
+ GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr));
1830
+ }
1831
+
1832
+ void MaybeSendFinalGoawayLocked() {
1833
+ if (t_->sent_goaway_state != GRPC_CHTTP2_GRACEFUL_GOAWAY) {
1834
+ // We already sent the final GOAWAY.
1835
+ return;
1836
+ }
1837
+ if (t_->destroying || t_->closed_with_error != GRPC_ERROR_NONE) {
1838
+ GRPC_CHTTP2_IF_TRACING(gpr_log(
1839
+ GPR_INFO,
1840
+ "transport:%p %s peer:%s Transport already shutting down. "
1841
+ "Graceful GOAWAY abandoned.",
1842
+ t_, t_->is_client ? "CLIENT" : "SERVER", t_->peer_string.c_str()));
1843
+ return;
1844
+ }
1845
+ // Ping completed. Send final goaway.
1846
+ GRPC_CHTTP2_IF_TRACING(
1847
+ gpr_log(GPR_INFO,
1848
+ "transport:%p %s peer:%s Graceful shutdown: Ping received. "
1849
+ "Sending final GOAWAY with stream_id:%d",
1850
+ t_, t_->is_client ? "CLIENT" : "SERVER",
1851
+ t_->peer_string.c_str(), t_->last_new_stream_id));
1852
+ t_->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1853
+ grpc_chttp2_goaway_append(t_->last_new_stream_id, 0, grpc_empty_slice(),
1854
+ &t_->qbuf);
1855
+ grpc_chttp2_initiate_write(t_, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1856
+ }
1857
+
1858
+ static void OnPingAck(void* arg, grpc_error_handle /* error */) {
1859
+ auto* self = static_cast<GracefulGoaway*>(arg);
1860
+ self->t_->combiner->Run(
1861
+ GRPC_CLOSURE_INIT(&self->on_ping_ack_, OnPingAckLocked, self, nullptr),
1862
+ GRPC_ERROR_NONE);
1863
+ }
1864
+
1865
+ static void OnPingAckLocked(void* arg, grpc_error_handle /* error */) {
1866
+ auto* self = static_cast<GracefulGoaway*>(arg);
1867
+ grpc_timer_cancel(&self->timer_);
1868
+ self->MaybeSendFinalGoawayLocked();
1869
+ self->Unref();
1870
+ }
1871
+
1872
+ static void OnTimer(void* arg, grpc_error_handle error) {
1873
+ auto* self = static_cast<GracefulGoaway*>(arg);
1874
+ if (error != GRPC_ERROR_NONE) {
1875
+ self->Unref();
1876
+ return;
1877
+ }
1878
+ self->t_->combiner->Run(
1879
+ GRPC_CLOSURE_INIT(&self->on_timer_, OnTimerLocked, self, nullptr),
1880
+ GRPC_ERROR_NONE);
1881
+ }
1882
+
1883
+ static void OnTimerLocked(void* arg, grpc_error_handle /* error */) {
1884
+ auto* self = static_cast<GracefulGoaway*>(arg);
1885
+ self->MaybeSendFinalGoawayLocked();
1886
+ self->Unref();
1887
+ }
1888
+
1889
+ grpc_chttp2_transport* t_;
1890
+ grpc_closure on_ping_ack_;
1891
+ grpc_timer timer_;
1892
+ grpc_closure on_timer_;
1893
+ };
1894
+
1895
+ } // namespace
1896
+
1897
+ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1898
+ bool immediate_disconnect_hint) {
1718
1899
  grpc_http2_error_code http_error;
1719
- grpc_slice slice;
1720
- grpc_error_get_status(error, GRPC_MILLIS_INF_FUTURE, nullptr, &slice,
1721
- &http_error, nullptr);
1722
- grpc_chttp2_goaway_append(t->last_new_stream_id,
1723
- static_cast<uint32_t>(http_error),
1724
- grpc_slice_ref_internal(slice), &t->qbuf);
1900
+ std::string message;
1901
+ grpc_error_get_status(error, grpc_core::Timestamp::InfFuture(), nullptr,
1902
+ &message, &http_error, nullptr);
1903
+ if (!t->is_client && http_error == GRPC_HTTP2_NO_ERROR &&
1904
+ !immediate_disconnect_hint) {
1905
+ // Do a graceful shutdown.
1906
+ if (t->sent_goaway_state == GRPC_CHTTP2_NO_GOAWAY_SEND) {
1907
+ GracefulGoaway::Start(t);
1908
+ } else {
1909
+ // Graceful GOAWAY is already in progress.
1910
+ }
1911
+ } else if (t->sent_goaway_state == GRPC_CHTTP2_NO_GOAWAY_SEND ||
1912
+ t->sent_goaway_state == GRPC_CHTTP2_GRACEFUL_GOAWAY) {
1913
+ // We want to log this irrespective of whether http tracing is enabled
1914
+ gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1915
+ grpc_error_std_string(error).c_str());
1916
+ t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1917
+ grpc_chttp2_goaway_append(
1918
+ t->last_new_stream_id, static_cast<uint32_t>(http_error),
1919
+ grpc_slice_from_cpp_string(std::move(message)), &t->qbuf);
1920
+ } else {
1921
+ // Final GOAWAY has already been sent.
1922
+ }
1725
1923
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1726
1924
  GRPC_ERROR_UNREF(error);
1727
1925
  }
@@ -1732,7 +1930,8 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1732
1930
  send_goaway(t,
1733
1931
  grpc_error_set_int(
1734
1932
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
1735
- GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
1933
+ GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM),
1934
+ /*immediate_disconnect_hint=*/true);
1736
1935
  // The transport will be closed after the write is done
1737
1936
  close_transport_locked(
1738
1937
  t, grpc_error_set_int(
@@ -1743,7 +1942,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1743
1942
 
1744
1943
  void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
1745
1944
  if (!t->is_client) {
1746
- t->ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
1945
+ t->ping_recv_state.last_ping_recv_time = grpc_core::Timestamp::InfPast();
1747
1946
  t->ping_recv_state.ping_strikes = 0;
1748
1947
  }
1749
1948
  t->ping_state.pings_before_data_required =
@@ -1751,13 +1950,13 @@ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
1751
1950
  }
1752
1951
 
1753
1952
  static void perform_transport_op_locked(void* stream_op,
1754
- grpc_error* /*error_ignored*/) {
1953
+ grpc_error_handle /*error_ignored*/) {
1755
1954
  grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
1756
1955
  grpc_chttp2_transport* t =
1757
1956
  static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
1758
1957
 
1759
- if (op->goaway_error) {
1760
- send_goaway(t, op->goaway_error);
1958
+ if (op->goaway_error != GRPC_ERROR_NONE) {
1959
+ send_goaway(t, op->goaway_error, /*immediate_disconnect_hint=*/false);
1761
1960
  }
1762
1961
 
1763
1962
  if (op->set_accept_stream) {
@@ -1787,6 +1986,8 @@ static void perform_transport_op_locked(void* stream_op,
1787
1986
  }
1788
1987
 
1789
1988
  if (op->disconnect_with_error != GRPC_ERROR_NONE) {
1989
+ send_goaway(t, GRPC_ERROR_REF(op->disconnect_with_error),
1990
+ /*immediate_disconnect_hint=*/true);
1790
1991
  close_transport_locked(t, op->disconnect_with_error);
1791
1992
  }
1792
1993
 
@@ -1812,8 +2013,8 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1812
2013
  // INPUT PROCESSING - GENERAL
1813
2014
  //
1814
2015
 
1815
- void grpc_chttp2_maybe_complete_recv_initial_metadata(
1816
- grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
2016
+ void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t,
2017
+ grpc_chttp2_stream* s) {
1817
2018
  if (s->recv_initial_metadata_ready != nullptr &&
1818
2019
  s->published_metadata[0] != GRPC_METADATA_NOT_PUBLISHED) {
1819
2020
  if (s->seen_error) {
@@ -1823,15 +2024,24 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
1823
2024
  &s->unprocessed_incoming_frames_buffer);
1824
2025
  }
1825
2026
  }
1826
- grpc_chttp2_incoming_metadata_buffer_publish(&s->metadata_buffer[0],
1827
- s->recv_initial_metadata);
2027
+ *s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
2028
+ s->recv_initial_metadata->Set(grpc_core::PeerString(), t->peer_string);
2029
+ // If we didn't receive initial metadata from the wire and instead faked a
2030
+ // status (due to stream cancellations for example), let upper layers know
2031
+ // that trailing metadata is immediately available.
2032
+ if (s->trailing_metadata_available != nullptr &&
2033
+ s->published_metadata[0] != GRPC_METADATA_PUBLISHED_FROM_WIRE &&
2034
+ s->published_metadata[1] == GRPC_METADATA_SYNTHESIZED_FROM_FAKE) {
2035
+ *s->trailing_metadata_available = true;
2036
+ s->trailing_metadata_available = nullptr;
2037
+ }
1828
2038
  null_then_sched_closure(&s->recv_initial_metadata_ready);
1829
2039
  }
1830
2040
  }
1831
2041
 
1832
2042
  void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
1833
2043
  grpc_chttp2_stream* s) {
1834
- grpc_error* error = GRPC_ERROR_NONE;
2044
+ grpc_error_handle error = GRPC_ERROR_NONE;
1835
2045
  if (s->recv_message_ready != nullptr) {
1836
2046
  *s->recv_message = nullptr;
1837
2047
  if (s->final_metadata_requested && s->seen_error) {
@@ -1847,48 +2057,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
1847
2057
  if (s->unprocessed_incoming_frames_buffer.length == 0) {
1848
2058
  grpc_slice_buffer_swap(&s->unprocessed_incoming_frames_buffer,
1849
2059
  &s->frame_storage);
1850
- s->unprocessed_incoming_frames_decompressed = false;
1851
- }
1852
- if (!s->unprocessed_incoming_frames_decompressed &&
1853
- s->stream_decompression_method !=
1854
- GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
1855
- GPR_ASSERT(s->decompressed_data_buffer.length == 0);
1856
- bool end_of_context;
1857
- if (!s->stream_decompression_ctx) {
1858
- s->stream_decompression_ctx =
1859
- grpc_stream_compression_context_create(
1860
- s->stream_decompression_method);
1861
- }
1862
- if (!grpc_stream_decompress(
1863
- s->stream_decompression_ctx,
1864
- &s->unprocessed_incoming_frames_buffer,
1865
- &s->decompressed_data_buffer, nullptr,
1866
- GRPC_HEADER_SIZE_IN_BYTES - s->decompressed_header_bytes,
1867
- &end_of_context)) {
1868
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
1869
- grpc_slice_buffer_reset_and_unref_internal(
1870
- &s->unprocessed_incoming_frames_buffer);
1871
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1872
- "Stream decompression error.");
1873
- } else {
1874
- s->decompressed_header_bytes += s->decompressed_data_buffer.length;
1875
- if (s->decompressed_header_bytes == GRPC_HEADER_SIZE_IN_BYTES) {
1876
- s->decompressed_header_bytes = 0;
1877
- }
1878
- error = grpc_deframe_unprocessed_incoming_frames(
1879
- &s->data_parser, s, &s->decompressed_data_buffer, nullptr,
1880
- s->recv_message);
1881
- if (end_of_context) {
1882
- grpc_stream_compression_context_destroy(
1883
- s->stream_decompression_ctx);
1884
- s->stream_decompression_ctx = nullptr;
1885
- }
1886
- }
1887
- } else {
1888
- error = grpc_deframe_unprocessed_incoming_frames(
1889
- &s->data_parser, s, &s->unprocessed_incoming_frames_buffer,
1890
- nullptr, s->recv_message);
1891
2060
  }
2061
+ error = grpc_deframe_unprocessed_incoming_frames(
2062
+ &s->data_parser, s, &s->unprocessed_incoming_frames_buffer, nullptr,
2063
+ s->recv_message);
1892
2064
  if (error != GRPC_ERROR_NONE) {
1893
2065
  s->seen_error = true;
1894
2066
  grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
@@ -1908,6 +2080,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
1908
2080
  null_then_sched_closure(&s->recv_message_ready);
1909
2081
  } else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
1910
2082
  *s->recv_message = nullptr;
2083
+ if (s->call_failed_before_recv_message != nullptr) {
2084
+ *s->call_failed_before_recv_message =
2085
+ (s->published_metadata[1] != GRPC_METADATA_PUBLISHED_AT_CLOSE);
2086
+ }
1911
2087
  null_then_sched_closure(&s->recv_message_ready);
1912
2088
  }
1913
2089
  GRPC_ERROR_UNREF(error);
@@ -1932,56 +2108,27 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1932
2108
  !s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
1933
2109
  // Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
1934
2110
  // maybe decompress the next 5 bytes in the stream.
1935
- if (s->stream_decompression_method ==
1936
- GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
1937
- grpc_slice_buffer_move_first(
1938
- &s->frame_storage,
1939
- GPR_MIN(s->frame_storage.length, GRPC_HEADER_SIZE_IN_BYTES),
1940
- &s->unprocessed_incoming_frames_buffer);
1941
- if (s->unprocessed_incoming_frames_buffer.length > 0) {
1942
- s->unprocessed_incoming_frames_decompressed = true;
1943
- pending_data = true;
1944
- }
1945
- } else {
1946
- bool end_of_context;
1947
- if (!s->stream_decompression_ctx) {
1948
- s->stream_decompression_ctx = grpc_stream_compression_context_create(
1949
- s->stream_decompression_method);
1950
- }
1951
- if (!grpc_stream_decompress(
1952
- s->stream_decompression_ctx, &s->frame_storage,
1953
- &s->unprocessed_incoming_frames_buffer, nullptr,
1954
- GRPC_HEADER_SIZE_IN_BYTES, &end_of_context)) {
1955
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
1956
- grpc_slice_buffer_reset_and_unref_internal(
1957
- &s->unprocessed_incoming_frames_buffer);
1958
- s->seen_error = true;
1959
- } else {
1960
- if (s->unprocessed_incoming_frames_buffer.length > 0) {
1961
- s->unprocessed_incoming_frames_decompressed = true;
1962
- pending_data = true;
1963
- }
1964
- if (end_of_context) {
1965
- grpc_stream_compression_context_destroy(
1966
- s->stream_decompression_ctx);
1967
- s->stream_decompression_ctx = nullptr;
1968
- }
1969
- }
2111
+ grpc_slice_buffer_move_first(
2112
+ &s->frame_storage,
2113
+ std::min(s->frame_storage.length, size_t(GRPC_HEADER_SIZE_IN_BYTES)),
2114
+ &s->unprocessed_incoming_frames_buffer);
2115
+ if (s->unprocessed_incoming_frames_buffer.length > 0) {
2116
+ pending_data = true;
1970
2117
  }
1971
2118
  }
1972
2119
  if (s->read_closed && s->frame_storage.length == 0 && !pending_data &&
1973
2120
  s->recv_trailing_metadata_finished != nullptr) {
1974
2121
  grpc_transport_move_stats(&s->stats, s->collecting_stats);
1975
2122
  s->collecting_stats = nullptr;
1976
- grpc_chttp2_incoming_metadata_buffer_publish(&s->metadata_buffer[1],
1977
- s->recv_trailing_metadata);
2123
+ *s->recv_trailing_metadata = std::move(s->trailing_metadata_buffer);
2124
+ s->recv_trailing_metadata->Set(grpc_core::PeerString(), t->peer_string);
1978
2125
  null_then_sched_closure(&s->recv_trailing_metadata_finished);
1979
2126
  }
1980
2127
  }
1981
2128
  }
1982
2129
 
1983
2130
  static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
1984
- grpc_error* error) {
2131
+ grpc_error_handle error) {
1985
2132
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
1986
2133
  grpc_chttp2_stream_map_delete(&t->stream_map, id));
1987
2134
  GPR_DEBUG_ASSERT(s);
@@ -2006,7 +2153,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2006
2153
 
2007
2154
  if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
2008
2155
  post_benign_reclaimer(t);
2009
- if (t->sent_goaway_state == GRPC_CHTTP2_GOAWAY_SENT) {
2156
+ if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
2010
2157
  close_transport_locked(
2011
2158
  t, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2012
2159
  "Last stream closed after sending GOAWAY", &error, 1));
@@ -2024,7 +2171,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2024
2171
  }
2025
2172
 
2026
2173
  void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2027
- grpc_error* due_to_error) {
2174
+ grpc_error_handle due_to_error) {
2028
2175
  if (!t->is_client && !s->sent_trailing_metadata &&
2029
2176
  grpc_error_has_clear_grpc_status(due_to_error)) {
2030
2177
  close_from_api(t, s, due_to_error);
@@ -2048,10 +2195,11 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2048
2195
  }
2049
2196
 
2050
2197
  void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2051
- grpc_error* error) {
2198
+ grpc_error_handle error) {
2052
2199
  grpc_status_code status;
2053
- grpc_slice slice;
2054
- grpc_error_get_status(error, s->deadline, &status, &slice, nullptr, nullptr);
2200
+ std::string message;
2201
+ grpc_error_get_status(error, s->deadline, &status, &message, nullptr,
2202
+ nullptr);
2055
2203
  if (status != GRPC_STATUS_OK) {
2056
2204
  s->seen_error = true;
2057
2205
  }
@@ -2063,20 +2211,11 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2063
2211
  // about the metadata yet
2064
2212
  if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
2065
2213
  s->recv_trailing_metadata_finished != nullptr) {
2066
- char status_string[GPR_LTOA_MIN_BUFSIZE];
2067
- gpr_ltoa(status, status_string);
2068
- GRPC_LOG_IF_ERROR("add_status",
2069
- grpc_chttp2_incoming_metadata_buffer_replace_or_add(
2070
- &s->metadata_buffer[1],
2071
- grpc_mdelem_from_slices(
2072
- GRPC_MDSTR_GRPC_STATUS,
2073
- grpc_core::UnmanagedMemorySlice(status_string))));
2074
- if (!GRPC_SLICE_IS_EMPTY(slice)) {
2075
- GRPC_LOG_IF_ERROR(
2076
- "add_status_message",
2077
- grpc_chttp2_incoming_metadata_buffer_replace_or_add(
2078
- &s->metadata_buffer[1],
2079
- grpc_mdelem_create(GRPC_MDSTR_GRPC_MESSAGE, slice, nullptr)));
2214
+ s->trailing_metadata_buffer.Set(grpc_core::GrpcStatusMetadata(), status);
2215
+ if (!message.empty()) {
2216
+ s->trailing_metadata_buffer.Set(
2217
+ grpc_core::GrpcMessageMetadata(),
2218
+ grpc_core::Slice::FromCopiedBuffer(message));
2080
2219
  }
2081
2220
  s->published_metadata[1] = GRPC_METADATA_SYNTHESIZED_FROM_FAKE;
2082
2221
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
@@ -2085,7 +2224,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2085
2224
  GRPC_ERROR_UNREF(error);
2086
2225
  }
2087
2226
 
2088
- static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
2227
+ static void add_error(grpc_error_handle error, grpc_error_handle* refs,
2228
+ size_t* nrefs) {
2089
2229
  if (error == GRPC_ERROR_NONE) return;
2090
2230
  for (size_t i = 0; i < *nrefs; i++) {
2091
2231
  if (error == refs[i]) {
@@ -2096,16 +2236,17 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
2096
2236
  ++*nrefs;
2097
2237
  }
2098
2238
 
2099
- static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
2100
- const char* master_error_msg) {
2101
- grpc_error* refs[3];
2239
+ static grpc_error_handle removal_error(grpc_error_handle extra_error,
2240
+ grpc_chttp2_stream* s,
2241
+ const char* main_error_msg) {
2242
+ grpc_error_handle refs[3];
2102
2243
  size_t nrefs = 0;
2103
2244
  add_error(s->read_closed_error, refs, &nrefs);
2104
2245
  add_error(s->write_closed_error, refs, &nrefs);
2105
2246
  add_error(extra_error, refs, &nrefs);
2106
- grpc_error* error = GRPC_ERROR_NONE;
2247
+ grpc_error_handle error = GRPC_ERROR_NONE;
2107
2248
  if (nrefs > 0) {
2108
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(master_error_msg,
2249
+ error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
2109
2250
  refs, nrefs);
2110
2251
  }
2111
2252
  GRPC_ERROR_UNREF(extra_error);
@@ -2113,7 +2254,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
2113
2254
  }
2114
2255
 
2115
2256
  static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2116
- grpc_chttp2_write_cb** list, grpc_error* error) {
2257
+ grpc_chttp2_write_cb** list,
2258
+ grpc_error_handle error) {
2117
2259
  while (*list) {
2118
2260
  grpc_chttp2_write_cb* cb = *list;
2119
2261
  *list = cb->next;
@@ -2126,7 +2268,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2126
2268
  }
2127
2269
 
2128
2270
  void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2129
- grpc_chttp2_stream* s, grpc_error* error) {
2271
+ grpc_chttp2_stream* s,
2272
+ grpc_error_handle error) {
2130
2273
  error =
2131
2274
  removal_error(error, s, "Pending writes failed due to stream closure");
2132
2275
  s->send_initial_metadata = nullptr;
@@ -2150,10 +2293,10 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2150
2293
 
2151
2294
  void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2152
2295
  grpc_chttp2_stream* s, int close_reads,
2153
- int close_writes, grpc_error* error) {
2296
+ int close_writes, grpc_error_handle error) {
2154
2297
  if (s->read_closed && s->write_closed) {
2155
2298
  // already closed, but we should still fake the status if needed.
2156
- grpc_error* overall_error = removal_error(error, s, "Stream removed");
2299
+ grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2157
2300
  if (overall_error != GRPC_ERROR_NONE) {
2158
2301
  grpc_chttp2_fake_status(t, s, overall_error);
2159
2302
  }
@@ -2174,7 +2317,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2174
2317
  }
2175
2318
  if (s->read_closed && s->write_closed) {
2176
2319
  became_closed = true;
2177
- grpc_error* overall_error =
2320
+ grpc_error_handle overall_error =
2178
2321
  removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
2179
2322
  if (s->id != 0) {
2180
2323
  remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
@@ -2203,7 +2346,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2203
2346
  }
2204
2347
 
2205
2348
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2206
- grpc_error* error) {
2349
+ grpc_error_handle error) {
2207
2350
  grpc_slice hdr;
2208
2351
  grpc_slice status_hdr;
2209
2352
  grpc_slice http_status_hdr;
@@ -2212,8 +2355,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2212
2355
  uint8_t* p;
2213
2356
  uint32_t len = 0;
2214
2357
  grpc_status_code grpc_status;
2215
- grpc_slice slice;
2216
- grpc_error_get_status(error, s->deadline, &grpc_status, &slice, nullptr,
2358
+ std::string message;
2359
+ grpc_error_get_status(error, s->deadline, &grpc_status, &message, nullptr,
2217
2360
  nullptr);
2218
2361
 
2219
2362
  GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
@@ -2306,10 +2449,10 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2306
2449
  GPR_ASSERT(p == GRPC_SLICE_END_PTR(status_hdr));
2307
2450
  len += static_cast<uint32_t> GRPC_SLICE_LENGTH(status_hdr);
2308
2451
 
2309
- size_t msg_len = GRPC_SLICE_LENGTH(slice);
2452
+ size_t msg_len = message.length();
2310
2453
  GPR_ASSERT(msg_len <= UINT32_MAX);
2311
- uint32_t msg_len_len = GRPC_CHTTP2_VARINT_LENGTH((uint32_t)msg_len, 1);
2312
- message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_len);
2454
+ grpc_core::VarintWriter<1> msg_len_writer(msg_len);
2455
+ message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
2313
2456
  p = GRPC_SLICE_START_PTR(message_pfx);
2314
2457
  *p++ = 0x00; /* literal header, not indexed */
2315
2458
  *p++ = 12; /* len(grpc-message) */
@@ -2325,8 +2468,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2325
2468
  *p++ = 'a';
2326
2469
  *p++ = 'g';
2327
2470
  *p++ = 'e';
2328
- GRPC_CHTTP2_WRITE_VARINT((uint32_t)msg_len, 1, 0, p, (uint32_t)msg_len_len);
2329
- p += msg_len_len;
2471
+ msg_len_writer.Write(0, p);
2472
+ p += msg_len_writer.length();
2330
2473
  GPR_ASSERT(p == GRPC_SLICE_END_PTR(message_pfx));
2331
2474
  len += static_cast<uint32_t> GRPC_SLICE_LENGTH(message_pfx);
2332
2475
  len += static_cast<uint32_t>(msg_len);
@@ -2351,7 +2494,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2351
2494
  }
2352
2495
  grpc_slice_buffer_add(&t->qbuf, status_hdr);
2353
2496
  grpc_slice_buffer_add(&t->qbuf, message_pfx);
2354
- grpc_slice_buffer_add(&t->qbuf, grpc_slice_ref_internal(slice));
2497
+ grpc_slice_buffer_add(&t->qbuf,
2498
+ grpc_slice_from_cpp_string(std::move(message)));
2355
2499
  grpc_chttp2_reset_ping_clock(t);
2356
2500
  grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
2357
2501
  &s->stats.outgoing);
@@ -2361,7 +2505,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2361
2505
  }
2362
2506
 
2363
2507
  struct cancel_stream_cb_args {
2364
- grpc_error* error;
2508
+ grpc_error_handle error;
2365
2509
  grpc_chttp2_transport* t;
2366
2510
  };
2367
2511
 
@@ -2371,7 +2515,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
2371
2515
  grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
2372
2516
  }
2373
2517
 
2374
- static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
2518
+ static void end_all_the_calls(grpc_chttp2_transport* t,
2519
+ grpc_error_handle error) {
2375
2520
  intptr_t http2_error;
2376
2521
  // If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
2377
2522
  if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
@@ -2379,6 +2524,7 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
2379
2524
  error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
2380
2525
  GRPC_STATUS_UNAVAILABLE);
2381
2526
  }
2527
+ cancel_unstarted_streams(t, GRPC_ERROR_REF(error));
2382
2528
  cancel_stream_cb_args args = {error, t};
2383
2529
  grpc_chttp2_stream_map_for_each(&t->stream_map, cancel_stream_cb, &args);
2384
2530
  GRPC_ERROR_UNREF(error);
@@ -2397,7 +2543,7 @@ static void WithUrgency(grpc_chttp2_transport* t,
2397
2543
  break;
2398
2544
  case grpc_core::chttp2::FlowControlAction::Urgency::UPDATE_IMMEDIATELY:
2399
2545
  grpc_chttp2_initiate_write(t, reason);
2400
- // fallthrough
2546
+ ABSL_FALLTHROUGH_INTENDED;
2401
2547
  case grpc_core::chttp2::FlowControlAction::Urgency::QUEUE_UPDATE:
2402
2548
  action();
2403
2549
  break;
@@ -2425,15 +2571,15 @@ void grpc_chttp2_act_on_flowctl_action(
2425
2571
  });
2426
2572
  }
2427
2573
 
2428
- static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
2574
+ static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
2429
2575
  grpc_http_parser parser;
2430
2576
  size_t i = 0;
2431
- grpc_error* error = GRPC_ERROR_NONE;
2577
+ grpc_error_handle error = GRPC_ERROR_NONE;
2432
2578
  grpc_http_response response;
2433
2579
 
2434
2580
  grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
2435
2581
 
2436
- grpc_error* parse_error = GRPC_ERROR_NONE;
2582
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
2437
2583
  for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
2438
2584
  parse_error =
2439
2585
  grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
@@ -2454,34 +2600,34 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
2454
2600
  return error;
2455
2601
  }
2456
2602
 
2457
- static void read_action(void* tp, grpc_error* error) {
2603
+ static void read_action(void* tp, grpc_error_handle error) {
2458
2604
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2459
2605
  t->combiner->Run(
2460
2606
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
2461
2607
  GRPC_ERROR_REF(error));
2462
2608
  }
2463
2609
 
2464
- static void read_action_locked(void* tp, grpc_error* error) {
2610
+ static void read_action_locked(void* tp, grpc_error_handle error) {
2465
2611
  GPR_TIMER_SCOPE("reading_action_locked", 0);
2466
2612
 
2467
2613
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2468
2614
 
2469
- GRPC_ERROR_REF(error);
2615
+ (void)GRPC_ERROR_REF(error);
2470
2616
 
2471
- grpc_error* err = error;
2617
+ grpc_error_handle err = error;
2472
2618
  if (err != GRPC_ERROR_NONE) {
2473
2619
  err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2474
2620
  "Endpoint read failed", &err, 1),
2475
2621
  GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
2476
2622
  t->write_state);
2477
2623
  }
2478
- GPR_SWAP(grpc_error*, err, error);
2624
+ std::swap(err, error);
2479
2625
  GRPC_ERROR_UNREF(err);
2480
2626
  if (t->closed_with_error == GRPC_ERROR_NONE) {
2481
2627
  GPR_TIMER_SCOPE("reading_action.parse", 0);
2482
2628
  size_t i = 0;
2483
- grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2484
- GRPC_ERROR_NONE};
2629
+ grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2630
+ GRPC_ERROR_NONE};
2485
2631
  for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
2486
2632
  errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
2487
2633
  }
@@ -2555,7 +2701,8 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
2555
2701
  const bool urgent = t->goaway_error != GRPC_ERROR_NONE;
2556
2702
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action, t,
2557
2703
  grpc_schedule_on_exec_ctx);
2558
- grpc_endpoint_read(t->ep, &t->read_buffer, &t->read_action_locked, urgent);
2704
+ grpc_endpoint_read(t->ep, &t->read_buffer, &t->read_action_locked, urgent,
2705
+ /*min_progress_size=*/1);
2559
2706
  grpc_chttp2_act_on_flowctl_action(t->flow_control->MakeAction(), t, nullptr);
2560
2707
  }
2561
2708
 
@@ -2569,23 +2716,21 @@ void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2569
2716
  grpc_schedule_on_exec_ctx),
2570
2717
  GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
2571
2718
  grpc_schedule_on_exec_ctx));
2572
- // TODO(yashykt): Enabling this causes internal b/168345569. Re-enable once
2573
- // fixed.
2574
- // grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2719
+ grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2575
2720
  }
2576
2721
 
2577
- static void start_bdp_ping(void* tp, grpc_error* error) {
2722
+ static void start_bdp_ping(void* tp, grpc_error_handle error) {
2578
2723
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2579
2724
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
2580
2725
  start_bdp_ping_locked, t, nullptr),
2581
2726
  GRPC_ERROR_REF(error));
2582
2727
  }
2583
2728
 
2584
- static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2729
+ static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2585
2730
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2586
2731
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2587
2732
  gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
2588
- grpc_error_string(error));
2733
+ grpc_error_std_string(error).c_str());
2589
2734
  }
2590
2735
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2591
2736
  return;
@@ -2598,18 +2743,18 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2598
2743
  t->bdp_ping_started = true;
2599
2744
  }
2600
2745
 
2601
- static void finish_bdp_ping(void* tp, grpc_error* error) {
2746
+ static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2602
2747
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2603
2748
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2604
2749
  finish_bdp_ping_locked, t, nullptr),
2605
2750
  GRPC_ERROR_REF(error));
2606
2751
  }
2607
2752
 
2608
- static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2753
+ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2609
2754
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2610
2755
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2611
2756
  gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
2612
- grpc_error_string(error));
2757
+ grpc_error_std_string(error).c_str());
2613
2758
  }
2614
2759
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2615
2760
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
@@ -2624,7 +2769,8 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2624
2769
  return;
2625
2770
  }
2626
2771
  t->bdp_ping_started = false;
2627
- grpc_millis next_ping = t->flow_control->bdp_estimator()->CompletePing();
2772
+ grpc_core::Timestamp next_ping =
2773
+ t->flow_control->bdp_estimator()->CompletePing();
2628
2774
  grpc_chttp2_act_on_flowctl_action(t->flow_control->PeriodicUpdate(), t,
2629
2775
  nullptr);
2630
2776
  GPR_ASSERT(!t->have_next_bdp_ping_timer);
@@ -2635,7 +2781,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2635
2781
  &t->next_bdp_ping_timer_expired_locked);
2636
2782
  }
2637
2783
 
2638
- static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
2784
+ static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
2639
2785
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2640
2786
  t->combiner->Run(
2641
2787
  GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
@@ -2643,7 +2789,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
2643
2789
  GRPC_ERROR_REF(error));
2644
2790
  }
2645
2791
 
2646
- static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
2792
+ static void next_bdp_ping_timer_expired_locked(void* tp,
2793
+ grpc_error_handle error) {
2647
2794
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2648
2795
  GPR_ASSERT(t->have_next_bdp_ping_timer);
2649
2796
  t->have_next_bdp_ping_timer = false;
@@ -2719,14 +2866,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2719
2866
  }
2720
2867
  }
2721
2868
 
2722
- static void init_keepalive_ping(void* arg, grpc_error* error) {
2869
+ static void init_keepalive_ping(void* arg, grpc_error_handle error) {
2723
2870
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2724
2871
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
2725
2872
  init_keepalive_ping_locked, t, nullptr),
2726
2873
  GRPC_ERROR_REF(error));
2727
2874
  }
2728
2875
 
2729
- static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2876
+ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2730
2877
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2731
2878
  GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
2732
2879
  if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
@@ -2759,14 +2906,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2759
2906
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
2760
2907
  }
2761
2908
 
2762
- static void start_keepalive_ping(void* arg, grpc_error* error) {
2909
+ static void start_keepalive_ping(void* arg, grpc_error_handle error) {
2763
2910
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2764
2911
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
2765
2912
  start_keepalive_ping_locked, t, nullptr),
2766
2913
  GRPC_ERROR_REF(error));
2767
2914
  }
2768
2915
 
2769
- static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2916
+ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2770
2917
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2771
2918
  if (error != GRPC_ERROR_NONE) {
2772
2919
  return;
@@ -2787,14 +2934,14 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2787
2934
  t->keepalive_ping_started = true;
2788
2935
  }
2789
2936
 
2790
- static void finish_keepalive_ping(void* arg, grpc_error* error) {
2937
+ static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
2791
2938
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2792
2939
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2793
2940
  finish_keepalive_ping_locked, t, nullptr),
2794
2941
  GRPC_ERROR_REF(error));
2795
2942
  }
2796
2943
 
2797
- static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2944
+ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2798
2945
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2799
2946
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2800
2947
  if (error == GRPC_ERROR_NONE) {
@@ -2825,7 +2972,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2825
2972
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
2826
2973
  }
2827
2974
 
2828
- static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
2975
+ static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
2829
2976
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2830
2977
  t->combiner->Run(
2831
2978
  GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
@@ -2833,7 +2980,8 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
2833
2980
  GRPC_ERROR_REF(error));
2834
2981
  }
2835
2982
 
2836
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2983
+ static void keepalive_watchdog_fired_locked(void* arg,
2984
+ grpc_error_handle error) {
2837
2985
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2838
2986
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2839
2987
  if (error == GRPC_ERROR_NONE) {
@@ -2890,7 +3038,7 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
2890
3038
  // BYTE STREAM
2891
3039
  //
2892
3040
 
2893
- static void reset_byte_stream(void* arg, grpc_error* error) {
3041
+ static void reset_byte_stream(void* arg, grpc_error_handle error) {
2894
3042
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
2895
3043
  s->pending_byte_stream = false;
2896
3044
  if (error == GRPC_ERROR_NONE) {
@@ -2921,8 +3069,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream(
2921
3069
  stream->byte_stream_error = GRPC_ERROR_NONE;
2922
3070
  }
2923
3071
 
2924
- void Chttp2IncomingByteStream::OrphanLocked(void* arg,
2925
- grpc_error* /*error_ignored*/) {
3072
+ void Chttp2IncomingByteStream::OrphanLocked(
3073
+ void* arg, grpc_error_handle /*error_ignored*/) {
2926
3074
  Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
2927
3075
  grpc_chttp2_stream* s = bs->stream_;
2928
3076
  grpc_chttp2_transport* t = s->t;
@@ -2941,7 +3089,7 @@ void Chttp2IncomingByteStream::Orphan() {
2941
3089
  }
2942
3090
 
2943
3091
  void Chttp2IncomingByteStream::NextLocked(void* arg,
2944
- grpc_error* /*error_ignored*/) {
3092
+ grpc_error_handle /*error_ignored*/) {
2945
3093
  Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
2946
3094
  grpc_chttp2_transport* t = bs->transport_;
2947
3095
  grpc_chttp2_stream* s = bs->stream_;
@@ -2955,12 +3103,10 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
2955
3103
  if (s->frame_storage.length > 0) {
2956
3104
  grpc_slice_buffer_swap(&s->frame_storage,
2957
3105
  &s->unprocessed_incoming_frames_buffer);
2958
- s->unprocessed_incoming_frames_decompressed = false;
2959
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete,
2960
- GRPC_ERROR_NONE);
3106
+ ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete, GRPC_ERROR_NONE);
2961
3107
  } else if (s->byte_stream_error != GRPC_ERROR_NONE) {
2962
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete,
2963
- GRPC_ERROR_REF(s->byte_stream_error));
3108
+ ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete,
3109
+ GRPC_ERROR_REF(s->byte_stream_error));
2964
3110
  if (s->data_parser.parsing_frame != nullptr) {
2965
3111
  s->data_parser.parsing_frame->Unref();
2966
3112
  s->data_parser.parsing_frame = nullptr;
@@ -2969,8 +3115,8 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
2969
3115
  if (bs->remaining_bytes_ != 0) {
2970
3116
  s->byte_stream_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2971
3117
  "Truncated message", &s->read_closed_error, 1);
2972
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete,
2973
- GRPC_ERROR_REF(s->byte_stream_error));
3118
+ ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete,
3119
+ GRPC_ERROR_REF(s->byte_stream_error));
2974
3120
  if (s->data_parser.parsing_frame != nullptr) {
2975
3121
  s->data_parser.parsing_frame->Unref();
2976
3122
  s->data_parser.parsing_frame = nullptr;
@@ -3002,45 +3148,10 @@ bool Chttp2IncomingByteStream::Next(size_t max_size_hint,
3002
3148
  }
3003
3149
  }
3004
3150
 
3005
- void Chttp2IncomingByteStream::MaybeCreateStreamDecompressionCtx() {
3006
- GPR_DEBUG_ASSERT(stream_->stream_decompression_method !=
3007
- GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS);
3008
- if (!stream_->stream_decompression_ctx) {
3009
- stream_->stream_decompression_ctx = grpc_stream_compression_context_create(
3010
- stream_->stream_decompression_method);
3011
- }
3012
- }
3013
-
3014
- grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3151
+ grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3015
3152
  GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
3016
- grpc_error* error;
3153
+ grpc_error_handle error;
3017
3154
  if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
3018
- if (!stream_->unprocessed_incoming_frames_decompressed &&
3019
- stream_->stream_decompression_method !=
3020
- GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
3021
- bool end_of_context;
3022
- MaybeCreateStreamDecompressionCtx();
3023
- if (!grpc_stream_decompress(stream_->stream_decompression_ctx,
3024
- &stream_->unprocessed_incoming_frames_buffer,
3025
- &stream_->decompressed_data_buffer, nullptr,
3026
- MAX_SIZE_T, &end_of_context)) {
3027
- error =
3028
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Stream decompression error.");
3029
- return error;
3030
- }
3031
- GPR_ASSERT(stream_->unprocessed_incoming_frames_buffer.length == 0);
3032
- grpc_slice_buffer_swap(&stream_->unprocessed_incoming_frames_buffer,
3033
- &stream_->decompressed_data_buffer);
3034
- stream_->unprocessed_incoming_frames_decompressed = true;
3035
- if (end_of_context) {
3036
- grpc_stream_compression_context_destroy(
3037
- stream_->stream_decompression_ctx);
3038
- stream_->stream_decompression_ctx = nullptr;
3039
- }
3040
- if (stream_->unprocessed_incoming_frames_buffer.length == 0) {
3041
- *slice = grpc_empty_slice();
3042
- }
3043
- }
3044
3155
  error = grpc_deframe_unprocessed_incoming_frames(
3045
3156
  &stream_->data_parser, stream_,
3046
3157
  &stream_->unprocessed_incoming_frames_buffer, slice, nullptr);
@@ -3056,20 +3167,19 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3056
3167
  return GRPC_ERROR_NONE;
3057
3168
  }
3058
3169
 
3059
- void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
3170
+ void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
3060
3171
  GPR_ASSERT(error != GRPC_ERROR_NONE);
3061
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, stream_->on_next,
3062
- GRPC_ERROR_REF(error));
3172
+ ExecCtx::Run(DEBUG_LOCATION, stream_->on_next, GRPC_ERROR_REF(error));
3063
3173
  stream_->on_next = nullptr;
3064
3174
  GRPC_ERROR_UNREF(stream_->byte_stream_error);
3065
3175
  stream_->byte_stream_error = GRPC_ERROR_REF(error);
3066
3176
  grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
3067
3177
  }
3068
3178
 
3069
- grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3070
- grpc_slice* slice_out) {
3179
+ grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3180
+ grpc_slice* slice_out) {
3071
3181
  if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
3072
- grpc_error* error =
3182
+ grpc_error_handle error =
3073
3183
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
3074
3184
  transport_->combiner->Run(&stream_->reset_byte_stream,
3075
3185
  GRPC_ERROR_REF(error));
@@ -3084,8 +3194,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3084
3194
  }
3085
3195
  }
3086
3196
 
3087
- grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
3088
- bool reset_on_error) {
3197
+ grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
3198
+ bool reset_on_error) {
3089
3199
  if (error == GRPC_ERROR_NONE) {
3090
3200
  if (remaining_bytes_ != 0) {
3091
3201
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
@@ -3099,7 +3209,7 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
3099
3209
  return error;
3100
3210
  }
3101
3211
 
3102
- void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
3212
+ void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
3103
3213
  GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
3104
3214
  }
3105
3215
 
@@ -3113,10 +3223,19 @@ static void post_benign_reclaimer(grpc_chttp2_transport* t) {
3113
3223
  if (!t->benign_reclaimer_registered) {
3114
3224
  t->benign_reclaimer_registered = true;
3115
3225
  GRPC_CHTTP2_REF_TRANSPORT(t, "benign_reclaimer");
3116
- GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked, benign_reclaimer, t,
3117
- grpc_schedule_on_exec_ctx);
3118
- grpc_resource_user_post_reclaimer(grpc_endpoint_get_resource_user(t->ep),
3119
- false, &t->benign_reclaimer_locked);
3226
+ t->memory_owner.PostReclaimer(
3227
+ grpc_core::ReclamationPass::kBenign,
3228
+ [t](absl::optional<grpc_core::ReclamationSweep> sweep) {
3229
+ if (sweep.has_value()) {
3230
+ GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
3231
+ benign_reclaimer_locked, t,
3232
+ grpc_schedule_on_exec_ctx);
3233
+ t->active_reclamation = std::move(*sweep);
3234
+ t->combiner->Run(&t->benign_reclaimer_locked, GRPC_ERROR_NONE);
3235
+ } else {
3236
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3237
+ }
3238
+ });
3120
3239
  }
3121
3240
  }
3122
3241
 
@@ -3124,21 +3243,23 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
3124
3243
  if (!t->destructive_reclaimer_registered) {
3125
3244
  t->destructive_reclaimer_registered = true;
3126
3245
  GRPC_CHTTP2_REF_TRANSPORT(t, "destructive_reclaimer");
3127
- GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked, destructive_reclaimer,
3128
- t, grpc_schedule_on_exec_ctx);
3129
- grpc_resource_user_post_reclaimer(grpc_endpoint_get_resource_user(t->ep),
3130
- true, &t->destructive_reclaimer_locked);
3246
+ t->memory_owner.PostReclaimer(
3247
+ grpc_core::ReclamationPass::kDestructive,
3248
+ [t](absl::optional<grpc_core::ReclamationSweep> sweep) {
3249
+ if (sweep.has_value()) {
3250
+ GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
3251
+ destructive_reclaimer_locked, t,
3252
+ grpc_schedule_on_exec_ctx);
3253
+ t->active_reclamation = std::move(*sweep);
3254
+ t->combiner->Run(&t->destructive_reclaimer_locked, GRPC_ERROR_NONE);
3255
+ } else {
3256
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3257
+ }
3258
+ });
3131
3259
  }
3132
3260
  }
3133
3261
 
3134
- static void benign_reclaimer(void* arg, grpc_error* error) {
3135
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3136
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
3137
- benign_reclaimer_locked, t, nullptr),
3138
- GRPC_ERROR_REF(error));
3139
- }
3140
-
3141
- static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3262
+ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
3142
3263
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3143
3264
  if (error == GRPC_ERROR_NONE &&
3144
3265
  grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
@@ -3151,7 +3272,8 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3151
3272
  send_goaway(t,
3152
3273
  grpc_error_set_int(
3153
3274
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"),
3154
- GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
3275
+ GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM),
3276
+ /*immediate_disconnect_hint=*/true);
3155
3277
  } else if (error == GRPC_ERROR_NONE &&
3156
3278
  GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
3157
3279
  gpr_log(GPR_INFO,
@@ -3162,20 +3284,12 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3162
3284
  }
3163
3285
  t->benign_reclaimer_registered = false;
3164
3286
  if (error != GRPC_ERROR_CANCELLED) {
3165
- grpc_resource_user_finish_reclamation(
3166
- grpc_endpoint_get_resource_user(t->ep));
3287
+ t->active_reclamation.Finish();
3167
3288
  }
3168
3289
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3169
3290
  }
3170
3291
 
3171
- static void destructive_reclaimer(void* arg, grpc_error* error) {
3172
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3173
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
3174
- destructive_reclaimer_locked, t, nullptr),
3175
- GRPC_ERROR_REF(error));
3176
- }
3177
-
3178
- static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3292
+ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
3179
3293
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3180
3294
  size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
3181
3295
  t->destructive_reclaimer_registered = false;
@@ -3200,8 +3314,7 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3200
3314
  }
3201
3315
  }
3202
3316
  if (error != GRPC_ERROR_CANCELLED) {
3203
- grpc_resource_user_finish_reclamation(
3204
- grpc_endpoint_get_resource_user(t->ep));
3317
+ t->active_reclamation.Finish();
3205
3318
  }
3206
3319
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
3207
3320
  }
@@ -3239,6 +3352,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
3239
3352
  return "TRANSPORT_FLOW_CONTROL";
3240
3353
  case GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS:
3241
3354
  return "SEND_SETTINGS";
3355
+ case GRPC_CHTTP2_INITIATE_WRITE_SETTINGS_ACK:
3356
+ return "SETTINGS_ACK";
3242
3357
  case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING:
3243
3358
  return "FLOW_CONTROL_UNSTALLED_BY_SETTING";
3244
3359
  case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE:
@@ -3266,6 +3381,7 @@ static grpc_endpoint* chttp2_get_endpoint(grpc_transport* t) {
3266
3381
  static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
3267
3382
  "chttp2",
3268
3383
  init_stream,
3384
+ nullptr,
3269
3385
  set_pollset,
3270
3386
  set_pollset_set,
3271
3387
  perform_stream_op,
@@ -3284,16 +3400,14 @@ grpc_chttp2_transport_get_socket_node(grpc_transport* transport) {
3284
3400
  }
3285
3401
 
3286
3402
  grpc_transport* grpc_create_chttp2_transport(
3287
- const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client,
3288
- grpc_resource_user* resource_user) {
3289
- auto t =
3290
- new grpc_chttp2_transport(channel_args, ep, is_client, resource_user);
3403
+ const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client) {
3404
+ auto t = new grpc_chttp2_transport(channel_args, ep, is_client);
3291
3405
  return &t->base;
3292
3406
  }
3293
3407
 
3294
3408
  void grpc_chttp2_transport_start_reading(
3295
3409
  grpc_transport* transport, grpc_slice_buffer* read_buffer,
3296
- grpc_closure* notify_on_receive_settings) {
3410
+ grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close) {
3297
3411
  grpc_chttp2_transport* t =
3298
3412
  reinterpret_cast<grpc_chttp2_transport*>(transport);
3299
3413
  GRPC_CHTTP2_REF_TRANSPORT(
@@ -3303,6 +3417,7 @@ void grpc_chttp2_transport_start_reading(
3303
3417
  gpr_free(read_buffer);
3304
3418
  }
3305
3419
  t->notify_on_receive_settings = notify_on_receive_settings;
3420
+ t->notify_on_close = notify_on_close;
3306
3421
  t->combiner->Run(
3307
3422
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
3308
3423
  GRPC_ERROR_NONE);