grpc 1.34.0 → 1.42.0

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

Potentially problematic release.


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

Files changed (1545) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +978 -2868
  3. data/etc/roots.pem +592 -899
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/compression.h +1 -1
  7. data/include/grpc/event_engine/README.md +38 -0
  8. data/include/grpc/event_engine/endpoint_config.h +43 -0
  9. data/include/grpc/event_engine/event_engine.h +375 -0
  10. data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
  11. data/include/grpc/event_engine/memory_allocator.h +210 -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 +49 -4
  15. data/include/grpc/grpc_posix.h +5 -2
  16. data/include/grpc/grpc_security.h +127 -14
  17. data/include/grpc/grpc_security_constants.h +16 -0
  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 +6 -0
  22. data/include/grpc/impl/codegen/byte_buffer.h +3 -1
  23. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
  24. data/include/grpc/impl/codegen/compression_types.h +2 -0
  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 +49 -25
  30. data/include/grpc/impl/codegen/log.h +2 -2
  31. data/include/grpc/impl/codegen/port_platform.h +81 -22
  32. data/include/grpc/impl/codegen/propagation_bits.h +2 -0
  33. data/include/grpc/impl/codegen/slice.h +2 -0
  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 +6 -0
  41. data/include/grpc/module.modulemap +14 -14
  42. data/include/grpc/slice.h +1 -1
  43. data/include/grpc/slice_buffer.h +3 -3
  44. data/include/grpc/status.h +1 -1
  45. data/include/grpc/support/atm.h +1 -1
  46. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  47. data/include/grpc/support/atm_gcc_sync.h +1 -1
  48. data/include/grpc/support/atm_windows.h +1 -1
  49. data/include/grpc/support/log.h +1 -1
  50. data/include/grpc/support/port_platform.h +1 -1
  51. data/include/grpc/support/sync.h +4 -4
  52. data/include/grpc/support/sync_abseil.h +1 -1
  53. data/include/grpc/support/sync_custom.h +1 -1
  54. data/include/grpc/support/sync_generic.h +1 -1
  55. data/include/grpc/support/sync_posix.h +1 -1
  56. data/include/grpc/support/sync_windows.h +1 -1
  57. data/include/grpc/support/time.h +9 -9
  58. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  59. data/src/core/ext/filters/client_channel/backend_metric.cc +20 -24
  60. data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
  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 +2009 -3145
  64. data/src/core/ext/filters/client_channel/client_channel.h +559 -60
  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 +18 -19
  69. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -14
  70. data/src/core/ext/filters/client_channel/config_selector.cc +2 -1
  71. data/src/core/ext/filters/client_channel/config_selector.h +33 -9
  72. data/src/core/ext/filters/client_channel/connector.h +19 -19
  73. data/src/core/ext/filters/client_channel/dynamic_filters.cc +190 -0
  74. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  75. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
  76. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -11
  77. data/src/core/ext/filters/client_channel/health/health_check_client.cc +53 -50
  78. data/src/core/ext/filters/client_channel/health/health_check_client.h +35 -33
  79. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +37 -34
  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 +36 -20
  82. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -2
  83. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +12 -21
  84. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +246 -166
  85. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
  86. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  87. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
  88. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -5
  89. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +2 -2
  90. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +4 -3
  91. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +5 -6
  92. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  93. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +37 -30
  94. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +53 -55
  95. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +757 -0
  96. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
  97. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
  98. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +16 -18
  99. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -3
  100. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +24 -27
  101. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +385 -135
  102. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -8
  103. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
  104. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +57 -71
  105. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +43 -64
  106. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1362 -0
  107. data/src/core/ext/filters/client_channel/lb_policy.cc +6 -17
  108. data/src/core/ext/filters/client_channel/lb_policy.h +93 -93
  109. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
  110. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -11
  111. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  112. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  113. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
  114. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
  115. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +76 -88
  116. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -33
  117. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  118. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -9
  119. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +26 -23
  120. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +473 -74
  121. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +27 -2
  122. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  123. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  124. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +45 -35
  125. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +43 -46
  126. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  127. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +384 -0
  128. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +22 -35
  129. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +466 -254
  130. data/src/core/ext/filters/client_channel/resolver.cc +5 -5
  131. data/src/core/ext/filters/client_channel/resolver.h +4 -15
  132. data/src/core/ext/filters/client_channel/resolver_factory.h +8 -6
  133. data/src/core/ext/filters/client_channel/resolver_registry.cc +43 -44
  134. data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
  135. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +42 -252
  136. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +25 -54
  137. data/src/core/ext/filters/client_channel/retry_filter.cc +2573 -0
  138. data/src/core/ext/filters/{workarounds/workaround_cronet_compression_filter.h → client_channel/retry_filter.h} +9 -6
  139. data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
  140. data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
  141. data/src/core/ext/filters/client_channel/retry_throttle.cc +20 -49
  142. data/src/core/ext/filters/client_channel/retry_throttle.h +3 -1
  143. data/src/core/ext/filters/client_channel/server_address.cc +10 -1
  144. data/src/core/ext/filters/client_channel/server_address.h +31 -0
  145. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +54 -40
  146. data/src/core/ext/filters/client_channel/subchannel.cc +179 -329
  147. data/src/core/ext/filters/client_channel/subchannel.h +101 -158
  148. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +38 -9
  149. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +21 -10
  150. data/src/core/ext/filters/client_idle/client_idle_filter.cc +47 -223
  151. data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
  152. data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
  153. data/src/core/ext/filters/deadline/deadline_filter.cc +33 -34
  154. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +503 -0
  155. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
  156. data/src/core/ext/filters/fault_injection/service_config_parser.cc +181 -0
  157. data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
  158. data/src/core/ext/filters/http/client/http_client_filter.cc +77 -69
  159. data/src/core/ext/filters/http/client_authority_filter.cc +19 -19
  160. data/src/core/ext/filters/http/http_filters_plugin.cc +53 -68
  161. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -35
  162. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +29 -30
  163. data/src/core/ext/filters/http/server/http_server_filter.cc +104 -95
  164. data/src/core/ext/filters/max_age/max_age_filter.cc +71 -68
  165. data/src/core/ext/filters/message_size/message_size_filter.cc +43 -41
  166. data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
  167. data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +17 -16
  168. data/src/core/ext/{filters/client_channel → service_config}/service_config.h +11 -10
  169. data/src/core/ext/{filters/client_channel → service_config}/service_config_call_data.h +23 -19
  170. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +9 -9
  171. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +15 -10
  172. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  173. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +37 -23
  174. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
  175. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +42 -35
  176. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +32 -16
  177. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +51 -62
  178. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +664 -236
  179. data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
  180. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -5
  181. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +25 -11
  182. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +61 -22
  183. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -2
  184. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  185. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  186. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +264 -223
  187. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +16 -2
  188. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  189. data/src/core/ext/transport/chttp2/transport/context_list.h +5 -6
  190. data/src/core/ext/transport/chttp2/transport/flow_control.cc +59 -40
  191. data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -17
  192. data/src/core/ext/transport/chttp2/transport/frame_data.cc +28 -24
  193. data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -10
  194. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +21 -20
  195. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +7 -6
  196. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +13 -13
  197. data/src/core/ext/transport/chttp2/transport/frame_ping.h +8 -6
  198. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -15
  199. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +7 -6
  200. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +49 -17
  201. data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -7
  202. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +22 -19
  203. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
  204. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  205. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +311 -665
  206. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +240 -70
  207. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +107 -0
  208. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
  209. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +69 -0
  210. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +865 -1172
  211. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +100 -81
  212. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +146 -0
  213. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +137 -0
  214. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +46 -0
  215. data/src/core/{lib/transport/authority_override.h → ext/transport/chttp2/transport/hpack_utils.h} +8 -12
  216. data/src/core/ext/transport/chttp2/transport/internal.h +40 -33
  217. data/src/core/ext/transport/chttp2/transport/parsing.cc +156 -286
  218. data/src/core/ext/transport/chttp2/transport/popularity_count.h +60 -0
  219. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
  220. data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
  221. data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
  222. data/src/core/ext/transport/chttp2/transport/writing.cc +69 -54
  223. data/src/core/ext/transport/inproc/inproc_transport.cc +204 -160
  224. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
  225. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1591 -0
  226. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +1 -1
  227. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +2 -1
  228. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +3 -3
  229. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +15 -2
  230. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +48 -49
  231. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +245 -56
  232. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +371 -0
  233. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1554 -0
  234. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +16 -16
  235. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +66 -21
  236. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +178 -142
  237. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +795 -314
  238. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +4 -4
  239. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +21 -7
  240. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +25 -24
  241. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +70 -23
  242. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +29 -29
  243. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +138 -47
  244. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -5
  245. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +23 -8
  246. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +147 -75
  247. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +522 -96
  248. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +27 -27
  249. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +116 -49
  250. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +3 -3
  251. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +15 -2
  252. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +9 -9
  253. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +42 -14
  254. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +63 -63
  255. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +228 -63
  256. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +57 -56
  257. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +244 -98
  258. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +5 -5
  259. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +25 -11
  260. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +125 -57
  261. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +533 -89
  262. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +3 -4
  263. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +15 -2
  264. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
  265. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +133 -0
  266. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +8 -8
  267. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +17 -4
  268. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +15 -8
  269. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +56 -9
  270. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
  271. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +96 -0
  272. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +16 -17
  273. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +81 -40
  274. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +56 -22
  275. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +223 -34
  276. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
  277. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +137 -72
  278. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +3 -3
  279. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +19 -5
  280. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +48 -38
  281. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +276 -103
  282. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +51 -45
  283. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +203 -62
  284. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
  285. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +177 -0
  286. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +10 -9
  287. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +55 -22
  288. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
  289. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +536 -0
  290. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +153 -0
  291. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +550 -0
  292. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +51 -44
  293. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +165 -43
  294. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +35 -16
  295. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +148 -40
  296. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +339 -279
  297. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +1466 -543
  298. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +10 -10
  299. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +48 -10
  300. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +6 -7
  301. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +32 -6
  302. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
  303. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +73 -0
  304. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
  305. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +298 -0
  306. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +79 -0
  307. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +303 -0
  308. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -0
  309. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +123 -0
  310. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +151 -112
  311. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +693 -244
  312. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +1 -2
  313. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -1
  314. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +52 -32
  315. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +231 -59
  316. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +15 -18
  317. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +51 -28
  318. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +45 -44
  319. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +178 -74
  320. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +2 -2
  321. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +15 -2
  322. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +2 -2
  323. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +15 -2
  324. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +58 -51
  325. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +221 -135
  326. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +2 -5
  327. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +15 -2
  328. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +2 -5
  329. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +15 -2
  330. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +9 -10
  331. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +46 -19
  332. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +2 -4
  333. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +15 -2
  334. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +2 -2
  335. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +15 -2
  336. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +121 -0
  337. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +468 -0
  338. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
  339. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +205 -0
  340. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +9 -8
  341. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +44 -14
  342. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
  343. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +96 -0
  344. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +4 -4
  345. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +15 -2
  346. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +3 -3
  347. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +15 -2
  348. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +10 -9
  349. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +51 -12
  350. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +10 -11
  351. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +31 -6
  352. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
  353. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +136 -0
  354. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +11 -11
  355. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +41 -4
  356. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +15 -15
  357. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +96 -11
  358. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +19 -19
  359. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +77 -14
  360. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +1 -1
  361. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -1
  362. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +6 -6
  363. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +30 -5
  364. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +10 -10
  365. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +41 -4
  366. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +5 -5
  367. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +15 -2
  368. data/src/core/ext/upb-generated/google/api/annotations.upb.c +1 -1
  369. data/src/core/ext/upb-generated/google/api/annotations.upb.h +2 -1
  370. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +62 -62
  371. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +227 -84
  372. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +86 -69
  373. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +256 -72
  374. data/src/core/ext/upb-generated/google/api/http.upb.c +18 -18
  375. data/src/core/ext/upb-generated/google/api/http.upb.h +47 -10
  376. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +4 -4
  377. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +15 -2
  378. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +154 -154
  379. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +645 -320
  380. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +4 -4
  381. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +15 -2
  382. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +2 -2
  383. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +15 -2
  384. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
  385. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +44 -7
  386. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +4 -4
  387. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +15 -2
  388. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +19 -19
  389. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +119 -10
  390. data/src/core/ext/upb-generated/google/rpc/status.upb.c +5 -5
  391. data/src/core/ext/upb-generated/google/rpc/status.upb.h +18 -5
  392. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
  393. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +19 -5
  394. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +63 -63
  395. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +220 -87
  396. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -8
  397. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +36 -9
  398. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +5 -5
  399. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +28 -3
  400. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
  401. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +146 -35
  402. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
  403. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
  404. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +8 -8
  405. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +41 -4
  406. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +4 -6
  407. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +15 -2
  408. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +1 -1
  409. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +2 -1
  410. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +4 -4
  411. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +17 -4
  412. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +3 -3
  413. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +15 -2
  414. data/src/core/ext/upb-generated/validate/validate.upb.c +243 -227
  415. data/src/core/ext/upb-generated/validate/validate.upb.h +626 -253
  416. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
  417. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
  418. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
  419. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +66 -0
  420. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
  421. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +155 -0
  422. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
  423. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +90 -0
  424. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
  425. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +100 -0
  426. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
  427. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +178 -0
  428. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
  429. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +91 -0
  430. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
  431. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
  432. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +33 -0
  433. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
  434. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
  435. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  436. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +15 -7
  437. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -170
  438. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +424 -0
  439. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  440. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +467 -429
  441. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +12 -2
  442. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
  443. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +156 -109
  444. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +25 -0
  445. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +89 -88
  446. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +156 -153
  447. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +240 -168
  448. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +20 -0
  449. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
  450. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
  451. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  452. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +37 -20
  453. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
  454. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  455. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
  456. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +90 -63
  457. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +10 -0
  458. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +137 -122
  459. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  460. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +136 -120
  461. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
  462. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  463. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +31 -26
  464. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
  465. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  466. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +152 -0
  467. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
  468. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +69 -51
  469. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
  470. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +748 -681
  471. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +15 -0
  472. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
  473. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
  474. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  475. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
  476. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  477. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +123 -0
  478. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  479. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +79 -0
  480. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  481. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +435 -379
  482. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +10 -0
  483. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
  484. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +121 -91
  485. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -0
  486. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
  487. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +182 -180
  488. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
  489. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
  490. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
  491. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
  492. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
  493. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
  494. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +163 -0
  495. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  496. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
  497. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  498. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +14 -13
  499. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
  500. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  501. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +35 -32
  502. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
  503. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
  504. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  505. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +8 -7
  506. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +100 -100
  507. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +9 -8
  508. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +8 -8
  509. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +8 -8
  510. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +9 -8
  511. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +8 -8
  512. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
  513. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
  514. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
  515. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
  516. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
  517. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
  518. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +182 -157
  519. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
  520. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  521. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +43 -0
  522. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  523. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +63 -0
  524. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  525. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +46 -0
  526. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  527. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +50 -0
  528. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  529. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +68 -0
  530. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  531. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +51 -0
  532. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  533. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
  534. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  535. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  536. data/src/core/ext/xds/certificate_provider_registry.cc +2 -2
  537. data/src/core/ext/xds/certificate_provider_store.cc +10 -7
  538. data/src/core/ext/xds/certificate_provider_store.h +15 -10
  539. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +28 -3
  540. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +3 -6
  541. data/src/core/ext/xds/xds_api.cc +2654 -808
  542. data/src/core/ext/xds/xds_api.h +460 -154
  543. data/src/core/ext/xds/xds_bootstrap.cc +139 -188
  544. data/src/core/ext/xds/xds_bootstrap.h +34 -18
  545. data/src/core/ext/xds/xds_certificate_provider.cc +237 -72
  546. data/src/core/ext/xds/xds_certificate_provider.h +104 -27
  547. data/src/core/ext/xds/xds_channel_args.h +5 -2
  548. data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
  549. data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
  550. data/src/core/ext/xds/xds_client.cc +985 -429
  551. data/src/core/ext/xds/xds_client.h +100 -51
  552. data/src/core/ext/xds/xds_client_stats.cc +18 -16
  553. data/src/core/ext/xds/xds_client_stats.h +12 -11
  554. data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
  555. data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
  556. data/src/core/ext/xds/xds_http_filters.cc +116 -0
  557. data/src/core/ext/xds/xds_http_filters.h +133 -0
  558. data/src/core/ext/xds/xds_server_config_fetcher.cc +544 -0
  559. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +72 -68
  560. data/src/core/lib/{iomgr → address_utils}/parse_address.h +20 -16
  561. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +131 -15
  562. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +37 -7
  563. data/src/core/lib/avl/avl.cc +5 -5
  564. data/src/core/lib/backoff/backoff.cc +1 -1
  565. data/src/core/lib/channel/call_tracer.h +85 -0
  566. data/src/core/lib/channel/channel_args.cc +34 -15
  567. data/src/core/lib/channel/channel_args.h +9 -0
  568. data/src/core/lib/channel/channel_stack.cc +27 -12
  569. data/src/core/lib/channel/channel_stack.h +18 -10
  570. data/src/core/lib/channel/channel_stack_builder.cc +6 -16
  571. data/src/core/lib/channel/channel_stack_builder.h +1 -9
  572. data/src/core/lib/channel/channel_trace.cc +5 -4
  573. data/src/core/lib/channel/channel_trace.h +3 -2
  574. data/src/core/lib/channel/channelz.cc +162 -63
  575. data/src/core/lib/channel/channelz.h +62 -31
  576. data/src/core/lib/channel/channelz_registry.cc +22 -7
  577. data/src/core/lib/channel/channelz_registry.h +1 -2
  578. data/src/core/lib/channel/connected_channel.cc +6 -7
  579. data/src/core/lib/channel/connected_channel.h +1 -2
  580. data/src/core/lib/channel/context.h +3 -0
  581. data/src/core/lib/channel/handshaker.cc +13 -53
  582. data/src/core/lib/channel/handshaker.h +7 -25
  583. data/src/core/lib/channel/handshaker_factory.h +10 -2
  584. data/src/core/lib/channel/handshaker_registry.cc +15 -70
  585. data/src/core/lib/channel/handshaker_registry.h +29 -12
  586. data/src/core/lib/channel/status_util.cc +12 -2
  587. data/src/core/lib/channel/status_util.h +11 -2
  588. data/src/core/lib/compression/algorithm_metadata.h +1 -0
  589. data/src/core/lib/compression/compression.cc +2 -2
  590. data/src/core/lib/compression/compression_args.cc +11 -7
  591. data/src/core/lib/compression/compression_internal.cc +4 -6
  592. data/src/core/lib/compression/compression_internal.h +1 -1
  593. data/src/core/lib/compression/message_compress.cc +2 -2
  594. data/src/core/lib/compression/stream_compression.cc +2 -1
  595. data/src/core/lib/compression/stream_compression.h +3 -2
  596. data/src/core/lib/compression/stream_compression_gzip.cc +2 -1
  597. data/src/core/lib/compression/stream_compression_gzip.h +1 -1
  598. data/src/core/lib/compression/stream_compression_identity.cc +2 -1
  599. data/src/core/lib/compression/stream_compression_identity.h +1 -1
  600. data/src/core/lib/config/core_configuration.cc +96 -0
  601. data/src/core/lib/config/core_configuration.h +146 -0
  602. data/src/core/lib/debug/stats.cc +1 -1
  603. data/src/core/lib/debug/stats.h +4 -3
  604. data/src/core/lib/debug/stats_data.cc +15 -14
  605. data/src/core/lib/debug/stats_data.h +14 -13
  606. data/src/core/lib/debug/trace.cc +1 -0
  607. data/src/core/lib/debug/trace.h +2 -1
  608. data/src/core/lib/event_engine/endpoint_config.cc +45 -0
  609. data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
  610. data/src/core/lib/event_engine/event_engine.cc +50 -0
  611. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  612. data/src/core/lib/event_engine/sockaddr.h +44 -0
  613. data/src/core/lib/gpr/alloc.cc +7 -5
  614. data/src/core/lib/gpr/atm.cc +1 -1
  615. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  616. data/src/core/lib/gpr/env_linux.cc +1 -2
  617. data/src/core/lib/gpr/env_posix.cc +2 -3
  618. data/src/core/lib/gpr/log.cc +61 -19
  619. data/src/core/lib/gpr/log_android.cc +3 -2
  620. data/src/core/lib/gpr/log_linux.cc +10 -5
  621. data/src/core/lib/gpr/log_posix.cc +9 -4
  622. data/src/core/lib/gpr/log_windows.cc +3 -1
  623. data/src/core/lib/gpr/murmur_hash.cc +4 -2
  624. data/src/core/lib/gpr/spinlock.h +10 -2
  625. data/src/core/lib/gpr/string.cc +24 -23
  626. data/src/core/lib/gpr/string.h +7 -8
  627. data/src/core/lib/gpr/sync.cc +6 -6
  628. data/src/core/lib/gpr/sync_abseil.cc +10 -12
  629. data/src/core/lib/gpr/sync_posix.cc +3 -3
  630. data/src/core/lib/gpr/sync_windows.cc +2 -2
  631. data/src/core/lib/gpr/time.cc +15 -14
  632. data/src/core/lib/gpr/time_windows.cc +3 -2
  633. data/src/core/lib/gpr/tls.h +119 -40
  634. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  635. data/src/core/lib/gpr/useful.h +79 -32
  636. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  637. data/src/core/lib/gprpp/arena.cc +2 -1
  638. data/src/core/lib/gprpp/arena.h +18 -7
  639. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  640. data/src/core/lib/gprpp/bitset.h +188 -0
  641. data/src/core/lib/gprpp/chunked_vector.h +211 -0
  642. data/src/core/lib/gprpp/construct_destruct.h +39 -0
  643. data/src/core/lib/gprpp/dual_ref_counted.h +28 -29
  644. data/src/core/lib/gprpp/fork.cc +14 -12
  645. data/src/core/lib/gprpp/fork.h +4 -4
  646. data/src/core/lib/gprpp/global_config.h +1 -2
  647. data/src/core/lib/gprpp/global_config_env.cc +7 -7
  648. data/src/core/lib/gprpp/global_config_generic.h +2 -2
  649. data/src/core/lib/gprpp/manual_constructor.h +9 -6
  650. data/src/core/lib/gprpp/match.h +73 -0
  651. data/src/core/lib/gprpp/memory.h +9 -3
  652. data/src/core/lib/gprpp/mpscq.cc +9 -9
  653. data/src/core/lib/gprpp/mpscq.h +6 -5
  654. data/src/core/lib/gprpp/orphanable.h +6 -6
  655. data/src/core/lib/gprpp/overload.h +59 -0
  656. data/src/core/lib/gprpp/ref_counted.h +48 -34
  657. data/src/core/lib/gprpp/ref_counted_ptr.h +11 -1
  658. data/src/core/lib/gprpp/status_helper.cc +427 -0
  659. data/src/core/lib/gprpp/status_helper.h +194 -0
  660. data/src/core/lib/gprpp/sync.h +106 -43
  661. data/src/core/lib/gprpp/table.h +411 -0
  662. data/src/core/lib/gprpp/thd.h +1 -1
  663. data/src/core/lib/gprpp/thd_posix.cc +11 -6
  664. data/src/core/lib/gprpp/thd_windows.cc +7 -12
  665. data/src/core/lib/gprpp/time_util.cc +77 -0
  666. data/src/core/lib/gprpp/time_util.h +42 -0
  667. data/src/core/lib/http/format_request.cc +1 -0
  668. data/src/core/lib/http/format_request.h +1 -0
  669. data/src/core/lib/http/httpcli.cc +203 -185
  670. data/src/core/lib/http/httpcli.h +5 -3
  671. data/src/core/lib/http/httpcli_security_connector.cc +19 -18
  672. data/src/core/lib/http/parser.cc +19 -20
  673. data/src/core/lib/http/parser.h +5 -4
  674. data/src/core/lib/iomgr/buffer_list.cc +10 -11
  675. data/src/core/lib/iomgr/buffer_list.h +6 -8
  676. data/src/core/lib/iomgr/call_combiner.cc +46 -21
  677. data/src/core/lib/iomgr/call_combiner.h +12 -14
  678. data/src/core/lib/iomgr/cfstream_handle.cc +6 -6
  679. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  680. data/src/core/lib/iomgr/closure.h +7 -6
  681. data/src/core/lib/iomgr/combiner.cc +25 -36
  682. data/src/core/lib/iomgr/combiner.h +3 -2
  683. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  684. data/src/core/lib/iomgr/endpoint.cc +1 -5
  685. data/src/core/lib/iomgr/endpoint.h +3 -5
  686. data/src/core/lib/iomgr/endpoint_cfstream.cc +27 -39
  687. data/src/core/lib/iomgr/endpoint_cfstream.h +1 -1
  688. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  689. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +32 -0
  690. data/src/core/lib/iomgr/endpoint_pair_posix.cc +15 -11
  691. data/src/core/lib/iomgr/endpoint_pair_windows.cc +17 -9
  692. data/src/core/lib/iomgr/error.cc +277 -105
  693. data/src/core/lib/iomgr/error.h +280 -114
  694. data/src/core/lib/iomgr/error_cfstream.cc +10 -4
  695. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  696. data/src/core/lib/iomgr/error_internal.h +7 -2
  697. data/src/core/lib/iomgr/ev_apple.cc +16 -13
  698. data/src/core/lib/iomgr/ev_apple.h +1 -1
  699. data/src/core/lib/iomgr/ev_epoll1_linux.cc +53 -53
  700. data/src/core/lib/iomgr/ev_epollex_linux.cc +81 -81
  701. data/src/core/lib/iomgr/ev_poll_posix.cc +70 -68
  702. data/src/core/lib/iomgr/ev_posix.cc +13 -13
  703. data/src/core/lib/iomgr/ev_posix.h +9 -9
  704. data/src/core/lib/iomgr/event_engine/closure.cc +77 -0
  705. data/src/core/lib/iomgr/event_engine/closure.h +42 -0
  706. data/src/core/lib/iomgr/event_engine/endpoint.cc +173 -0
  707. data/src/core/lib/iomgr/event_engine/endpoint.h +52 -0
  708. data/src/core/lib/iomgr/event_engine/iomgr.cc +104 -0
  709. data/src/core/lib/iomgr/event_engine/iomgr.h +42 -0
  710. data/src/core/lib/iomgr/event_engine/pollset.cc +88 -0
  711. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  712. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  713. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
  714. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
  715. data/src/core/lib/iomgr/event_engine/resolver.cc +114 -0
  716. data/src/core/lib/iomgr/event_engine/tcp.cc +293 -0
  717. data/src/core/lib/iomgr/event_engine/timer.cc +62 -0
  718. data/src/core/lib/iomgr/exec_ctx.cc +14 -11
  719. data/src/core/lib/iomgr/exec_ctx.h +21 -28
  720. data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
  721. data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
  722. data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
  723. data/src/core/lib/iomgr/executor/threadpool.h +5 -4
  724. data/src/core/lib/iomgr/executor.cc +19 -33
  725. data/src/core/lib/iomgr/executor.h +3 -3
  726. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  727. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  728. data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
  729. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  730. data/src/core/lib/iomgr/iomgr.cc +6 -4
  731. data/src/core/lib/iomgr/iomgr.h +3 -3
  732. data/src/core/lib/iomgr/iomgr_custom.cc +3 -3
  733. data/src/core/lib/iomgr/iomgr_custom.h +2 -2
  734. data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
  735. data/src/core/lib/iomgr/iomgr_internal.h +6 -5
  736. data/src/core/lib/iomgr/iomgr_posix.cc +3 -2
  737. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -13
  738. data/src/core/lib/iomgr/iomgr_windows.cc +2 -3
  739. data/src/core/lib/iomgr/is_epollexclusive_available.cc +4 -4
  740. data/src/core/lib/iomgr/load_file.cc +6 -6
  741. data/src/core/lib/iomgr/load_file.h +2 -2
  742. data/src/core/lib/iomgr/lockfree_event.cc +38 -15
  743. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  744. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  745. data/src/core/lib/iomgr/pollset.cc +5 -5
  746. data/src/core/lib/iomgr/pollset.h +9 -9
  747. data/src/core/lib/iomgr/pollset_custom.cc +10 -11
  748. data/src/core/lib/iomgr/pollset_custom.h +3 -1
  749. data/src/core/lib/iomgr/pollset_set_custom.cc +2 -3
  750. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  751. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  752. data/src/core/lib/iomgr/port.h +7 -10
  753. data/src/core/lib/iomgr/python_util.h +4 -3
  754. data/src/core/lib/iomgr/resolve_address.cc +14 -9
  755. data/src/core/lib/iomgr/resolve_address.h +12 -10
  756. data/src/core/lib/iomgr/resolve_address_custom.cc +14 -13
  757. data/src/core/lib/iomgr/resolve_address_custom.h +3 -4
  758. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -14
  759. data/src/core/lib/iomgr/resolve_address_windows.cc +10 -12
  760. data/src/core/lib/iomgr/resource_quota.cc +152 -62
  761. data/src/core/lib/iomgr/resource_quota.h +66 -17
  762. data/src/core/lib/iomgr/sockaddr.h +2 -1
  763. data/src/core/lib/iomgr/socket_factory_posix.cc +8 -7
  764. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  765. data/src/core/lib/iomgr/socket_mutator.cc +20 -6
  766. data/src/core/lib/iomgr/socket_mutator.h +27 -3
  767. data/src/core/lib/iomgr/socket_utils_common_posix.cc +29 -27
  768. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  769. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  770. data/src/core/lib/iomgr/socket_utils_posix.h +22 -22
  771. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  772. data/src/core/lib/iomgr/tcp_client.cc +5 -3
  773. data/src/core/lib/iomgr/tcp_client.h +4 -0
  774. data/src/core/lib/iomgr/tcp_client_cfstream.cc +18 -26
  775. data/src/core/lib/iomgr/tcp_client_custom.cc +19 -27
  776. data/src/core/lib/iomgr/tcp_client_posix.cc +56 -47
  777. data/src/core/lib/iomgr/tcp_client_posix.h +8 -6
  778. data/src/core/lib/iomgr/tcp_client_windows.cc +23 -14
  779. data/src/core/lib/iomgr/tcp_custom.cc +46 -55
  780. data/src/core/lib/iomgr/tcp_custom.h +15 -13
  781. data/src/core/lib/iomgr/tcp_posix.cc +119 -145
  782. data/src/core/lib/iomgr/tcp_posix.h +19 -12
  783. data/src/core/lib/iomgr/tcp_server.cc +9 -7
  784. data/src/core/lib/iomgr/tcp_server.h +18 -14
  785. data/src/core/lib/iomgr/tcp_server_custom.cc +63 -73
  786. data/src/core/lib/iomgr/tcp_server_posix.cc +49 -35
  787. data/src/core/lib/iomgr/tcp_server_utils_posix.h +16 -12
  788. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +22 -20
  789. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +11 -12
  790. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  791. data/src/core/lib/iomgr/tcp_server_windows.cc +40 -36
  792. data/src/core/lib/iomgr/tcp_windows.cc +21 -40
  793. data/src/core/lib/iomgr/tcp_windows.h +4 -3
  794. data/src/core/lib/iomgr/timer.cc +1 -0
  795. data/src/core/lib/iomgr/timer.h +7 -3
  796. data/src/core/lib/iomgr/timer_custom.cc +7 -6
  797. data/src/core/lib/iomgr/timer_custom.h +1 -1
  798. data/src/core/lib/iomgr/timer_generic.cc +32 -62
  799. data/src/core/lib/iomgr/timer_generic.h +1 -0
  800. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  801. data/src/core/lib/iomgr/timer_manager.cc +4 -4
  802. data/src/core/lib/iomgr/unix_sockets_posix.cc +21 -24
  803. data/src/core/lib/iomgr/unix_sockets_posix.h +4 -5
  804. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  805. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  806. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
  807. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
  808. data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
  809. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  810. data/src/core/lib/iomgr/work_serializer.cc +4 -4
  811. data/src/core/lib/iomgr/work_serializer.h +18 -2
  812. data/src/core/lib/json/json.h +11 -1
  813. data/src/core/lib/json/json_reader.cc +14 -23
  814. data/src/core/lib/json/json_util.cc +68 -0
  815. data/src/core/lib/json/json_util.h +65 -115
  816. data/src/core/lib/json/json_writer.cc +0 -3
  817. data/src/core/lib/matchers/matchers.cc +327 -0
  818. data/src/core/lib/matchers/matchers.h +160 -0
  819. data/src/core/lib/profiling/basic_timers.cc +8 -6
  820. data/src/core/lib/profiling/stap_timers.cc +2 -2
  821. data/src/core/lib/security/authorization/authorization_engine.h +13 -53
  822. data/src/core/lib/security/authorization/authorization_policy_provider.h +33 -0
  823. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  824. data/src/core/lib/security/authorization/evaluate_args.cc +126 -66
  825. data/src/core/lib/security/authorization/evaluate_args.h +47 -15
  826. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +171 -0
  827. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +67 -0
  828. data/src/core/lib/security/context/security_context.cc +15 -11
  829. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
  830. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  831. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  832. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  833. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  834. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  835. data/src/core/lib/security/credentials/composite/composite_credentials.cc +9 -8
  836. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  837. data/src/core/lib/security/credentials/credentials.cc +16 -14
  838. data/src/core/lib/security/credentials/credentials.h +11 -5
  839. data/src/core/lib/security/credentials/credentials_metadata.cc +2 -3
  840. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +404 -0
  841. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +81 -0
  842. data/src/core/lib/security/credentials/external/aws_request_signer.cc +20 -14
  843. data/src/core/lib/security/credentials/external/aws_request_signer.h +2 -3
  844. data/src/core/lib/security/credentials/external/external_account_credentials.cc +270 -54
  845. data/src/core/lib/security/credentials/external/external_account_credentials.h +16 -12
  846. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +8 -8
  847. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -6
  848. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +26 -26
  849. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +13 -12
  850. data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
  851. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  852. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
  853. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +92 -31
  854. data/src/core/lib/security/credentials/iam/iam_credentials.cc +4 -3
  855. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  856. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +18 -5
  857. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -7
  858. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  859. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +34 -17
  860. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +13 -5
  861. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +15 -22
  862. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -3
  863. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
  864. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  865. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +57 -66
  866. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +11 -9
  867. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +10 -12
  868. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  869. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +11 -10
  870. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -3
  871. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +12 -15
  872. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +20 -21
  873. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +382 -5
  874. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +74 -1
  875. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +5 -1
  876. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -3
  877. data/src/core/lib/security/credentials/tls/tls_credentials.cc +3 -2
  878. data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
  879. data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
  880. data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
  881. data/src/core/lib/security/credentials/xds/xds_credentials.cc +209 -10
  882. data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
  883. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +14 -4
  884. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +20 -12
  885. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +50 -17
  886. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +35 -8
  887. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  888. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +4 -4
  889. data/src/core/lib/security/security_connector/local/local_security_connector.cc +23 -10
  890. data/src/core/lib/security/security_connector/security_connector.cc +12 -6
  891. data/src/core/lib/security/security_connector/security_connector.h +10 -5
  892. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +24 -17
  893. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
  894. data/src/core/lib/security/security_connector/ssl_utils.cc +41 -14
  895. data/src/core/lib/security/security_connector/ssl_utils.h +16 -23
  896. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +156 -113
  897. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +67 -52
  898. data/src/core/lib/security/transport/auth_filters.h +1 -0
  899. data/src/core/lib/security/transport/client_auth_filter.cc +27 -21
  900. data/src/core/lib/security/transport/secure_endpoint.cc +10 -20
  901. data/src/core/lib/security/transport/secure_endpoint.h +1 -0
  902. data/src/core/lib/security/transport/security_handshaker.cc +158 -90
  903. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  904. data/src/core/lib/security/transport/server_auth_filter.cc +20 -16
  905. data/src/core/lib/security/transport/tsi_error.cc +5 -6
  906. data/src/core/lib/security/transport/tsi_error.h +2 -1
  907. data/src/core/lib/security/util/json_util.cc +8 -10
  908. data/src/core/lib/security/util/json_util.h +1 -1
  909. data/src/core/lib/slice/percent_encoding.cc +73 -30
  910. data/src/core/lib/slice/percent_encoding.h +29 -28
  911. data/src/core/lib/slice/slice.cc +14 -21
  912. data/src/core/lib/{gpr/tls_pthread.cc → slice/slice_api.cc} +15 -6
  913. data/src/core/lib/slice/slice_buffer.cc +6 -7
  914. data/src/core/lib/slice/slice_intern.cc +19 -27
  915. data/src/core/lib/slice/slice_internal.h +4 -246
  916. data/src/core/lib/slice/slice_refcount.cc +17 -0
  917. data/src/core/lib/slice/slice_refcount.h +121 -0
  918. data/src/core/lib/slice/slice_refcount_base.h +173 -0
  919. data/src/core/lib/slice/slice_split.cc +100 -0
  920. data/src/core/lib/slice/slice_split.h +40 -0
  921. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  922. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  923. data/src/core/lib/slice/static_slice.cc +529 -0
  924. data/src/core/lib/slice/static_slice.h +331 -0
  925. data/src/core/lib/surface/api_trace.cc +2 -1
  926. data/src/core/lib/surface/api_trace.h +1 -0
  927. data/src/core/lib/surface/builtins.cc +49 -0
  928. data/src/core/lib/surface/builtins.h +26 -0
  929. data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
  930. data/src/core/lib/surface/call.cc +198 -186
  931. data/src/core/lib/surface/call.h +10 -5
  932. data/src/core/lib/surface/call_details.cc +10 -10
  933. data/src/core/lib/surface/call_log_batch.cc +2 -2
  934. data/src/core/lib/surface/channel.cc +57 -51
  935. data/src/core/lib/surface/channel.h +19 -14
  936. data/src/core/lib/surface/channel_init.cc +23 -76
  937. data/src/core/lib/surface/channel_init.h +52 -44
  938. data/src/core/lib/surface/channel_ping.cc +2 -3
  939. data/src/core/lib/surface/channel_stack_type.cc +2 -1
  940. data/src/core/lib/surface/completion_queue.cc +140 -145
  941. data/src/core/lib/surface/completion_queue.h +18 -17
  942. data/src/core/lib/surface/completion_queue_factory.cc +3 -3
  943. data/src/core/lib/surface/completion_queue_factory.h +1 -0
  944. data/src/core/lib/surface/event_string.cc +1 -0
  945. data/src/core/lib/surface/init.cc +18 -65
  946. data/src/core/lib/surface/init.h +10 -2
  947. data/src/core/lib/surface/init_secure.cc +36 -14
  948. data/src/core/lib/surface/lame_client.cc +62 -61
  949. data/src/core/lib/surface/lame_client.h +5 -0
  950. data/src/core/lib/surface/metadata_array.cc +2 -2
  951. data/src/core/lib/surface/server.cc +167 -116
  952. data/src/core/lib/surface/server.h +140 -40
  953. data/src/core/lib/surface/validate_metadata.cc +55 -24
  954. data/src/core/lib/surface/validate_metadata.h +3 -2
  955. data/src/core/lib/surface/version.cc +2 -2
  956. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  957. data/src/core/lib/transport/byte_stream.cc +5 -5
  958. data/src/core/lib/transport/byte_stream.h +9 -8
  959. data/src/core/lib/transport/connectivity_state.cc +9 -6
  960. data/src/core/lib/transport/connectivity_state.h +8 -6
  961. data/src/core/lib/transport/error_utils.cc +64 -27
  962. data/src/core/lib/transport/error_utils.h +13 -7
  963. data/src/core/lib/transport/metadata.cc +47 -22
  964. data/src/core/lib/transport/metadata.h +15 -12
  965. data/src/core/lib/transport/metadata_batch.cc +41 -339
  966. data/src/core/lib/transport/metadata_batch.h +932 -68
  967. data/src/core/lib/transport/parsed_metadata.h +263 -0
  968. data/src/core/lib/transport/pid_controller.cc +4 -4
  969. data/src/core/lib/transport/static_metadata.cc +715 -847
  970. data/src/core/lib/transport/static_metadata.h +115 -379
  971. data/src/core/lib/transport/status_metadata.cc +5 -3
  972. data/src/core/lib/transport/transport.cc +8 -8
  973. data/src/core/lib/transport/transport.h +12 -10
  974. data/src/core/lib/transport/transport_op_string.cc +46 -26
  975. data/src/core/lib/uri/uri_parser.cc +131 -249
  976. data/src/core/lib/uri/uri_parser.h +57 -21
  977. data/src/core/plugin_registry/grpc_plugin_registry.cc +101 -44
  978. data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
  979. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  980. data/src/core/tsi/alts/crypt/gsec.h +5 -0
  981. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  982. data/src/core/tsi/alts/frame_protector/frame_handler.cc +18 -17
  983. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +27 -33
  984. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  985. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +57 -51
  986. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  987. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  988. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
  989. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  990. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  991. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  992. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +6 -6
  993. data/src/core/tsi/fake_transport_security.cc +31 -12
  994. data/src/core/tsi/local_transport_security.cc +36 -73
  995. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
  996. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  997. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
  998. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -7
  999. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
  1000. data/src/core/tsi/ssl_transport_security.cc +115 -77
  1001. data/src/core/tsi/ssl_transport_security.h +12 -14
  1002. data/src/core/tsi/transport_security.cc +21 -9
  1003. data/src/core/tsi/transport_security.h +16 -1
  1004. data/src/core/tsi/transport_security_grpc.h +1 -0
  1005. data/src/core/tsi/transport_security_interface.h +27 -1
  1006. data/src/ruby/bin/math_services_pb.rb +1 -1
  1007. data/src/ruby/ext/grpc/extconf.rb +21 -8
  1008. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  1009. data/src/ruby/ext/grpc/rb_call.c +5 -5
  1010. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
  1011. data/src/ruby/ext/grpc/rb_channel.c +19 -8
  1012. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  1013. data/src/ruby/ext/grpc/rb_channel_credentials.c +15 -5
  1014. data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
  1015. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  1016. data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
  1017. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  1018. data/src/ruby/ext/grpc/rb_event_thread.c +4 -2
  1019. data/src/ruby/ext/grpc/rb_grpc.c +9 -4
  1020. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  1021. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +24 -0
  1022. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +50 -14
  1023. data/src/ruby/ext/grpc/rb_server.c +19 -6
  1024. data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
  1025. data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
  1026. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
  1027. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
  1028. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
  1029. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
  1030. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
  1031. data/src/ruby/lib/grpc/version.rb +1 -1
  1032. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  1033. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +35 -0
  1034. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
  1035. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +23 -5
  1036. data/src/ruby/spec/call_spec.rb +1 -1
  1037. data/src/ruby/spec/channel_credentials_spec.rb +32 -0
  1038. data/src/ruby/spec/channel_spec.rb +17 -6
  1039. data/src/ruby/spec/client_auth_spec.rb +27 -1
  1040. data/src/ruby/spec/client_server_spec.rb +1 -1
  1041. data/src/ruby/spec/errors_spec.rb +1 -1
  1042. data/src/ruby/spec/generic/active_call_spec.rb +2 -2
  1043. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  1044. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1045. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
  1046. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1047. data/src/ruby/spec/server_spec.rb +22 -0
  1048. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  1049. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  1050. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  1051. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  1052. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  1053. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  1054. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  1055. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  1056. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  1057. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  1058. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  1059. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  1060. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1061. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  1062. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1063. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  1064. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1065. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  1066. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
  1067. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +54 -48
  1068. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1069. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1070. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  1071. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  1072. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  1073. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  1074. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1075. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1076. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  1077. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  1078. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  1079. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  1080. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  1081. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  1082. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  1083. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  1084. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  1085. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  1086. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
  1087. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  1088. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  1089. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  1090. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  1091. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  1092. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  1093. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  1094. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  1095. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  1096. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  1097. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  1098. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  1099. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  1100. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  1101. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  1102. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  1103. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  1104. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  1105. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1106. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1107. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  1108. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
  1109. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  1110. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  1111. data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
  1112. data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
  1113. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  1114. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  1115. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  1116. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  1117. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  1118. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  1119. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  1120. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  1121. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  1122. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  1123. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  1124. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  1125. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  1126. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  1127. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  1128. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  1129. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  1130. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  1131. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  1132. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  1133. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  1134. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  1135. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1136. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1137. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  1138. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  1139. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  1140. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  1141. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1142. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
  1143. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  1144. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  1145. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  1146. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  1147. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  1148. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  1149. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  1150. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1151. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1152. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  1153. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  1154. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  1155. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  1156. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1157. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  1158. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  1159. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  1160. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1161. data/third_party/boringssl-with-bazel/err_data.c +756 -724
  1162. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +55 -50
  1163. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
  1164. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1165. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
  1166. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1167. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
  1168. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1169. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +26 -24
  1170. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1171. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1172. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
  1173. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1174. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +3 -3
  1175. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
  1176. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
  1177. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1178. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -16
  1179. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1180. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  1181. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +196 -0
  1182. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +35 -86
  1183. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +326 -281
  1184. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
  1185. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
  1186. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
  1187. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
  1188. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1189. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
  1190. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1191. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1192. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1193. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1194. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1195. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1196. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1197. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
  1198. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1199. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
  1200. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1201. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
  1202. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  1203. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
  1204. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1205. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  1206. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  1207. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  1208. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  1209. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1210. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  1211. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1212. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  1213. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1214. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1215. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
  1216. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
  1217. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1218. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  1219. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
  1220. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  1221. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  1222. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1223. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
  1224. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  1225. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +15 -4
  1226. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  1227. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  1228. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
  1229. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +35 -2
  1230. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  1231. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  1232. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1233. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
  1234. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
  1235. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  1236. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  1237. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  1238. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  1239. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  1240. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  1241. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  1242. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
  1243. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
  1244. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  1245. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  1246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  1247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  1248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  1249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  1250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  1251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
  1252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
  1253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
  1254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +50 -33
  1255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +65 -41
  1256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  1257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +161 -9
  1258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
  1259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
  1260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
  1261. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +400 -325
  1262. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  1263. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  1264. data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
  1265. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  1266. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  1267. data/third_party/boringssl-with-bazel/src/crypto/mem.c +28 -9
  1268. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
  1269. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  1270. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  1271. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  1272. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  1273. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  1274. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  1275. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
  1276. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
  1277. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  1278. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
  1279. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1280. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1281. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +1 -0
  1282. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  1283. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  1284. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → rand_extra/passive.c} +16 -11
  1285. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  1286. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  1287. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  1288. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  1289. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1290. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  1291. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  1292. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
  1293. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  1294. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  1295. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +345 -13
  1296. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  1297. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
  1298. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
  1299. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  1300. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
  1301. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
  1302. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
  1303. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +4 -31
  1304. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +12 -9
  1305. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  1306. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
  1307. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  1308. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
  1309. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
  1310. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +26 -23
  1311. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +25 -69
  1312. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
  1313. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +61 -23
  1314. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
  1315. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  1316. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
  1317. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -16
  1318. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  1319. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +15 -13
  1320. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  1321. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
  1322. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1323. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  1324. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  1325. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  1326. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  1327. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +50 -14
  1328. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  1329. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +23 -0
  1330. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
  1331. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
  1332. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
  1333. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
  1334. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
  1335. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
  1336. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +28 -18
  1337. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
  1338. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +26 -25
  1339. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -12
  1340. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  1341. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
  1342. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
  1343. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1344. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +27 -36
  1345. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  1346. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  1347. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
  1348. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +2 -2
  1349. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -6
  1350. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
  1351. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
  1352. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +69 -4
  1353. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1026 -615
  1354. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -176
  1355. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +63 -13
  1356. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
  1357. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1358. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  1359. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
  1360. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1361. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +23 -6
  1362. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  1363. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1364. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  1365. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
  1366. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +10 -2
  1367. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  1368. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
  1369. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  1370. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +38 -51
  1371. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  1372. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  1373. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
  1374. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  1375. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  1376. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  1377. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
  1378. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
  1379. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +33 -8
  1380. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  1381. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  1382. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +104 -63
  1383. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
  1384. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +406 -108
  1385. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +48 -36
  1386. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1425 -377
  1387. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
  1388. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +188 -49
  1389. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
  1390. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  1391. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
  1392. data/third_party/boringssl-with-bazel/src/ssl/{t1_lib.cc → extensions.cc} +847 -622
  1393. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
  1394. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +92 -44
  1395. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +314 -217
  1396. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +177 -35
  1397. data/third_party/boringssl-with-bazel/src/ssl/internal.h +491 -152
  1398. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  1399. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
  1400. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  1401. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
  1402. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  1403. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
  1404. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
  1405. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +60 -112
  1406. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  1407. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +136 -104
  1408. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  1409. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
  1410. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
  1411. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  1412. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
  1413. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +79 -34
  1414. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +235 -178
  1415. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
  1416. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +269 -118
  1417. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  1418. data/third_party/re2/re2/compile.cc +91 -109
  1419. data/third_party/re2/re2/dfa.cc +27 -39
  1420. data/third_party/re2/re2/filtered_re2.cc +18 -2
  1421. data/third_party/re2/re2/filtered_re2.h +10 -5
  1422. data/third_party/re2/re2/nfa.cc +1 -1
  1423. data/third_party/re2/re2/parse.cc +42 -23
  1424. data/third_party/re2/re2/perl_groups.cc +34 -34
  1425. data/third_party/re2/re2/prefilter.cc +3 -2
  1426. data/third_party/re2/re2/prog.cc +182 -4
  1427. data/third_party/re2/re2/prog.h +28 -9
  1428. data/third_party/re2/re2/re2.cc +87 -118
  1429. data/third_party/re2/re2/re2.h +156 -141
  1430. data/third_party/re2/re2/regexp.cc +12 -5
  1431. data/third_party/re2/re2/regexp.h +8 -2
  1432. data/third_party/re2/re2/set.cc +31 -9
  1433. data/third_party/re2/re2/set.h +9 -4
  1434. data/third_party/re2/re2/simplify.cc +11 -3
  1435. data/third_party/re2/re2/tostring.cc +1 -1
  1436. data/third_party/re2/re2/walker-inl.h +1 -1
  1437. data/third_party/re2/util/mutex.h +2 -2
  1438. data/third_party/re2/util/pcre.h +3 -3
  1439. data/third_party/upb/upb/decode.c +354 -204
  1440. data/third_party/upb/upb/decode.h +50 -3
  1441. data/third_party/upb/upb/decode_fast.c +1053 -0
  1442. data/third_party/upb/upb/decode_fast.h +153 -0
  1443. data/third_party/upb/upb/decode_internal.h +193 -0
  1444. data/third_party/upb/upb/def.c +609 -610
  1445. data/third_party/upb/upb/def.h +57 -50
  1446. data/third_party/upb/upb/def.hpp +66 -123
  1447. data/third_party/upb/upb/encode.c +267 -176
  1448. data/third_party/upb/upb/encode.h +56 -4
  1449. data/third_party/upb/upb/msg.c +304 -84
  1450. data/third_party/upb/upb/msg.h +76 -441
  1451. data/third_party/upb/upb/msg_internal.h +687 -0
  1452. data/third_party/upb/upb/port_def.inc +156 -82
  1453. data/third_party/upb/upb/port_undef.inc +41 -8
  1454. data/third_party/upb/upb/reflection.c +64 -55
  1455. data/third_party/upb/upb/reflection.h +36 -8
  1456. data/third_party/upb/upb/reflection.hpp +37 -0
  1457. data/third_party/upb/upb/table.c +238 -276
  1458. data/third_party/upb/upb/{table.int.h → table_internal.h} +66 -181
  1459. data/third_party/upb/upb/text_encode.c +77 -26
  1460. data/third_party/upb/upb/text_encode.h +30 -1
  1461. data/third_party/upb/upb/upb.c +75 -47
  1462. data/third_party/upb/upb/upb.h +72 -13
  1463. data/third_party/upb/upb/upb.hpp +28 -4
  1464. data/third_party/upb/upb/upb_internal.h +58 -0
  1465. data/third_party/xxhash/xxhash.h +5325 -0
  1466. metadata +287 -137
  1467. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -909
  1468. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
  1469. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
  1470. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  1471. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  1472. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
  1473. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
  1474. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
  1475. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  1476. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  1477. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  1478. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  1479. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -242
  1480. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  1481. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  1482. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  1483. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +0 -28
  1484. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -53
  1485. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
  1486. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -129
  1487. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
  1488. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -77
  1489. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +0 -36
  1490. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -85
  1491. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
  1492. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -160
  1493. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
  1494. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -84
  1495. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  1496. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -117
  1497. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
  1498. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
  1499. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
  1500. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
  1501. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
  1502. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
  1503. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
  1504. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
  1505. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
  1506. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
  1507. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
  1508. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
  1509. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -265
  1510. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -104
  1511. data/src/core/lib/gpr/arena.h +0 -47
  1512. data/src/core/lib/gpr/tls_gcc.h +0 -52
  1513. data/src/core/lib/gpr/tls_msvc.h +0 -54
  1514. data/src/core/lib/gpr/tls_pthread.h +0 -56
  1515. data/src/core/lib/gpr/tls_stdcpp.h +0 -48
  1516. data/src/core/lib/gprpp/atomic.h +0 -104
  1517. data/src/core/lib/gprpp/map.h +0 -53
  1518. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  1519. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  1520. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  1521. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  1522. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  1523. data/src/core/lib/iomgr/pollset_uv.cc +0 -93
  1524. data/src/core/lib/iomgr/pollset_uv.h +0 -32
  1525. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  1526. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  1527. data/src/core/lib/iomgr/tcp_uv.cc +0 -419
  1528. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  1529. data/src/core/lib/iomgr/udp_server.cc +0 -748
  1530. data/src/core/lib/iomgr/udp_server.h +0 -104
  1531. data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
  1532. data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
  1533. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
  1534. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
  1535. data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
  1536. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
  1537. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
  1538. data/src/core/lib/transport/authority_override.cc +0 -38
  1539. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  1540. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
  1541. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  1542. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
  1543. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -237
  1544. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  1545. data/third_party/upb/upb/port.c +0 -26
