grpc 1.30.0 → 1.46.3

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