grpc 1.37.0 → 1.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

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