@@ -18,18 +18,18 @@
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>
24
30
  #include <grpc/support/alloc.h>
25
31
  #include <grpc/support/log.h>
26
- #include <grpc/support/port_platform.h>
27
32
  #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
33
 
34
34
  #include "src/core/ext/transport/chttp2/transport/context_list.h"
35
35
  #include "src/core/ext/transport/chttp2/transport/frame_data.h"
@@ -100,23 +100,23 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
100
100
  "chttp2_refcount");
101
101
 
102
102
  // 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);
103
+ static void write_action_begin_locked(void* t, grpc_error_handle error);
104
+ static void write_action(void* t, grpc_error_handle error);
105
+ static void write_action_end(void* t, grpc_error_handle error);
106
+ static void write_action_end_locked(void* t, grpc_error_handle error);
107
107
 
108
- static void read_action(void* t, grpc_error* error);
109
- static void read_action_locked(void* t, grpc_error* error);
108
+ static void read_action(void* t, grpc_error_handle error);
109
+ static void read_action_locked(void* t, grpc_error_handle error);
110
110
  static void continue_read_action_locked(grpc_chttp2_transport* t);
111
111
 
112
- static void complete_fetch(void* gs, grpc_error* error);
113
- static void complete_fetch_locked(void* gs, grpc_error* error);
112
+ static void complete_fetch(void* gs, grpc_error_handle error);
113
+ static void complete_fetch_locked(void* gs, grpc_error_handle error);
114
114
  // Set a transport level setting, and push it to our peer
115
115
  static void queue_setting_update(grpc_chttp2_transport* t,
116
116
  grpc_chttp2_setting_id id, uint32_t value);
117
117
 
118
118
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
119
- grpc_error* error);
119
+ grpc_error_handle error);
120
120
 
121
121
  // Start new streams that have been created if we can
122
122
  static void maybe_start_some_streams(grpc_chttp2_transport* t);
@@ -126,46 +126,68 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
126
126
  const absl::Status& status,
127
127
  const char* reason);
128
128
 
129
- static void benign_reclaimer(void* t, grpc_error* error);
130
- static void destructive_reclaimer(void* t, grpc_error* error);
131
- static void benign_reclaimer_locked(void* t, grpc_error* error);
132
- static void destructive_reclaimer_locked(void* t, grpc_error* error);
129
+ static void benign_reclaimer(void* arg, grpc_error_handle error);
130
+ static void destructive_reclaimer(void* arg, grpc_error_handle error);
131
+ static void benign_reclaimer_locked(void* arg, grpc_error_handle error);
132
+ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error);
133
133
 
134
134
  static void post_benign_reclaimer(grpc_chttp2_transport* t);
135
135
  static void post_destructive_reclaimer(grpc_chttp2_transport* t);
136
136
 
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);
137
+ static void close_transport_locked(grpc_chttp2_transport* t,
138
+ grpc_error_handle error);
139
+ static void end_all_the_calls(grpc_chttp2_transport* t,
140
+ grpc_error_handle error);
141
+
142
+ static void start_bdp_ping(void* tp, grpc_error_handle error);
143
+ static void finish_bdp_ping(void* tp, grpc_error_handle error);
144
+ static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
145
+ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
146
+ static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error);
147
+ static void next_bdp_ping_timer_expired_locked(void* tp,
148
+ grpc_error_handle error);
149
+
150
+ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
148
151
  static void send_ping_locked(grpc_chttp2_transport* t,
149
- grpc_closure* on_initiate,
150
- grpc_closure* on_complete);
151
- static void retry_initiate_ping_locked(void* tp, grpc_error* error);
152
+ grpc_closure* on_initiate, grpc_closure* on_ack);
153
+ static void retry_initiate_ping_locked(void* tp, grpc_error_handle error);
152
154
 
153
155
  // keepalive-relevant functions
154
- static void init_keepalive_ping(void* arg, grpc_error* error);
155
- static void init_keepalive_ping_locked(void* arg, grpc_error* error);
156
- static void start_keepalive_ping(void* arg, grpc_error* error);
157
- static void finish_keepalive_ping(void* arg, grpc_error* error);
158
- static void start_keepalive_ping_locked(void* arg, grpc_error* error);
159
- static void finish_keepalive_ping_locked(void* arg, grpc_error* error);
160
- static void keepalive_watchdog_fired(void* arg, grpc_error* error);
161
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error);
156
+ static void init_keepalive_ping(void* arg, grpc_error_handle error);
157
+ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error);
158
+ static void start_keepalive_ping(void* arg, grpc_error_handle error);
159
+ static void finish_keepalive_ping(void* arg, grpc_error_handle error);
160
+ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
161
+ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
162
+ static void keepalive_watchdog_fired(void* arg, grpc_error_handle error);
163
+ static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error);
162
164
 
163
- static void reset_byte_stream(void* arg, grpc_error* error);
165
+ static void reset_byte_stream(void* arg, grpc_error_handle error);
164
166
 
165
167
  // Flow control default enabled. Can be disabled by setting
166
168
  // GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
167
169
  bool g_flow_control_enabled = true;
168
170
 
171
+ namespace grpc_core {
172
+
173
+ namespace {
174
+ TestOnlyGlobalHttp2TransportInitCallback test_only_init_callback = nullptr;
175
+ TestOnlyGlobalHttp2TransportDestructCallback test_only_destruct_callback =
176
+ nullptr;
177
+ } // namespace
178
+
179
+ void TestOnlySetGlobalHttp2TransportInitCallback(
180
+ TestOnlyGlobalHttp2TransportInitCallback callback) {
181
+ test_only_init_callback = callback;
182
+ }
183
+
184
+ void TestOnlySetGlobalHttp2TransportDestructCallback(
185
+ TestOnlyGlobalHttp2TransportDestructCallback callback) {
186
+ test_only_destruct_callback = callback;
187
+ }
188
+
189
+ } // namespace grpc_core
190
+
169
191
  //
170
192
  // CONSTRUCTION/DESTRUCTION/REFCOUNTING
171
193
  //
@@ -182,9 +204,8 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
182
204
  grpc_slice_buffer_destroy_internal(&qbuf);
183
205
 
184
206
  grpc_slice_buffer_destroy_internal(&outbuf);
185
- grpc_chttp2_hpack_compressor_destroy(&hpack_compressor);
186
207
 
187
- grpc_error* error =
208
+ grpc_error_handle error =
188
209
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
189
210
  // ContextList::Execute follows semantics of a callback function and does not
190
211
  // take a ref on error
@@ -193,7 +214,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
193
214
  cl = nullptr;
194
215
 
195
216
  grpc_slice_buffer_destroy_internal(&read_buffer);
196
- grpc_chttp2_hpack_parser_destroy(&hpack_parser);
197
217
  grpc_chttp2_goaway_parser_destroy(&goaway_parser);
198
218
 
199
219
  for (i = 0; i < STREAM_LIST_COUNT; i++) {
@@ -222,6 +242,9 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
222
242
 
223
243
  GRPC_ERROR_UNREF(closed_with_error);
224
244
  gpr_free(ping_acks);
245
+ if (grpc_core::test_only_destruct_callback != nullptr) {
246
+ grpc_core::test_only_destruct_callback();
247
+ }
225
248
  }
226
249
 
227
250
  static const grpc_transport_vtable* get_vtable(void);
@@ -256,8 +279,7 @@ static bool read_channel_args(grpc_chttp2_transport* t,
256
279
  const int value =
257
280
  grpc_channel_arg_get_integer(&channel_args->args[i], options);
258
281
  if (value >= 0) {
259
- grpc_chttp2_hpack_compressor_set_max_usable_size(
260
- &t->hpack_compressor, static_cast<uint32_t>(value));
282
+ t->hpack_compressor.SetMaxUsableSize(value);
261
283
  }
262
284
  } else if (0 == strcmp(channel_args->args[i].key,
263
285
  GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
@@ -367,7 +389,9 @@ static bool read_channel_args(grpc_chttp2_transport* t,
367
389
  t->channelz_socket =
368
390
  grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
369
391
  std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
370
- absl::StrFormat("%s %s", get_vtable()->name, t->peer_string));
392
+ absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
393
+ grpc_core::channelz::SocketNode::Security::GetFromChannelArgs(
394
+ channel_args));
371
395
  }
372
396
  return enable_bdp;
373
397
  }
@@ -448,7 +472,6 @@ grpc_chttp2_transport::grpc_chttp2_transport(
448
472
  grpc_slice_buffer_add(&outbuf, grpc_slice_from_copied_string(
449
473
  GRPC_CHTTP2_CLIENT_CONNECT_STRING));
450
474
  }
451
- grpc_chttp2_hpack_compressor_init(&hpack_compressor);
452
475
  grpc_slice_buffer_init(&qbuf);
453
476
  // copy in initial settings to all setting sets
454
477
  size_t i;
@@ -458,7 +481,6 @@ grpc_chttp2_transport::grpc_chttp2_transport(
458
481
  settings[j][i] = grpc_chttp2_settings_parameters[i].default_value;
459
482
  }
460
483
  }
461
- grpc_chttp2_hpack_parser_init(&hpack_parser);
462
484
  grpc_chttp2_goaway_parser_init(&goaway_parser);
463
485
 
464
486
  // configure http2 the way we like it
@@ -505,11 +527,16 @@ grpc_chttp2_transport::grpc_chttp2_transport(
505
527
 
506
528
  grpc_chttp2_initiate_write(this, GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE);
507
529
  post_benign_reclaimer(this);
530
+ if (grpc_core::test_only_init_callback != nullptr) {
531
+ grpc_core::test_only_init_callback();
532
+ }
508
533
  }
509
534
 
510
- static void destroy_transport_locked(void* tp, grpc_error* /*error*/) {
535
+ static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
511
536
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
512
537
  t->destroying = 1;
538
+ grpc_resource_user_shutdown(t->resource_user);
539
+ grpc_resource_user_unref(t->resource_user);
513
540
  close_transport_locked(
514
541
  t, grpc_error_set_int(
515
542
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"),
@@ -525,7 +552,7 @@ static void destroy_transport(grpc_transport* gt) {
525
552
  }
526
553
 
527
554
  static void close_transport_locked(grpc_chttp2_transport* t,
528
- grpc_error* error) {
555
+ grpc_error_handle error) {
529
556
  end_all_the_calls(t, GRPC_ERROR_REF(error));
530
557
  cancel_pings(t, GRPC_ERROR_REF(error));
531
558
  if (t->closed_with_error == GRPC_ERROR_NONE) {
@@ -534,7 +561,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
534
561
  GRPC_STATUS_UNAVAILABLE);
535
562
  }
536
563
  if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
537
- if (t->close_transport_on_writes_finished == nullptr) {
564
+ if (t->close_transport_on_writes_finished == GRPC_ERROR_NONE) {
538
565
  t->close_transport_on_writes_finished =
539
566
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
540
567
  "Delayed close due to in-progress write");
@@ -580,6 +607,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
580
607
  GRPC_ERROR_REF(error));
581
608
  t->notify_on_receive_settings = nullptr;
582
609
  }
610
+ if (t->notify_on_close != nullptr) {
611
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
612
+ GRPC_ERROR_REF(error));
613
+ t->notify_on_close = nullptr;
614
+ }
583
615
  GRPC_ERROR_UNREF(error);
584
616
  }
585
617
 
@@ -614,10 +646,10 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
614
646
  : t(t),
615
647
  refcount(refcount),
616
648
  reffer(this),
617
- metadata_buffer{grpc_chttp2_incoming_metadata_buffer(arena),
618
- grpc_chttp2_incoming_metadata_buffer(arena)} {
649
+ initial_metadata_buffer(arena),
650
+ trailing_metadata_buffer(arena) {
619
651
  if (server_data) {
620
- id = static_cast<uint32_t>((uintptr_t)server_data);
652
+ id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
621
653
  *t->accepting_stream = this;
622
654
  grpc_chttp2_stream_map_add(&t->stream_map, id, this);
623
655
  post_destructive_reclaimer(t);
@@ -679,13 +711,10 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
679
711
  GRPC_ERROR_UNREF(read_closed_error);
680
712
  GRPC_ERROR_UNREF(write_closed_error);
681
713
  GRPC_ERROR_UNREF(byte_stream_error);
682
-
683
714
  flow_control.Destroy();
684
-
685
- if (t->resource_user != nullptr) {
715
+ if (!t->is_client) {
686
716
  grpc_resource_user_free(t->resource_user, GRPC_RESOURCE_QUOTA_CALL_SIZE);
687
717
  }
688
-
689
718
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream");
690
719
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, GRPC_ERROR_NONE);
691
720
  }
@@ -699,7 +728,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs,
699
728
  return 0;
700
729
  }
701
730
 
702
- static void destroy_stream_locked(void* sp, grpc_error* /*error*/) {
731
+ static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
703
732
  GPR_TIMER_SCOPE("destroy_stream", 0);
704
733
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
705
734
  s->~grpc_chttp2_stream();
@@ -737,10 +766,10 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
737
766
  // Don't accept the stream if memory quota doesn't allow. Note that we should
738
767
  // simply refuse the stream here instead of canceling the stream after it's
739
768
  // accepted since the latter will create the call which costs much memory.
740
- if (t->resource_user != nullptr &&
741
- !grpc_resource_user_safe_alloc(t->resource_user,
769
+ GPR_ASSERT(t->resource_user != nullptr);
770
+ if (!grpc_resource_user_safe_alloc(t->resource_user,
742
771
  GRPC_RESOURCE_QUOTA_CALL_SIZE)) {
743
- gpr_log(GPR_ERROR, "Memory exhausted, rejecting the stream.");
772
+ gpr_log(GPR_INFO, "Memory exhausted, rejecting the stream.");
744
773
  grpc_chttp2_add_rst_stream_to_next_write(t, id, GRPC_HTTP2_REFUSED_STREAM,
745
774
  nullptr);
746
775
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM);
@@ -750,7 +779,7 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
750
779
  GPR_ASSERT(t->accepting_stream == nullptr);
751
780
  t->accepting_stream = &accepting;
752
781
  t->accept_stream_cb(t->accept_stream_cb_user_data, &t->base,
753
- (void*)static_cast<uintptr_t>(id));
782
+ reinterpret_cast<void*>(id));
754
783
  t->accepting_stream = nullptr;
755
784
  return accepting;
756
785
  }
@@ -786,9 +815,9 @@ static void set_write_state(grpc_chttp2_transport* t,
786
815
  // from peer while we had some pending writes)
787
816
  if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
788
817
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
789
- if (t->close_transport_on_writes_finished != nullptr) {
790
- grpc_error* err = t->close_transport_on_writes_finished;
791
- t->close_transport_on_writes_finished = nullptr;
818
+ if (t->close_transport_on_writes_finished != GRPC_ERROR_NONE) {
819
+ grpc_error_handle err = t->close_transport_on_writes_finished;
820
+ t->close_transport_on_writes_finished = GRPC_ERROR_NONE;
792
821
  close_transport_locked(t, err);
793
822
  }
794
823
  }
@@ -919,7 +948,8 @@ static const char* begin_writing_desc(bool partial) {
919
948
  }
920
949
  }
921
950
 
922
- static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
951
+ static void write_action_begin_locked(void* gt,
952
+ grpc_error_handle /*error_ignored*/) {
923
953
  GPR_TIMER_SCOPE("write_action_begin_locked", 0);
924
954
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
925
955
  GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
@@ -958,7 +988,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
958
988
  }
959
989
  }
960
990
 
961
- static void write_action(void* gt, grpc_error* /*error*/) {
991
+ static void write_action(void* gt, grpc_error_handle /*error*/) {
962
992
  GPR_TIMER_SCOPE("write_action", 0);
963
993
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
964
994
  void* cl = t->cl;
@@ -970,7 +1000,7 @@ static void write_action(void* gt, grpc_error* /*error*/) {
970
1000
  cl);
971
1001
  }
972
1002
 
973
- static void write_action_end(void* tp, grpc_error* error) {
1003
+ static void write_action_end(void* tp, grpc_error_handle error) {
974
1004
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
975
1005
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
976
1006
  write_action_end_locked, t, nullptr),
@@ -979,7 +1009,7 @@ static void write_action_end(void* tp, grpc_error* error) {
979
1009
 
980
1010
  // Callback from the grpc_endpoint after bytes have been written by calling
981
1011
  // sendmsg
982
- static void write_action_end_locked(void* tp, grpc_error* error) {
1012
+ static void write_action_end_locked(void* tp, grpc_error_handle error) {
983
1013
  GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
984
1014
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
985
1015
 
@@ -1034,7 +1064,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
1034
1064
  grpc_chttp2_setting_id id, uint32_t value) {
1035
1065
  const grpc_chttp2_setting_parameters* sp =
1036
1066
  &grpc_chttp2_settings_parameters[id];
1037
- uint32_t use_value = GPR_CLAMP(value, sp->min_value, sp->max_value);
1067
+ uint32_t use_value = grpc_core::Clamp(value, sp->min_value, sp->max_value);
1038
1068
  if (use_value != value) {
1039
1069
  gpr_log(GPR_INFO, "Requested parameter %s clamped from %d to %d", sp->name,
1040
1070
  value, use_value);
@@ -1048,7 +1078,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
1048
1078
  void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1049
1079
  uint32_t goaway_error,
1050
1080
  uint32_t last_stream_id,
1051
- const grpc_slice& goaway_text) {
1081
+ absl::string_view goaway_text) {
1052
1082
  // Discard the error from a previous goaway frame (if any)
1053
1083
  if (t->goaway_error != GRPC_ERROR_NONE) {
1054
1084
  GRPC_ERROR_UNREF(t->goaway_error);
@@ -1068,7 +1098,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1068
1098
  // received a GOAWAY with a non NO_ERROR code.
1069
1099
  if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1070
1100
  gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
1071
- goaway_error, grpc_error_string(t->goaway_error));
1101
+ goaway_error, grpc_error_std_string(t->goaway_error).c_str());
1072
1102
  }
1073
1103
  absl::Status status = grpc_error_to_absl_status(t->goaway_error);
1074
1104
  // When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
@@ -1077,7 +1107,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1077
1107
  // for new connections on that channel.
1078
1108
  if (GPR_UNLIKELY(t->is_client &&
1079
1109
  goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
1080
- grpc_slice_str_cmp(goaway_text, "too_many_pings") == 0)) {
1110
+ goaway_text == "too_many_pings")) {
1081
1111
  gpr_log(GPR_ERROR,
1082
1112
  "Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
1083
1113
  "data equal to \"too_many_pings\"");
@@ -1174,7 +1204,8 @@ static void null_then_sched_closure(grpc_closure** closure) {
1174
1204
  void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1175
1205
  grpc_chttp2_stream* /*s*/,
1176
1206
  grpc_closure** pclosure,
1177
- grpc_error* error, const char* desc) {
1207
+ grpc_error_handle error,
1208
+ const char* desc) {
1178
1209
  grpc_closure* closure = *pclosure;
1179
1210
  *pclosure = nullptr;
1180
1211
  if (closure == nullptr) {
@@ -1183,7 +1214,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1183
1214
  }
1184
1215
  closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
1185
1216
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1186
- const char* errstr = grpc_error_string(error);
1187
1217
  gpr_log(
1188
1218
  GPR_INFO,
1189
1219
  "complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
@@ -1193,15 +1223,16 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1193
1223
  CLOSURE_BARRIER_FIRST_REF_BIT),
1194
1224
  static_cast<int>(closure->next_data.scratch %
1195
1225
  CLOSURE_BARRIER_FIRST_REF_BIT),
1196
- desc, errstr, write_state_name(t->write_state));
1226
+ desc, grpc_error_std_string(error).c_str(),
1227
+ write_state_name(t->write_state));
1197
1228
  }
1198
1229
  if (error != GRPC_ERROR_NONE) {
1199
1230
  if (closure->error_data.error == GRPC_ERROR_NONE) {
1200
1231
  closure->error_data.error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1201
1232
  "Error in HTTP transport completing operation");
1202
- closure->error_data.error = grpc_error_set_str(
1203
- closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
1204
- grpc_slice_from_copied_string(t->peer_string.c_str()));
1233
+ closure->error_data.error =
1234
+ grpc_error_set_str(closure->error_data.error,
1235
+ GRPC_ERROR_STR_TARGET_ADDRESS, t->peer_string);
1205
1236
  }
1206
1237
  closure->error_data.error =
1207
1238
  grpc_error_add_child(closure->error_data.error, error);
@@ -1221,9 +1252,10 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1221
1252
  }
1222
1253
 
1223
1254
  static bool contains_non_ok_status(grpc_metadata_batch* batch) {
1224
- if (batch->idx.named.grpc_status != nullptr) {
1225
- return !grpc_mdelem_static_value_eq(batch->idx.named.grpc_status->md,
1226
- GRPC_MDELEM_GRPC_STATUS_0);
1255
+ if (batch->legacy_index()->named.grpc_status != nullptr) {
1256
+ return !grpc_mdelem_static_value_eq(
1257
+ batch->legacy_index()->named.grpc_status->md,
1258
+ GRPC_MDELEM_GRPC_STATUS_0);
1227
1259
  }
1228
1260
  return false;
1229
1261
  }
@@ -1251,7 +1283,6 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1251
1283
  if (s->fetching_send_message == nullptr) {
1252
1284
  // Stream was cancelled before message fetch completed
1253
1285
  abort(); /* TODO(ctiller): what cleanup here? */
1254
- return; /* early out */
1255
1286
  }
1256
1287
  if (s->fetched_send_message_length == s->fetching_send_message->length()) {
1257
1288
  int64_t notify_offset = s->next_message_end_offset;
@@ -1282,7 +1313,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1282
1313
  UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
1283
1314
  ::complete_fetch, s,
1284
1315
  grpc_schedule_on_exec_ctx))) {
1285
- grpc_error* error = s->fetching_send_message->Pull(&s->fetching_slice);
1316
+ grpc_error_handle error =
1317
+ s->fetching_send_message->Pull(&s->fetching_slice);
1286
1318
  if (error != GRPC_ERROR_NONE) {
1287
1319
  s->fetching_send_message.reset();
1288
1320
  grpc_chttp2_cancel_stream(t, s, error);
@@ -1293,14 +1325,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1293
1325
  }
1294
1326
  }
1295
1327
 
1296
- static void complete_fetch(void* gs, grpc_error* error) {
1328
+ static void complete_fetch(void* gs, grpc_error_handle error) {
1297
1329
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
1298
1330
  s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
1299
1331
  ::complete_fetch_locked, s, nullptr),
1300
1332
  GRPC_ERROR_REF(error));
1301
1333
  }
1302
1334
 
1303
- static void complete_fetch_locked(void* gs, grpc_error* error) {
1335
+ static void complete_fetch_locked(void* gs, grpc_error_handle error) {
1304
1336
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
1305
1337
  grpc_chttp2_transport* t = s->t;
1306
1338
  if (error == GRPC_ERROR_NONE) {
@@ -1318,19 +1350,18 @@ static void complete_fetch_locked(void* gs, grpc_error* error) {
1318
1350
 
1319
1351
  static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
1320
1352
  bool is_client, bool is_initial) {
1321
- for (grpc_linked_mdelem* md = md_batch->list.head; md != nullptr;
1322
- md = md->next) {
1323
- char* key = grpc_slice_to_c_string(GRPC_MDKEY(md->md));
1324
- char* value = grpc_slice_to_c_string(GRPC_MDVALUE(md->md));
1353
+ md_batch->ForEach([=](grpc_mdelem md) {
1354
+ char* key = grpc_slice_to_c_string(GRPC_MDKEY(md));
1355
+ char* value = grpc_slice_to_c_string(GRPC_MDVALUE(md));
1325
1356
  gpr_log(GPR_INFO, "HTTP:%d:%s:%s: %s: %s", id, is_initial ? "HDR" : "TRL",
1326
1357
  is_client ? "CLI" : "SVR", key, value);
1327
1358
  gpr_free(key);
1328
1359
  gpr_free(value);
1329
- }
1360
+ });
1330
1361
  }
1331
1362
 
1332
1363
  static void perform_stream_op_locked(void* stream_op,
1333
- grpc_error* /*error_ignored*/) {
1364
+ grpc_error_handle /*error_ignored*/) {
1334
1365
  GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
1335
1366
 
1336
1367
  grpc_transport_stream_op_batch* op =
@@ -1380,12 +1411,13 @@ static void perform_stream_op_locked(void* stream_op,
1380
1411
  on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1381
1412
 
1382
1413
  // Identify stream compression
1383
- if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
1384
- .content_encoding == nullptr ||
1414
+ if (op_payload->send_initial_metadata.send_initial_metadata->legacy_index()
1415
+ ->named.content_encoding == nullptr ||
1385
1416
  grpc_stream_compression_method_parse(
1386
1417
  GRPC_MDVALUE(
1387
- op_payload->send_initial_metadata.send_initial_metadata->idx
1388
- .named.content_encoding->md),
1418
+ op_payload->send_initial_metadata.send_initial_metadata
1419
+ ->legacy_index()
1420
+ ->named.content_encoding->md),
1389
1421
  true, &s->stream_compression_method) == 0) {
1390
1422
  s->stream_compression_method = GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS;
1391
1423
  }
@@ -1399,7 +1431,10 @@ static void perform_stream_op_locked(void* stream_op,
1399
1431
  s->send_initial_metadata =
1400
1432
  op_payload->send_initial_metadata.send_initial_metadata;
1401
1433
  if (t->is_client) {
1402
- s->deadline = GPR_MIN(s->deadline, s->send_initial_metadata->deadline);
1434
+ s->deadline = std::min(
1435
+ s->deadline,
1436
+ s->send_initial_metadata->get(grpc_core::GrpcTimeoutMetadata())
1437
+ .value_or(GRPC_MILLIS_INF_FUTURE));
1403
1438
  }
1404
1439
  if (contains_non_ok_status(s->send_initial_metadata)) {
1405
1440
  s->seen_error = true;
@@ -1505,8 +1540,7 @@ static void perform_stream_op_locked(void* stream_op,
1505
1540
  s->sent_trailing_metadata_op = nullptr;
1506
1541
  grpc_chttp2_complete_closure_step(
1507
1542
  t, s, &s->send_trailing_metadata_finished,
1508
- grpc_metadata_batch_is_empty(
1509
- op->payload->send_trailing_metadata.send_trailing_metadata)
1543
+ op->payload->send_trailing_metadata.send_trailing_metadata->empty()
1510
1544
  ? GRPC_ERROR_NONE
1511
1545
  : GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1512
1546
  "Attempt to send trailing metadata after "
@@ -1544,6 +1578,8 @@ static void perform_stream_op_locked(void* stream_op,
1544
1578
  GPR_ASSERT(!s->pending_byte_stream);
1545
1579
  s->recv_message_ready = op_payload->recv_message.recv_message_ready;
1546
1580
  s->recv_message = op_payload->recv_message.recv_message;
1581
+ s->call_failed_before_recv_message =
1582
+ op_payload->recv_message.call_failed_before_recv_message;
1547
1583
  if (s->id != 0) {
1548
1584
  if (!s->read_closed) {
1549
1585
  before = s->frame_storage.length +
@@ -1553,8 +1589,7 @@ static void perform_stream_op_locked(void* stream_op,
1553
1589
  grpc_chttp2_maybe_complete_recv_message(t, s);
1554
1590
  if (s->id != 0) {
1555
1591
  if (!s->read_closed && s->frame_storage.length == 0) {
1556
- size_t after = s->frame_storage.length +
1557
- s->unprocessed_incoming_frames_buffer_cached_length;
1592
+ size_t after = s->unprocessed_incoming_frames_buffer_cached_length;
1558
1593
  s->flow_control->IncomingByteStreamUpdate(GRPC_HEADER_SIZE_IN_BYTES,
1559
1594
  before - after);
1560
1595
  grpc_chttp2_act_on_flowctl_action(s->flow_control->MakeAction(), t, s);
@@ -1591,14 +1626,14 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1591
1626
 
1592
1627
  if (!t->is_client) {
1593
1628
  if (op->send_initial_metadata) {
1594
- grpc_millis deadline =
1595
- op->payload->send_initial_metadata.send_initial_metadata->deadline;
1596
- GPR_ASSERT(deadline == GRPC_MILLIS_INF_FUTURE);
1629
+ GPR_ASSERT(!op->payload->send_initial_metadata.send_initial_metadata
1630
+ ->get(grpc_core::GrpcTimeoutMetadata())
1631
+ .has_value());
1597
1632
  }
1598
1633
  if (op->send_trailing_metadata) {
1599
- grpc_millis deadline =
1600
- op->payload->send_trailing_metadata.send_trailing_metadata->deadline;
1601
- GPR_ASSERT(deadline == GRPC_MILLIS_INF_FUTURE);
1634
+ GPR_ASSERT(!op->payload->send_trailing_metadata.send_trailing_metadata
1635
+ ->get(grpc_core::GrpcTimeoutMetadata())
1636
+ .has_value());
1602
1637
  }
1603
1638
  }
1604
1639
 
@@ -1614,7 +1649,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1614
1649
  GRPC_ERROR_NONE);
1615
1650
  }
1616
1651
 
1617
- static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) {
1652
+ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
1618
1653
  // callback remaining pings: they're not allowed to call into the transport,
1619
1654
  // and maybe they hold resources that need to be freed
1620
1655
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
@@ -1681,14 +1716,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1681
1716
  GRPC_ERROR_NONE);
1682
1717
  }
1683
1718
 
1684
- void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error* error) {
1719
+ void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
1685
1720
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1686
1721
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
1687
1722
  retry_initiate_ping_locked, t, nullptr),
1688
1723
  GRPC_ERROR_REF(error));
1689
1724
  }
1690
1725
 
1691
- static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
1726
+ static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
1692
1727
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1693
1728
  t->ping_state.is_delayed_ping_timer_set = false;
1694
1729
  if (error == GRPC_ERROR_NONE) {
@@ -1711,18 +1746,18 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1711
1746
  }
1712
1747
  }
1713
1748
 
1714
- static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) {
1749
+ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
1715
1750
  // We want to log this irrespective of whether http tracing is enabled
1716
- gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1717
- grpc_error_string(error));
1751
+ gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1752
+ grpc_error_std_string(error).c_str());
1718
1753
  t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
1719
1754
  grpc_http2_error_code http_error;
1720
- grpc_slice slice;
1721
- grpc_error_get_status(error, GRPC_MILLIS_INF_FUTURE, nullptr, &slice,
1755
+ std::string message;
1756
+ grpc_error_get_status(error, GRPC_MILLIS_INF_FUTURE, nullptr, &message,
1722
1757
  &http_error, nullptr);
1723
- grpc_chttp2_goaway_append(t->last_new_stream_id,
1724
- static_cast<uint32_t>(http_error),
1725
- grpc_slice_ref_internal(slice), &t->qbuf);
1758
+ grpc_chttp2_goaway_append(
1759
+ t->last_new_stream_id, static_cast<uint32_t>(http_error),
1760
+ grpc_slice_from_cpp_string(std::move(message)), &t->qbuf);
1726
1761
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1727
1762
  GRPC_ERROR_UNREF(error);
1728
1763
  }
@@ -1752,12 +1787,12 @@ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
1752
1787
  }
1753
1788
 
1754
1789
  static void perform_transport_op_locked(void* stream_op,
1755
- grpc_error* /*error_ignored*/) {
1790
+ grpc_error_handle /*error_ignored*/) {
1756
1791
  grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
1757
1792
  grpc_chttp2_transport* t =
1758
1793
  static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
1759
1794
 
1760
- if (op->goaway_error) {
1795
+ if (op->goaway_error != GRPC_ERROR_NONE) {
1761
1796
  send_goaway(t, op->goaway_error);
1762
1797
  }
1763
1798
 
@@ -1824,15 +1859,14 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
1824
1859
  &s->unprocessed_incoming_frames_buffer);
1825
1860
  }
1826
1861
  }
1827
- grpc_chttp2_incoming_metadata_buffer_publish(&s->metadata_buffer[0],
1828
- s->recv_initial_metadata);
1862
+ *s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
1829
1863
  null_then_sched_closure(&s->recv_initial_metadata_ready);
1830
1864
  }
1831
1865
  }
1832
1866
 
1833
1867
  void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
1834
1868
  grpc_chttp2_stream* s) {
1835
- grpc_error* error = GRPC_ERROR_NONE;
1869
+ grpc_error_handle error = GRPC_ERROR_NONE;
1836
1870
  if (s->recv_message_ready != nullptr) {
1837
1871
  *s->recv_message = nullptr;
1838
1872
  if (s->final_metadata_requested && s->seen_error) {
@@ -1909,6 +1943,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
1909
1943
  null_then_sched_closure(&s->recv_message_ready);
1910
1944
  } else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
1911
1945
  *s->recv_message = nullptr;
1946
+ if (s->call_failed_before_recv_message != nullptr) {
1947
+ *s->call_failed_before_recv_message =
1948
+ (s->published_metadata[1] != GRPC_METADATA_PUBLISHED_AT_CLOSE);
1949
+ }
1912
1950
  null_then_sched_closure(&s->recv_message_ready);
1913
1951
  }
1914
1952
  GRPC_ERROR_UNREF(error);
@@ -1937,7 +1975,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1937
1975
  GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
1938
1976
  grpc_slice_buffer_move_first(
1939
1977
  &s->frame_storage,
1940
- GPR_MIN(s->frame_storage.length, GRPC_HEADER_SIZE_IN_BYTES),
1978
+ std::min(s->frame_storage.length,
1979
+ size_t(GRPC_HEADER_SIZE_IN_BYTES)),
1941
1980
  &s->unprocessed_incoming_frames_buffer);
1942
1981
  if (s->unprocessed_incoming_frames_buffer.length > 0) {
1943
1982
  s->unprocessed_incoming_frames_decompressed = true;
@@ -1974,15 +2013,14 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1974
2013
  s->recv_trailing_metadata_finished != nullptr) {
1975
2014
  grpc_transport_move_stats(&s->stats, s->collecting_stats);
1976
2015
  s->collecting_stats = nullptr;
1977
- grpc_chttp2_incoming_metadata_buffer_publish(&s->metadata_buffer[1],
1978
- s->recv_trailing_metadata);
2016
+ *s->recv_trailing_metadata = std::move(s->trailing_metadata_buffer);
1979
2017
  null_then_sched_closure(&s->recv_trailing_metadata_finished);
1980
2018
  }
1981
2019
  }
1982
2020
  }
1983
2021
 
1984
2022
  static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
1985
- grpc_error* error) {
2023
+ grpc_error_handle error) {
1986
2024
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
1987
2025
  grpc_chttp2_stream_map_delete(&t->stream_map, id));
1988
2026
  GPR_DEBUG_ASSERT(s);
@@ -2025,7 +2063,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2025
2063
  }
2026
2064
 
2027
2065
  void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2028
- grpc_error* due_to_error) {
2066
+ grpc_error_handle due_to_error) {
2029
2067
  if (!t->is_client && !s->sent_trailing_metadata &&
2030
2068
  grpc_error_has_clear_grpc_status(due_to_error)) {
2031
2069
  close_from_api(t, s, due_to_error);
@@ -2049,10 +2087,11 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2049
2087
  }
2050
2088
 
2051
2089
  void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2052
- grpc_error* error) {
2090
+ grpc_error_handle error) {
2053
2091
  grpc_status_code status;
2054
- grpc_slice slice;
2055
- grpc_error_get_status(error, s->deadline, &status, &slice, nullptr, nullptr);
2092
+ std::string message;
2093
+ grpc_error_get_status(error, s->deadline, &status, &message, nullptr,
2094
+ nullptr);
2056
2095
  if (status != GRPC_STATUS_OK) {
2057
2096
  s->seen_error = true;
2058
2097
  }
@@ -2067,17 +2106,14 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2067
2106
  char status_string[GPR_LTOA_MIN_BUFSIZE];
2068
2107
  gpr_ltoa(status, status_string);
2069
2108
  GRPC_LOG_IF_ERROR("add_status",
2070
- grpc_chttp2_incoming_metadata_buffer_replace_or_add(
2071
- &s->metadata_buffer[1],
2072
- grpc_mdelem_from_slices(
2073
- GRPC_MDSTR_GRPC_STATUS,
2074
- grpc_core::UnmanagedMemorySlice(status_string))));
2075
- if (!GRPC_SLICE_IS_EMPTY(slice)) {
2076
- GRPC_LOG_IF_ERROR(
2077
- "add_status_message",
2078
- grpc_chttp2_incoming_metadata_buffer_replace_or_add(
2079
- &s->metadata_buffer[1],
2080
- grpc_mdelem_create(GRPC_MDSTR_GRPC_MESSAGE, slice, nullptr)));
2109
+ s->trailing_metadata_buffer.ReplaceOrAppend(
2110
+ GRPC_MDSTR_GRPC_STATUS,
2111
+ grpc_core::UnmanagedMemorySlice(status_string)));
2112
+ if (!message.empty()) {
2113
+ grpc_slice message_slice = grpc_slice_from_cpp_string(std::move(message));
2114
+ GRPC_LOG_IF_ERROR("add_status_message",
2115
+ s->trailing_metadata_buffer.ReplaceOrAppend(
2116
+ GRPC_MDSTR_GRPC_MESSAGE, message_slice));
2081
2117
  }
2082
2118
  s->published_metadata[1] = GRPC_METADATA_SYNTHESIZED_FROM_FAKE;
2083
2119
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
@@ -2086,7 +2122,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2086
2122
  GRPC_ERROR_UNREF(error);
2087
2123
  }
2088
2124
 
2089
- static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
2125
+ static void add_error(grpc_error_handle error, grpc_error_handle* refs,
2126
+ size_t* nrefs) {
2090
2127
  if (error == GRPC_ERROR_NONE) return;
2091
2128
  for (size_t i = 0; i < *nrefs; i++) {
2092
2129
  if (error == refs[i]) {
@@ -2097,16 +2134,17 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
2097
2134
  ++*nrefs;
2098
2135
  }
2099
2136
 
2100
- static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
2101
- const char* master_error_msg) {
2102
- grpc_error* refs[3];
2137
+ static grpc_error_handle removal_error(grpc_error_handle extra_error,
2138
+ grpc_chttp2_stream* s,
2139
+ const char* main_error_msg) {
2140
+ grpc_error_handle refs[3];
2103
2141
  size_t nrefs = 0;
2104
2142
  add_error(s->read_closed_error, refs, &nrefs);
2105
2143
  add_error(s->write_closed_error, refs, &nrefs);
2106
2144
  add_error(extra_error, refs, &nrefs);
2107
- grpc_error* error = GRPC_ERROR_NONE;
2145
+ grpc_error_handle error = GRPC_ERROR_NONE;
2108
2146
  if (nrefs > 0) {
2109
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(master_error_msg,
2147
+ error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
2110
2148
  refs, nrefs);
2111
2149
  }
2112
2150
  GRPC_ERROR_UNREF(extra_error);
@@ -2114,7 +2152,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
2114
2152
  }
2115
2153
 
2116
2154
  static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2117
- grpc_chttp2_write_cb** list, grpc_error* error) {
2155
+ grpc_chttp2_write_cb** list,
2156
+ grpc_error_handle error) {
2118
2157
  while (*list) {
2119
2158
  grpc_chttp2_write_cb* cb = *list;
2120
2159
  *list = cb->next;
@@ -2127,7 +2166,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2127
2166
  }
2128
2167
 
2129
2168
  void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2130
- grpc_chttp2_stream* s, grpc_error* error) {
2169
+ grpc_chttp2_stream* s,
2170
+ grpc_error_handle error) {
2131
2171
  error =
2132
2172
  removal_error(error, s, "Pending writes failed due to stream closure");
2133
2173
  s->send_initial_metadata = nullptr;
@@ -2151,10 +2191,10 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2151
2191
 
2152
2192
  void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2153
2193
  grpc_chttp2_stream* s, int close_reads,
2154
- int close_writes, grpc_error* error) {
2194
+ int close_writes, grpc_error_handle error) {
2155
2195
  if (s->read_closed && s->write_closed) {
2156
2196
  // already closed, but we should still fake the status if needed.
2157
- grpc_error* overall_error = removal_error(error, s, "Stream removed");
2197
+ grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2158
2198
  if (overall_error != GRPC_ERROR_NONE) {
2159
2199
  grpc_chttp2_fake_status(t, s, overall_error);
2160
2200
  }
@@ -2175,7 +2215,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2175
2215
  }
2176
2216
  if (s->read_closed && s->write_closed) {
2177
2217
  became_closed = true;
2178
- grpc_error* overall_error =
2218
+ grpc_error_handle overall_error =
2179
2219
  removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
2180
2220
  if (s->id != 0) {
2181
2221
  remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
@@ -2204,7 +2244,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2204
2244
  }
2205
2245
 
2206
2246
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2207
- grpc_error* error) {
2247
+ grpc_error_handle error) {
2208
2248
  grpc_slice hdr;
2209
2249
  grpc_slice status_hdr;
2210
2250
  grpc_slice http_status_hdr;
@@ -2213,8 +2253,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2213
2253
  uint8_t* p;
2214
2254
  uint32_t len = 0;
2215
2255
  grpc_status_code grpc_status;
2216
- grpc_slice slice;
2217
- grpc_error_get_status(error, s->deadline, &grpc_status, &slice, nullptr,
2256
+ std::string message;
2257
+ grpc_error_get_status(error, s->deadline, &grpc_status, &message, nullptr,
2218
2258
  nullptr);
2219
2259
 
2220
2260
  GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
@@ -2307,10 +2347,10 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2307
2347
  GPR_ASSERT(p == GRPC_SLICE_END_PTR(status_hdr));
2308
2348
  len += static_cast<uint32_t> GRPC_SLICE_LENGTH(status_hdr);
2309
2349
 
2310
- size_t msg_len = GRPC_SLICE_LENGTH(slice);
2350
+ size_t msg_len = message.length();
2311
2351
  GPR_ASSERT(msg_len <= UINT32_MAX);
2312
- uint32_t msg_len_len = GRPC_CHTTP2_VARINT_LENGTH((uint32_t)msg_len, 1);
2313
- message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_len);
2352
+ grpc_core::VarintWriter<1> msg_len_writer(msg_len);
2353
+ message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
2314
2354
  p = GRPC_SLICE_START_PTR(message_pfx);
2315
2355
  *p++ = 0x00; /* literal header, not indexed */
2316
2356
  *p++ = 12; /* len(grpc-message) */
@@ -2326,8 +2366,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2326
2366
  *p++ = 'a';
2327
2367
  *p++ = 'g';
2328
2368
  *p++ = 'e';
2329
- GRPC_CHTTP2_WRITE_VARINT((uint32_t)msg_len, 1, 0, p, (uint32_t)msg_len_len);
2330
- p += msg_len_len;
2369
+ msg_len_writer.Write(0, p);
2370
+ p += msg_len_writer.length();
2331
2371
  GPR_ASSERT(p == GRPC_SLICE_END_PTR(message_pfx));
2332
2372
  len += static_cast<uint32_t> GRPC_SLICE_LENGTH(message_pfx);
2333
2373
  len += static_cast<uint32_t>(msg_len);
@@ -2352,7 +2392,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2352
2392
  }
2353
2393
  grpc_slice_buffer_add(&t->qbuf, status_hdr);
2354
2394
  grpc_slice_buffer_add(&t->qbuf, message_pfx);
2355
- grpc_slice_buffer_add(&t->qbuf, grpc_slice_ref_internal(slice));
2395
+ grpc_slice_buffer_add(&t->qbuf,
2396
+ grpc_slice_from_cpp_string(std::move(message)));
2356
2397
  grpc_chttp2_reset_ping_clock(t);
2357
2398
  grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
2358
2399
  &s->stats.outgoing);
@@ -2362,7 +2403,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2362
2403
  }
2363
2404
 
2364
2405
  struct cancel_stream_cb_args {
2365
- grpc_error* error;
2406
+ grpc_error_handle error;
2366
2407
  grpc_chttp2_transport* t;
2367
2408
  };
2368
2409
 
@@ -2372,7 +2413,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
2372
2413
  grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
2373
2414
  }
2374
2415
 
2375
- static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
2416
+ static void end_all_the_calls(grpc_chttp2_transport* t,
2417
+ grpc_error_handle error) {
2376
2418
  intptr_t http2_error;
2377
2419
  // If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
2378
2420
  if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
@@ -2398,7 +2440,7 @@ static void WithUrgency(grpc_chttp2_transport* t,
2398
2440
  break;
2399
2441
  case grpc_core::chttp2::FlowControlAction::Urgency::UPDATE_IMMEDIATELY:
2400
2442
  grpc_chttp2_initiate_write(t, reason);
2401
- // fallthrough
2443
+ ABSL_FALLTHROUGH_INTENDED;
2402
2444
  case grpc_core::chttp2::FlowControlAction::Urgency::QUEUE_UPDATE:
2403
2445
  action();
2404
2446
  break;
@@ -2426,15 +2468,15 @@ void grpc_chttp2_act_on_flowctl_action(
2426
2468
  });
2427
2469
  }
2428
2470
 
2429
- static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
2471
+ static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
2430
2472
  grpc_http_parser parser;
2431
2473
  size_t i = 0;
2432
- grpc_error* error = GRPC_ERROR_NONE;
2474
+ grpc_error_handle error = GRPC_ERROR_NONE;
2433
2475
  grpc_http_response response;
2434
2476
 
2435
2477
  grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
2436
2478
 
2437
- grpc_error* parse_error = GRPC_ERROR_NONE;
2479
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
2438
2480
  for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
2439
2481
  parse_error =
2440
2482
  grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
@@ -2455,34 +2497,34 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
2455
2497
  return error;
2456
2498
  }
2457
2499
 
2458
- static void read_action(void* tp, grpc_error* error) {
2500
+ static void read_action(void* tp, grpc_error_handle error) {
2459
2501
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2460
2502
  t->combiner->Run(
2461
2503
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
2462
2504
  GRPC_ERROR_REF(error));
2463
2505
  }
2464
2506
 
2465
- static void read_action_locked(void* tp, grpc_error* error) {
2507
+ static void read_action_locked(void* tp, grpc_error_handle error) {
2466
2508
  GPR_TIMER_SCOPE("reading_action_locked", 0);
2467
2509
 
2468
2510
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2469
2511
 
2470
- GRPC_ERROR_REF(error);
2512
+ (void)GRPC_ERROR_REF(error);
2471
2513
 
2472
- grpc_error* err = error;
2514
+ grpc_error_handle err = error;
2473
2515
  if (err != GRPC_ERROR_NONE) {
2474
2516
  err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2475
2517
  "Endpoint read failed", &err, 1),
2476
2518
  GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
2477
2519
  t->write_state);
2478
2520
  }
2479
- GPR_SWAP(grpc_error*, err, error);
2521
+ std::swap(err, error);
2480
2522
  GRPC_ERROR_UNREF(err);
2481
2523
  if (t->closed_with_error == GRPC_ERROR_NONE) {
2482
2524
  GPR_TIMER_SCOPE("reading_action.parse", 0);
2483
2525
  size_t i = 0;
2484
- grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2485
- GRPC_ERROR_NONE};
2526
+ grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2527
+ GRPC_ERROR_NONE};
2486
2528
  for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
2487
2529
  errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
2488
2530
  }
@@ -2570,23 +2612,21 @@ void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2570
2612
  grpc_schedule_on_exec_ctx),
2571
2613
  GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
2572
2614
  grpc_schedule_on_exec_ctx));
2573
- // TODO(yashykt): Enabling this causes internal b/168345569. Re-enable once
2574
- // fixed.
2575
- // grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2615
+ grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2576
2616
  }
2577
2617
 
2578
- static void start_bdp_ping(void* tp, grpc_error* error) {
2618
+ static void start_bdp_ping(void* tp, grpc_error_handle error) {
2579
2619
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2580
2620
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
2581
2621
  start_bdp_ping_locked, t, nullptr),
2582
2622
  GRPC_ERROR_REF(error));
2583
2623
  }
2584
2624
 
2585
- static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2625
+ static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2586
2626
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2587
2627
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2588
2628
  gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
2589
- grpc_error_string(error));
2629
+ grpc_error_std_string(error).c_str());
2590
2630
  }
2591
2631
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2592
2632
  return;
@@ -2599,18 +2639,18 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2599
2639
  t->bdp_ping_started = true;
2600
2640
  }
2601
2641
 
2602
- static void finish_bdp_ping(void* tp, grpc_error* error) {
2642
+ static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2603
2643
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2604
2644
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2605
2645
  finish_bdp_ping_locked, t, nullptr),
2606
2646
  GRPC_ERROR_REF(error));
2607
2647
  }
2608
2648
 
2609
- static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2649
+ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2610
2650
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2611
2651
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2612
2652
  gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
2613
- grpc_error_string(error));
2653
+ grpc_error_std_string(error).c_str());
2614
2654
  }
2615
2655
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2616
2656
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
@@ -2636,7 +2676,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2636
2676
  &t->next_bdp_ping_timer_expired_locked);
2637
2677
  }
2638
2678
 
2639
- static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
2679
+ static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
2640
2680
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2641
2681
  t->combiner->Run(
2642
2682
  GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
@@ -2644,7 +2684,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
2644
2684
  GRPC_ERROR_REF(error));
2645
2685
  }
2646
2686
 
2647
- static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
2687
+ static void next_bdp_ping_timer_expired_locked(void* tp,
2688
+ grpc_error_handle error) {
2648
2689
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2649
2690
  GPR_ASSERT(t->have_next_bdp_ping_timer);
2650
2691
  t->have_next_bdp_ping_timer = false;
@@ -2720,14 +2761,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2720
2761
  }
2721
2762
  }
2722
2763
 
2723
- static void init_keepalive_ping(void* arg, grpc_error* error) {
2764
+ static void init_keepalive_ping(void* arg, grpc_error_handle error) {
2724
2765
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2725
2766
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
2726
2767
  init_keepalive_ping_locked, t, nullptr),
2727
2768
  GRPC_ERROR_REF(error));
2728
2769
  }
2729
2770
 
2730
- static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2771
+ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2731
2772
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2732
2773
  GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
2733
2774
  if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
@@ -2760,14 +2801,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2760
2801
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
2761
2802
  }
2762
2803
 
2763
- static void start_keepalive_ping(void* arg, grpc_error* error) {
2804
+ static void start_keepalive_ping(void* arg, grpc_error_handle error) {
2764
2805
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2765
2806
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
2766
2807
  start_keepalive_ping_locked, t, nullptr),
2767
2808
  GRPC_ERROR_REF(error));
2768
2809
  }
2769
2810
 
2770
- static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2811
+ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2771
2812
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2772
2813
  if (error != GRPC_ERROR_NONE) {
2773
2814
  return;
@@ -2788,14 +2829,14 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2788
2829
  t->keepalive_ping_started = true;
2789
2830
  }
2790
2831
 
2791
- static void finish_keepalive_ping(void* arg, grpc_error* error) {
2832
+ static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
2792
2833
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2793
2834
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2794
2835
  finish_keepalive_ping_locked, t, nullptr),
2795
2836
  GRPC_ERROR_REF(error));
2796
2837
  }
2797
2838
 
2798
- static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2839
+ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2799
2840
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2800
2841
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2801
2842
  if (error == GRPC_ERROR_NONE) {
@@ -2826,7 +2867,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2826
2867
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
2827
2868
  }
2828
2869
 
2829
- static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
2870
+ static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
2830
2871
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2831
2872
  t->combiner->Run(
2832
2873
  GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
@@ -2834,7 +2875,8 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
2834
2875
  GRPC_ERROR_REF(error));
2835
2876
  }
2836
2877
 
2837
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2878
+ static void keepalive_watchdog_fired_locked(void* arg,
2879
+ grpc_error_handle error) {
2838
2880
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2839
2881
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2840
2882
  if (error == GRPC_ERROR_NONE) {
@@ -2891,7 +2933,7 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
2891
2933
  // BYTE STREAM
2892
2934
  //
2893
2935
 
2894
- static void reset_byte_stream(void* arg, grpc_error* error) {
2936
+ static void reset_byte_stream(void* arg, grpc_error_handle error) {
2895
2937
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
2896
2938
  s->pending_byte_stream = false;
2897
2939
  if (error == GRPC_ERROR_NONE) {
@@ -2922,8 +2964,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream(
2922
2964
  stream->byte_stream_error = GRPC_ERROR_NONE;
2923
2965
  }
2924
2966
 
2925
- void Chttp2IncomingByteStream::OrphanLocked(void* arg,
2926
- grpc_error* /*error_ignored*/) {
2967
+ void Chttp2IncomingByteStream::OrphanLocked(
2968
+ void* arg, grpc_error_handle /*error_ignored*/) {
2927
2969
  Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
2928
2970
  grpc_chttp2_stream* s = bs->stream_;
2929
2971
  grpc_chttp2_transport* t = s->t;
@@ -2942,7 +2984,7 @@ void Chttp2IncomingByteStream::Orphan() {
2942
2984
  }
2943
2985
 
2944
2986
  void Chttp2IncomingByteStream::NextLocked(void* arg,
2945
- grpc_error* /*error_ignored*/) {
2987
+ grpc_error_handle /*error_ignored*/) {
2946
2988
  Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
2947
2989
  grpc_chttp2_transport* t = bs->transport_;
2948
2990
  grpc_chttp2_stream* s = bs->stream_;
@@ -3012,9 +3054,9 @@ void Chttp2IncomingByteStream::MaybeCreateStreamDecompressionCtx() {
3012
3054
  }
3013
3055
  }
3014
3056
 
3015
- grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3057
+ grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3016
3058
  GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
3017
- grpc_error* error;
3059
+ grpc_error_handle error;
3018
3060
  if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
3019
3061
  if (!stream_->unprocessed_incoming_frames_decompressed &&
3020
3062
  stream_->stream_decompression_method !=
@@ -3057,7 +3099,7 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3057
3099
  return GRPC_ERROR_NONE;
3058
3100
  }
3059
3101
 
3060
- void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
3102
+ void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
3061
3103
  GPR_ASSERT(error != GRPC_ERROR_NONE);
3062
3104
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, stream_->on_next,
3063
3105
  GRPC_ERROR_REF(error));
@@ -3067,10 +3109,10 @@ void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
3067
3109
  grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
3068
3110
  }
3069
3111
 
3070
- grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3071
- grpc_slice* slice_out) {
3112
+ grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3113
+ grpc_slice* slice_out) {
3072
3114
  if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
3073
- grpc_error* error =
3115
+ grpc_error_handle error =
3074
3116
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
3075
3117
  transport_->combiner->Run(&stream_->reset_byte_stream,
3076
3118
  GRPC_ERROR_REF(error));
@@ -3085,8 +3127,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3085
3127
  }
3086
3128
  }
3087
3129
 
3088
- grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
3089
- bool reset_on_error) {
3130
+ grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
3131
+ bool reset_on_error) {
3090
3132
  if (error == GRPC_ERROR_NONE) {
3091
3133
  if (remaining_bytes_ != 0) {
3092
3134
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
@@ -3100,7 +3142,7 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
3100
3142
  return error;
3101
3143
  }
3102
3144
 
3103
- void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
3145
+ void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
3104
3146
  GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
3105
3147
  }
3106
3148
 
@@ -3116,8 +3158,8 @@ static void post_benign_reclaimer(grpc_chttp2_transport* t) {
3116
3158
  GRPC_CHTTP2_REF_TRANSPORT(t, "benign_reclaimer");
3117
3159
  GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked, benign_reclaimer, t,
3118
3160
  grpc_schedule_on_exec_ctx);
3119
- grpc_resource_user_post_reclaimer(grpc_endpoint_get_resource_user(t->ep),
3120
- false, &t->benign_reclaimer_locked);
3161
+ grpc_resource_user_post_reclaimer(t->resource_user, false,
3162
+ &t->benign_reclaimer_locked);
3121
3163
  }
3122
3164
  }
3123
3165
 
@@ -3127,19 +3169,19 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
3127
3169
  GRPC_CHTTP2_REF_TRANSPORT(t, "destructive_reclaimer");
3128
3170
  GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked, destructive_reclaimer,
3129
3171
  t, grpc_schedule_on_exec_ctx);
3130
- grpc_resource_user_post_reclaimer(grpc_endpoint_get_resource_user(t->ep),
3131
- true, &t->destructive_reclaimer_locked);
3172
+ grpc_resource_user_post_reclaimer(t->resource_user, true,
3173
+ &t->destructive_reclaimer_locked);
3132
3174
  }
3133
3175
  }
3134
3176
 
3135
- static void benign_reclaimer(void* arg, grpc_error* error) {
3177
+ static void benign_reclaimer(void* arg, grpc_error_handle error) {
3136
3178
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3137
3179
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
3138
3180
  benign_reclaimer_locked, t, nullptr),
3139
3181
  GRPC_ERROR_REF(error));
3140
3182
  }
3141
3183
 
3142
- static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3184
+ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
3143
3185
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3144
3186
  if (error == GRPC_ERROR_NONE &&
3145
3187
  grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
@@ -3163,20 +3205,19 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3163
3205
  }
3164
3206
  t->benign_reclaimer_registered = false;
3165
3207
  if (error != GRPC_ERROR_CANCELLED) {
3166
- grpc_resource_user_finish_reclamation(
3167
- grpc_endpoint_get_resource_user(t->ep));
3208
+ grpc_resource_user_finish_reclamation(t->resource_user);
3168
3209
  }
3169
3210
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3170
3211
  }
3171
3212
 
3172
- static void destructive_reclaimer(void* arg, grpc_error* error) {
3213
+ static void destructive_reclaimer(void* arg, grpc_error_handle error) {
3173
3214
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3174
3215
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
3175
3216
  destructive_reclaimer_locked, t, nullptr),
3176
3217
  GRPC_ERROR_REF(error));
3177
3218
  }
3178
3219
 
3179
- static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3220
+ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
3180
3221
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3181
3222
  size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
3182
3223
  t->destructive_reclaimer_registered = false;
@@ -3201,8 +3242,7 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3201
3242
  }
3202
3243
  }
3203
3244
  if (error != GRPC_ERROR_CANCELLED) {
3204
- grpc_resource_user_finish_reclamation(
3205
- grpc_endpoint_get_resource_user(t->ep));
3245
+ grpc_resource_user_finish_reclamation(t->resource_user);
3206
3246
  }
3207
3247
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
3208
3248
  }
@@ -3294,7 +3334,7 @@ grpc_transport* grpc_create_chttp2_transport(
3294
3334
 
3295
3335
  void grpc_chttp2_transport_start_reading(
3296
3336
  grpc_transport* transport, grpc_slice_buffer* read_buffer,
3297
- grpc_closure* notify_on_receive_settings) {
3337
+ grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close) {
3298
3338
  grpc_chttp2_transport* t =
3299
3339
  reinterpret_cast<grpc_chttp2_transport*>(transport);
3300
3340
  GRPC_CHTTP2_REF_TRANSPORT(
@@ -3304,6 +3344,7 @@ void grpc_chttp2_transport_start_reading(
3304
3344
  gpr_free(read_buffer);
3305
3345
  }
3306
3346
  t->notify_on_receive_settings = notify_on_receive_settings;
3347
+ t->notify_on_close = notify_on_close;
3307
3348
  t->combiner->Run(
3308
3349
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
3309
3350
  GRPC_ERROR_NONE);