grpc 1.30.1 → 1.40.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 (1628) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1195 -18269
  3. data/etc/roots.pem +257 -573
  4. data/include/grpc/compression.h +1 -1
  5. data/include/grpc/event_engine/README.md +38 -0
  6. data/include/grpc/event_engine/endpoint_config.h +48 -0
  7. data/include/grpc/event_engine/event_engine.h +330 -0
  8. data/include/grpc/event_engine/port.h +41 -0
  9. data/include/grpc/event_engine/slice_allocator.h +66 -0
  10. data/include/grpc/grpc.h +38 -9
  11. data/include/grpc/grpc_security.h +291 -186
  12. data/include/grpc/grpc_security_constants.h +18 -0
  13. data/include/grpc/impl/codegen/README.md +22 -0
  14. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  15. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  16. data/include/grpc/impl/codegen/grpc_types.h +60 -31
  17. data/include/grpc/impl/codegen/log.h +0 -2
  18. data/include/grpc/impl/codegen/port_platform.h +75 -87
  19. data/include/grpc/impl/codegen/sync_windows.h +4 -0
  20. data/include/grpc/module.modulemap +14 -14
  21. data/include/grpc/slice_buffer.h +3 -3
  22. data/include/grpc/support/sync.h +3 -3
  23. data/include/grpc/support/time.h +7 -7
  24. data/src/core/ext/filters/client_channel/backend_metric.cc +14 -13
  25. data/src/core/ext/filters/client_channel/backup_poller.cc +6 -5
  26. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  27. data/src/core/ext/filters/client_channel/client_channel.cc +2112 -2959
  28. data/src/core/ext/filters/client_channel/client_channel.h +514 -62
  29. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -4
  30. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
  31. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  32. data/src/core/ext/filters/client_channel/config_selector.cc +58 -0
  33. data/src/core/ext/filters/client_channel/config_selector.h +146 -0
  34. data/src/core/ext/filters/client_channel/connector.h +1 -1
  35. data/src/core/ext/filters/client_channel/dynamic_filters.cc +190 -0
  36. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  37. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +26 -122
  38. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
  39. data/src/core/ext/filters/client_channel/health/health_check_client.cc +46 -35
  40. data/src/core/ext/filters/client_channel/health/health_check_client.h +34 -33
  41. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +39 -37
  42. data/src/core/ext/filters/client_channel/http_proxy.cc +42 -24
  43. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
  44. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
  45. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -7
  46. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  47. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  48. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +301 -267
  49. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
  50. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
  51. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
  52. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -40
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
  56. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  57. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +34 -37
  58. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -51
  59. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +757 -0
  60. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
  61. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +18 -24
  62. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +15 -37
  63. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +41 -34
  64. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +472 -145
  65. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +52 -24
  66. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
  67. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +787 -0
  68. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +700 -0
  69. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1372 -0
  70. data/src/core/ext/filters/client_channel/lb_policy.cc +11 -18
  71. data/src/core/ext/filters/client_channel/lb_policy.h +80 -53
  72. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  73. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +16 -10
  74. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  75. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  76. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
  77. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +71 -78
  78. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -33
  79. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  80. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +11 -9
  81. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +14 -12
  82. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +24 -20
  83. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +495 -79
  84. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +6 -1
  85. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  86. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  87. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  88. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +45 -36
  89. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +40 -45
  90. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +8 -6
  91. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +384 -0
  92. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +38 -31
  93. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +883 -71
  94. data/src/core/ext/filters/client_channel/{xds/xds_channel_args.h → resolver/xds/xds_resolver.h} +9 -7
  95. data/src/core/ext/filters/client_channel/resolver.cc +7 -5
  96. data/src/core/ext/filters/client_channel/resolver.h +7 -15
  97. data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
  98. data/src/core/ext/filters/client_channel/resolver_registry.cc +49 -49
  99. data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
  100. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +50 -303
  101. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +26 -54
  102. data/src/core/ext/filters/client_channel/retry_filter.cc +2611 -0
  103. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  104. data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
  105. data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
  106. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
  107. data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
  108. data/src/core/ext/filters/client_channel/server_address.cc +129 -7
  109. data/src/core/ext/filters/client_channel/server_address.h +75 -21
  110. data/src/core/ext/filters/client_channel/service_config.cc +27 -21
  111. data/src/core/ext/filters/client_channel/service_config.h +11 -7
  112. data/src/core/ext/filters/client_channel/service_config_call_data.h +60 -2
  113. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +143 -0
  114. data/src/core/ext/filters/client_channel/service_config_parser.cc +14 -12
  115. data/src/core/ext/filters/client_channel/service_config_parser.h +12 -6
  116. data/src/core/ext/filters/client_channel/subchannel.cc +188 -236
  117. data/src/core/ext/filters/client_channel/subchannel.h +88 -113
  118. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
  119. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
  120. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -10
  121. data/src/core/ext/filters/client_idle/client_idle_filter.cc +18 -17
  122. data/src/core/ext/filters/deadline/deadline_filter.cc +94 -86
  123. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  124. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
  125. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
  126. data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
  127. data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
  128. data/src/core/ext/filters/http/client/http_client_filter.cc +39 -29
  129. data/src/core/ext/filters/http/client_authority_filter.cc +9 -9
  130. data/src/core/ext/filters/http/http_filters_plugin.cc +8 -4
  131. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  132. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +91 -50
  133. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  134. data/src/core/ext/filters/http/server/http_server_filter.cc +30 -26
  135. data/src/core/ext/filters/max_age/max_age_filter.cc +50 -44
  136. data/src/core/ext/filters/message_size/message_size_filter.cc +72 -92
  137. data/src/core/ext/filters/message_size/message_size_filter.h +8 -1
  138. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
  139. data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
  140. data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
  141. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +90 -34
  142. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +22 -5
  143. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +23 -10
  144. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +23 -11
  145. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +38 -50
  146. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +803 -352
  147. data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
  148. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +14 -5
  149. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +22 -20
  150. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +67 -24
  151. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +8 -8
  152. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +66 -0
  153. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
  154. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +457 -447
  155. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
  156. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  157. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  158. data/src/core/ext/transport/chttp2/transport/flow_control.cc +36 -33
  159. data/src/core/ext/transport/chttp2/transport/flow_control.h +34 -26
  160. data/src/core/ext/transport/chttp2/transport/frame_data.cc +26 -25
  161. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  162. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +21 -23
  163. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  164. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -14
  165. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  166. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +19 -20
  167. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  168. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
  169. data/src/core/ext/transport/chttp2/transport/frame_settings.h +8 -7
  170. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +19 -24
  171. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  172. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
  173. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +681 -765
  174. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +195 -74
  175. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +17 -20
  176. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  177. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  178. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  179. data/src/core/ext/transport/chttp2/transport/internal.h +57 -30
  180. data/src/core/ext/transport/chttp2/transport/parsing.cc +181 -180
  181. data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
  182. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
  183. data/src/core/ext/transport/inproc/inproc_transport.cc +154 -88
  184. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
  185. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
  186. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
  187. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  188. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +10 -4
  189. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +243 -0
  190. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +865 -0
  191. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +371 -0
  192. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1452 -0
  193. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  194. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +253 -0
  195. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +461 -0
  196. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1850 -0
  197. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
  198. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +77 -0
  199. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +56 -0
  200. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +364 -0
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +428 -0
  203. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
  204. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +88 -0
  205. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +370 -0
  206. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1126 -0
  207. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
  208. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +388 -0
  209. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  210. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +78 -0
  211. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
  212. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +149 -0
  213. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
  214. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +839 -0
  215. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  216. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +767 -0
  217. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
  218. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +88 -0
  219. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +239 -0
  220. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +982 -0
  221. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +27 -0
  222. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +65 -0
  223. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
  224. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
  225. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +8 -8
  226. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +95 -0
  227. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +43 -0
  228. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +126 -0
  229. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
  230. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
  231. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +90 -0
  232. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +243 -0
  233. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  234. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +305 -0
  235. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  236. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +367 -0
  237. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
  238. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +73 -0
  239. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +138 -0
  240. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +604 -0
  241. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +161 -0
  242. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +638 -0
  243. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
  244. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
  245. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +42 -0
  246. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +115 -0
  247. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
  248. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
  249. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
  250. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
  251. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +179 -0
  252. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +662 -0
  253. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +82 -0
  254. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +294 -0
  255. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +953 -0
  256. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3862 -0
  257. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
  258. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +159 -0
  259. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +49 -0
  260. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +122 -0
  261. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
  262. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
  263. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
  264. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
  265. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +79 -0
  266. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +285 -0
  267. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -0
  268. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +117 -0
  269. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +404 -0
  270. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1671 -0
  271. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +19 -0
  272. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
  273. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +116 -0
  274. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +475 -0
  275. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +73 -0
  276. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +219 -0
  277. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +146 -0
  278. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +621 -0
  279. data/src/core/ext/upb-generated/envoy/{api/v2/rds.upb.c → service/cluster/v3/cds.upb.c} +6 -9
  280. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +56 -0
  281. data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +6 -5
  282. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +56 -0
  283. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +146 -0
  284. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +499 -0
  285. data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +6 -10
  286. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
  287. data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +6 -10
  288. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +56 -0
  289. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +54 -0
  290. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +151 -0
  291. data/src/core/ext/upb-generated/envoy/{api/v2/srds.upb.c → service/route/v3/rds.upb.c} +6 -7
  292. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +56 -0
  293. data/src/core/ext/upb-generated/envoy/{api/v2/cds.upb.c → service/route/v3/srds.upb.c} +6 -7
  294. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +56 -0
  295. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +121 -0
  296. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +438 -0
  297. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
  298. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
  299. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  300. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +128 -0
  301. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
  302. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
  303. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  304. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +84 -0
  305. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  306. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +78 -0
  307. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +65 -0
  308. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +166 -0
  309. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
  310. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +146 -0
  311. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
  312. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
  313. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  314. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +207 -0
  315. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  316. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +301 -0
  317. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  318. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +283 -0
  319. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
  320. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +9 -9
  321. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
  322. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +99 -0
  323. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
  324. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +130 -0
  325. data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +7 -6
  326. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +68 -0
  327. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  328. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
  329. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +830 -0
  330. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +251 -0
  331. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +871 -0
  332. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  333. data/src/core/ext/upb-generated/google/api/http.upb.h +52 -32
  334. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  335. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +12 -6
  336. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +106 -106
  337. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +688 -499
  338. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  339. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +12 -6
  340. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  341. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +8 -2
  342. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +5 -5
  343. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +55 -57
  344. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  345. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +12 -6
  346. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
  347. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +82 -28
  348. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  349. data/src/core/ext/upb-generated/google/rpc/status.upb.h +17 -10
  350. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +5 -5
  351. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +40 -45
  352. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +43 -43
  353. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +236 -184
  354. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
  355. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +29 -13
  356. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  357. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +19 -7
  358. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
  359. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +122 -62
  360. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  361. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +30 -12
  362. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
  363. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
  364. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -1
  365. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
  366. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +12 -6
  367. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  368. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +60 -0
  369. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +9 -9
  370. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +48 -68
  371. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
  372. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
  373. data/src/core/ext/upb-generated/validate/validate.upb.c +133 -117
  374. data/src/core/ext/upb-generated/validate/validate.upb.h +881 -645
  375. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
  376. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
  377. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
  378. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
  379. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
  380. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
  381. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
  382. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
  383. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
  384. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
  385. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
  386. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
  387. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
  388. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  389. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +46 -0
  390. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  391. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  392. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  393. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +252 -0
  394. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  395. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +424 -0
  396. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  397. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  398. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  399. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +570 -0
  400. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  401. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  402. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  403. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +136 -0
  404. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  405. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  406. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  407. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  408. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  409. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +300 -0
  410. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +145 -0
  411. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +144 -0
  412. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  413. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  414. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  415. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  416. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  417. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  418. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  419. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  420. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  421. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  422. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  423. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +287 -0
  424. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +100 -0
  425. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +43 -0
  426. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  427. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
  428. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  429. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  430. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  431. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +72 -0
  432. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  433. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
  434. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  435. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +107 -0
  436. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  437. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  438. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  439. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  440. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  441. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  442. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  443. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +205 -0
  444. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +60 -0
  445. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +201 -0
  446. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  447. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
  448. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  449. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +67 -0
  450. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  451. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
  452. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  453. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
  454. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
  455. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +115 -0
  456. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +45 -0
  457. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +964 -0
  458. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +295 -0
  459. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  460. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  461. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +61 -0
  462. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  463. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
  464. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  465. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
  466. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  467. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +123 -0
  468. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  469. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +79 -0
  470. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  471. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +571 -0
  472. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +125 -0
  473. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +44 -0
  474. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  475. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +178 -0
  476. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  477. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +97 -0
  478. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  479. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +246 -0
  480. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  481. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  482. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  483. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  484. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  485. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +142 -0
  486. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
  487. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -0
  488. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  489. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +72 -0
  490. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  491. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +80 -0
  492. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  493. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +80 -0
  494. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  495. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  496. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  497. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +163 -0
  498. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  499. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
  500. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  501. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  502. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  503. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
  504. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  505. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  506. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  507. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  508. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  509. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +76 -0
  510. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  511. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +69 -0
  512. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  513. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
  514. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  515. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  516. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  517. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  518. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  519. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  520. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  521. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  522. data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -10
  523. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  524. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  525. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  526. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  527. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  528. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  529. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  530. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  531. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  532. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  533. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +39 -0
  534. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  535. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  536. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  537. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +40 -0
  538. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  539. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  540. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  541. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  542. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  543. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +40 -0
  544. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  545. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  546. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  547. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  548. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  549. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  550. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  551. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  552. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  553. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  554. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  555. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  556. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  557. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  558. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  559. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
  560. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
  561. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +332 -0
  562. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  563. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
  564. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  565. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
  566. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  567. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
  568. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  569. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
  570. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  571. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
  572. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  573. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
  574. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  575. data/src/core/ext/xds/certificate_provider_factory.h +61 -0
  576. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  577. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  578. data/src/core/ext/xds/certificate_provider_store.cc +87 -0
  579. data/src/core/ext/xds/certificate_provider_store.h +112 -0
  580. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
  581. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
  582. data/src/core/ext/xds/xds_api.cc +4124 -0
  583. data/src/core/ext/xds/xds_api.h +709 -0
  584. data/src/core/ext/xds/xds_bootstrap.cc +496 -0
  585. data/src/core/ext/xds/xds_bootstrap.h +115 -0
  586. data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
  587. data/src/core/ext/xds/xds_certificate_provider.h +151 -0
  588. data/src/core/ext/xds/xds_channel_args.h +32 -0
  589. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +1056 -884
  590. data/src/core/ext/xds/xds_client.h +375 -0
  591. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +63 -19
  592. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +52 -23
  593. data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
  594. data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
  595. data/src/core/ext/xds/xds_http_filters.cc +115 -0
  596. data/src/core/ext/xds/xds_http_filters.h +133 -0
  597. data/src/core/ext/xds/xds_server_config_fetcher.cc +546 -0
  598. data/src/core/{ext/filters/client_channel → lib/address_utils}/parse_address.cc +129 -45
  599. data/src/core/lib/address_utils/parse_address.h +77 -0
  600. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +138 -19
  601. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +38 -7
  602. data/src/core/lib/channel/call_tracer.h +85 -0
  603. data/src/core/lib/channel/channel_args.cc +9 -8
  604. data/src/core/lib/channel/channel_args.h +0 -1
  605. data/src/core/lib/channel/channel_stack.cc +22 -9
  606. data/src/core/lib/channel/channel_stack.h +18 -10
  607. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  608. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  609. data/src/core/lib/channel/channel_trace.cc +6 -8
  610. data/src/core/lib/channel/channel_trace.h +1 -1
  611. data/src/core/lib/channel/channelz.cc +148 -99
  612. data/src/core/lib/channel/channelz.h +47 -24
  613. data/src/core/lib/channel/channelz_registry.cc +29 -12
  614. data/src/core/lib/channel/channelz_registry.h +3 -1
  615. data/src/core/lib/channel/connected_channel.cc +4 -4
  616. data/src/core/lib/channel/context.h +3 -0
  617. data/src/core/lib/channel/handshaker.cc +11 -52
  618. data/src/core/lib/channel/handshaker.h +8 -25
  619. data/src/core/lib/channel/status_util.cc +12 -2
  620. data/src/core/lib/channel/status_util.h +9 -0
  621. data/src/core/lib/compression/compression.cc +8 -4
  622. data/src/core/lib/compression/compression_args.cc +3 -2
  623. data/src/core/lib/compression/compression_internal.cc +10 -5
  624. data/src/core/lib/compression/compression_internal.h +2 -1
  625. data/src/core/lib/compression/stream_compression.h +1 -1
  626. data/src/core/lib/compression/stream_compression_gzip.h +1 -1
  627. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  628. data/src/core/lib/compression/stream_compression_identity.h +1 -1
  629. data/src/core/lib/debug/stats.h +3 -3
  630. data/src/core/lib/debug/stats_data.cc +1 -0
  631. data/src/core/lib/debug/stats_data.h +13 -13
  632. data/src/core/lib/event_engine/endpoint_config.cc +46 -0
  633. data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
  634. data/src/core/lib/event_engine/event_engine.cc +50 -0
  635. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  636. data/src/core/lib/event_engine/sockaddr.h +44 -0
  637. data/src/core/lib/gpr/alloc.cc +3 -2
  638. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  639. data/src/core/lib/gpr/log.cc +59 -17
  640. data/src/core/lib/gpr/log_linux.cc +23 -9
  641. data/src/core/lib/gpr/log_posix.cc +19 -7
  642. data/src/core/lib/gpr/log_windows.cc +18 -4
  643. data/src/core/lib/gpr/murmur_hash.cc +5 -3
  644. data/src/core/lib/gpr/spinlock.h +10 -2
  645. data/src/core/lib/gpr/string.cc +33 -31
  646. data/src/core/lib/gpr/string.h +9 -8
  647. data/src/core/lib/gpr/sync.cc +4 -4
  648. data/src/core/lib/gpr/sync_abseil.cc +3 -6
  649. data/src/core/lib/gpr/sync_posix.cc +2 -8
  650. data/src/core/lib/gpr/sync_windows.cc +2 -2
  651. data/src/core/lib/gpr/time.cc +12 -12
  652. data/src/core/lib/gpr/time_precise.cc +5 -2
  653. data/src/core/lib/gpr/time_precise.h +6 -2
  654. data/src/core/lib/gpr/tls.h +4 -0
  655. data/src/core/lib/gpr/tls_msvc.h +2 -0
  656. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  657. data/src/core/lib/gpr/useful.h +5 -4
  658. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  659. data/src/core/lib/gprpp/arena.h +3 -2
  660. data/src/core/lib/gprpp/atomic.h +3 -3
  661. data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
  662. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  663. data/src/core/lib/gprpp/examine_stack.h +46 -0
  664. data/src/core/lib/gprpp/fork.cc +2 -2
  665. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  666. data/src/core/lib/gprpp/manual_constructor.h +2 -2
  667. data/src/core/lib/gprpp/mpscq.cc +2 -2
  668. data/src/core/lib/gprpp/orphanable.h +7 -11
  669. data/src/core/lib/gprpp/ref_counted.h +105 -68
  670. data/src/core/lib/gprpp/ref_counted_ptr.h +168 -7
  671. data/src/core/lib/gprpp/stat.h +38 -0
  672. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  673. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  674. data/src/core/lib/gprpp/status_helper.cc +407 -0
  675. data/src/core/lib/gprpp/status_helper.h +183 -0
  676. data/src/core/lib/gprpp/sync.h +104 -43
  677. data/src/core/lib/gprpp/thd.h +3 -3
  678. data/src/core/lib/gprpp/thd_posix.cc +42 -37
  679. data/src/core/lib/gprpp/thd_windows.cc +3 -1
  680. data/src/core/lib/gprpp/time_util.cc +77 -0
  681. data/src/core/lib/gprpp/time_util.h +42 -0
  682. data/src/core/lib/http/httpcli.cc +25 -22
  683. data/src/core/lib/http/httpcli.h +2 -3
  684. data/src/core/lib/http/httpcli_security_connector.cc +19 -15
  685. data/src/core/lib/http/parser.cc +63 -43
  686. data/src/core/lib/http/parser.h +4 -4
  687. data/src/core/lib/iomgr/buffer_list.cc +8 -10
  688. data/src/core/lib/iomgr/buffer_list.h +5 -6
  689. data/src/core/lib/iomgr/call_combiner.cc +21 -15
  690. data/src/core/lib/iomgr/call_combiner.h +12 -14
  691. data/src/core/lib/iomgr/cfstream_handle.cc +6 -5
  692. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  693. data/src/core/lib/iomgr/closure.h +7 -6
  694. data/src/core/lib/iomgr/combiner.cc +16 -13
  695. data/src/core/lib/iomgr/combiner.h +2 -2
  696. data/src/core/lib/iomgr/endpoint.cc +6 -2
  697. data/src/core/lib/iomgr/endpoint.h +10 -6
  698. data/src/core/lib/iomgr/endpoint_cfstream.cc +46 -23
  699. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
  700. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  701. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  702. data/src/core/lib/iomgr/error.cc +185 -73
  703. data/src/core/lib/iomgr/error.h +218 -107
  704. data/src/core/lib/iomgr/error_cfstream.cc +12 -10
  705. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  706. data/src/core/lib/iomgr/error_internal.h +6 -2
  707. data/src/core/lib/iomgr/ev_apple.cc +16 -13
  708. data/src/core/lib/iomgr/ev_apple.h +1 -1
  709. data/src/core/lib/iomgr/ev_epoll1_linux.cc +47 -41
  710. data/src/core/lib/iomgr/ev_epollex_linux.cc +92 -87
  711. data/src/core/lib/iomgr/ev_poll_posix.cc +41 -35
  712. data/src/core/lib/iomgr/ev_posix.cc +12 -11
  713. data/src/core/lib/iomgr/ev_posix.h +9 -9
  714. data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
  715. data/src/core/lib/iomgr/event_engine/closure.h +33 -0
  716. data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
  717. data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
  718. data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
  719. data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
  720. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  721. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  722. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  723. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
  724. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
  725. data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
  726. data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
  727. data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
  728. data/src/core/lib/iomgr/exec_ctx.cc +19 -7
  729. data/src/core/lib/iomgr/exec_ctx.h +20 -17
  730. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  731. data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
  732. data/src/core/lib/iomgr/executor/threadpool.h +6 -6
  733. data/src/core/lib/iomgr/executor.cc +10 -9
  734. data/src/core/lib/iomgr/executor.h +3 -3
  735. data/src/core/lib/iomgr/iomgr.cc +3 -3
  736. data/src/core/lib/iomgr/iomgr.h +1 -1
  737. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  738. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  739. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  740. data/src/core/lib/iomgr/iomgr_posix.cc +3 -2
  741. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -13
  742. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  743. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  744. data/src/core/lib/iomgr/load_file.cc +4 -4
  745. data/src/core/lib/iomgr/load_file.h +2 -2
  746. data/src/core/lib/iomgr/lockfree_event.cc +20 -15
  747. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  748. data/src/core/lib/iomgr/pollset.cc +5 -5
  749. data/src/core/lib/iomgr/pollset.h +9 -9
  750. data/src/core/lib/iomgr/pollset_custom.cc +7 -7
  751. data/src/core/lib/iomgr/pollset_custom.h +3 -1
  752. data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
  753. data/src/core/lib/iomgr/pollset_uv.cc +3 -1
  754. data/src/core/lib/iomgr/pollset_uv.h +5 -1
  755. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  756. data/src/core/lib/iomgr/port.h +8 -26
  757. data/src/core/lib/iomgr/python_util.h +5 -5
  758. data/src/core/lib/iomgr/resolve_address.cc +12 -8
  759. data/src/core/lib/iomgr/resolve_address.h +12 -6
  760. data/src/core/lib/iomgr/resolve_address_custom.cc +23 -27
  761. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  762. data/src/core/lib/iomgr/resolve_address_posix.cc +4 -8
  763. data/src/core/lib/iomgr/resolve_address_windows.cc +12 -12
  764. data/src/core/lib/iomgr/resource_quota.cc +48 -42
  765. data/src/core/lib/iomgr/sockaddr.h +1 -0
  766. data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
  767. data/src/core/lib/iomgr/socket_mutator.cc +18 -4
  768. data/src/core/lib/iomgr/socket_mutator.h +26 -2
  769. data/src/core/lib/iomgr/socket_utils_common_posix.cc +120 -77
  770. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  771. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  772. data/src/core/lib/iomgr/tcp_client.cc +3 -3
  773. data/src/core/lib/iomgr/tcp_client_cfstream.cc +13 -15
  774. data/src/core/lib/iomgr/tcp_client_custom.cc +17 -20
  775. data/src/core/lib/iomgr/tcp_client_posix.cc +48 -54
  776. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  777. data/src/core/lib/iomgr/tcp_client_windows.cc +16 -14
  778. data/src/core/lib/iomgr/tcp_custom.cc +67 -48
  779. data/src/core/lib/iomgr/tcp_custom.h +14 -13
  780. data/src/core/lib/iomgr/tcp_posix.cc +118 -94
  781. data/src/core/lib/iomgr/tcp_posix.h +8 -0
  782. data/src/core/lib/iomgr/tcp_server.cc +9 -10
  783. data/src/core/lib/iomgr/tcp_server.h +19 -16
  784. data/src/core/lib/iomgr/tcp_server_custom.cc +57 -58
  785. data/src/core/lib/iomgr/tcp_server_posix.cc +62 -61
  786. data/src/core/lib/iomgr/tcp_server_utils_posix.h +16 -16
  787. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +26 -25
  788. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -17
  789. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  790. data/src/core/lib/iomgr/tcp_server_windows.cc +42 -41
  791. data/src/core/lib/iomgr/tcp_uv.cc +27 -25
  792. data/src/core/lib/iomgr/tcp_windows.cc +39 -23
  793. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  794. data/src/core/lib/iomgr/timer.h +6 -1
  795. data/src/core/lib/iomgr/timer_custom.cc +7 -6
  796. data/src/core/lib/iomgr/timer_custom.h +1 -1
  797. data/src/core/lib/iomgr/timer_generic.cc +24 -23
  798. data/src/core/lib/iomgr/timer_manager.cc +4 -4
  799. data/src/core/lib/iomgr/udp_server.cc +46 -45
  800. data/src/core/lib/iomgr/udp_server.h +6 -4
  801. data/src/core/lib/iomgr/unix_sockets_posix.cc +36 -30
  802. data/src/core/lib/iomgr/unix_sockets_posix.h +9 -2
  803. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +20 -7
  804. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  805. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
  806. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -6
  807. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  808. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  809. data/src/core/lib/iomgr/work_serializer.h +17 -1
  810. data/src/core/lib/json/json.h +13 -3
  811. data/src/core/lib/json/json_reader.cc +33 -31
  812. data/src/core/lib/json/json_util.cc +58 -0
  813. data/src/core/lib/json/json_util.h +204 -0
  814. data/src/core/lib/json/json_writer.cc +2 -1
  815. data/src/core/lib/matchers/matchers.cc +327 -0
  816. data/src/core/lib/matchers/matchers.h +161 -0
  817. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  818. data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
  819. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  820. data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
  821. data/src/core/lib/security/authorization/evaluate_args.h +91 -0
  822. data/src/core/lib/security/context/security_context.cc +4 -3
  823. data/src/core/lib/security/context/security_context.h +3 -1
  824. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
  825. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  826. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  827. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  828. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  829. data/src/core/lib/security/credentials/credentials.cc +7 -7
  830. data/src/core/lib/security/credentials/credentials.h +12 -9
  831. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +417 -0
  832. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +82 -0
  833. data/src/core/lib/security/credentials/external/aws_request_signer.cc +214 -0
  834. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  835. data/src/core/lib/security/credentials/external/external_account_credentials.cc +500 -0
  836. data/src/core/lib/security/credentials/external/external_account_credentials.h +121 -0
  837. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
  838. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  839. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
  840. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +60 -0
  841. data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
  842. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  843. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  844. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +95 -65
  845. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  846. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  847. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
  848. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -5
  849. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -7
  850. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -5
  851. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +12 -9
  852. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
  853. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  854. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +78 -92
  855. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -9
  856. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -12
  857. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  858. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +27 -6
  859. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -2
  860. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +347 -0
  861. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
  862. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +454 -0
  863. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +145 -0
  864. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +82 -150
  865. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +65 -185
  866. data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -13
  867. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
  868. data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
  869. data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
  870. data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -0
  871. data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
  872. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +14 -4
  873. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +33 -28
  874. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
  875. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +97 -0
  876. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  877. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  878. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  879. data/src/core/lib/security/security_connector/local/local_security_connector.cc +25 -12
  880. data/src/core/lib/security/security_connector/security_connector.cc +6 -3
  881. data/src/core/lib/security/security_connector/security_connector.h +14 -7
  882. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +38 -21
  883. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
  884. data/src/core/lib/security/security_connector/ssl_utils.cc +82 -33
  885. data/src/core/lib/security/security_connector/ssl_utils.h +29 -25
  886. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +380 -312
  887. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +141 -79
  888. data/src/core/lib/security/transport/client_auth_filter.cc +28 -19
  889. data/src/core/lib/security/transport/secure_endpoint.cc +13 -7
  890. data/src/core/lib/security/transport/security_handshaker.cc +81 -44
  891. data/src/core/lib/security/transport/server_auth_filter.cc +19 -12
  892. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  893. data/src/core/lib/security/transport/tsi_error.h +2 -1
  894. data/src/core/lib/security/util/json_util.cc +14 -15
  895. data/src/core/lib/security/util/json_util.h +2 -1
  896. data/src/core/lib/slice/slice.cc +57 -7
  897. data/src/core/lib/slice/slice_buffer.cc +2 -1
  898. data/src/core/lib/slice/slice_intern.cc +11 -13
  899. data/src/core/lib/slice/slice_internal.h +4 -2
  900. data/src/core/lib/surface/call.cc +164 -136
  901. data/src/core/lib/surface/call.h +15 -3
  902. data/src/core/lib/surface/call_details.cc +8 -8
  903. data/src/core/lib/surface/channel.cc +55 -63
  904. data/src/core/lib/surface/channel.h +24 -7
  905. data/src/core/lib/surface/channel_init.cc +1 -1
  906. data/src/core/lib/surface/channel_ping.cc +1 -1
  907. data/src/core/lib/surface/completion_queue.cc +96 -96
  908. data/src/core/lib/surface/completion_queue.h +18 -17
  909. data/src/core/lib/surface/completion_queue_factory.cc +1 -2
  910. data/src/core/lib/surface/init.cc +46 -32
  911. data/src/core/lib/surface/init.h +10 -1
  912. data/src/core/lib/surface/lame_client.cc +51 -58
  913. data/src/core/lib/surface/lame_client.h +5 -0
  914. data/src/core/lib/surface/server.cc +1181 -1365
  915. data/src/core/lib/surface/server.h +463 -70
  916. data/src/core/lib/surface/validate_metadata.cc +7 -7
  917. data/src/core/lib/surface/validate_metadata.h +6 -2
  918. data/src/core/lib/surface/version.cc +2 -2
  919. data/src/core/lib/transport/authority_override.cc +40 -0
  920. data/src/core/lib/transport/authority_override.h +37 -0
  921. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  922. data/src/core/lib/transport/bdp_estimator.h +2 -1
  923. data/src/core/lib/transport/byte_stream.cc +5 -5
  924. data/src/core/lib/transport/byte_stream.h +11 -11
  925. data/src/core/lib/transport/connectivity_state.cc +19 -14
  926. data/src/core/lib/transport/connectivity_state.h +26 -12
  927. data/src/core/lib/transport/error_utils.cc +33 -9
  928. data/src/core/lib/transport/error_utils.h +15 -3
  929. data/src/core/lib/transport/metadata.cc +16 -2
  930. data/src/core/lib/transport/metadata.h +2 -2
  931. data/src/core/lib/transport/metadata_batch.cc +76 -38
  932. data/src/core/lib/transport/metadata_batch.h +43 -21
  933. data/src/core/lib/transport/static_metadata.cc +296 -277
  934. data/src/core/lib/transport/static_metadata.h +80 -73
  935. data/src/core/lib/transport/status_metadata.cc +4 -3
  936. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  937. data/src/core/lib/transport/transport.cc +9 -6
  938. data/src/core/lib/transport/transport.h +26 -11
  939. data/src/core/lib/transport/transport_op_string.cc +6 -6
  940. data/src/core/lib/uri/uri_parser.cc +135 -258
  941. data/src/core/lib/uri/uri_parser.h +58 -20
  942. data/src/core/plugin_registry/grpc_plugin_registry.cc +61 -20
  943. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  944. data/src/core/tsi/alts/crypt/gsec.h +6 -0
  945. data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
  946. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +47 -42
  947. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +74 -53
  948. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  949. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  950. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -3
  951. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  952. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
  953. data/src/core/tsi/fake_transport_security.cc +17 -5
  954. data/src/core/tsi/local_transport_security.cc +5 -1
  955. data/src/core/tsi/local_transport_security.h +6 -7
  956. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  957. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
  958. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -2
  959. data/src/core/tsi/ssl_transport_security.cc +199 -73
  960. data/src/core/tsi/ssl_transport_security.h +23 -12
  961. data/src/core/tsi/transport_security.cc +10 -8
  962. data/src/core/tsi/transport_security_interface.h +6 -1
  963. data/src/ruby/bin/math_services_pb.rb +5 -5
  964. data/src/ruby/ext/grpc/extconf.rb +17 -4
  965. data/src/ruby/ext/grpc/rb_call.c +3 -2
  966. data/src/ruby/ext/grpc/rb_call.h +4 -0
  967. data/src/ruby/ext/grpc/rb_call_credentials.c +54 -10
  968. data/src/ruby/ext/grpc/rb_channel.c +10 -1
  969. data/src/ruby/ext/grpc/rb_channel_credentials.c +20 -1
  970. data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
  971. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  972. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  973. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  974. data/src/ruby/ext/grpc/rb_grpc.c +4 -0
  975. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +46 -18
  976. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +87 -45
  977. data/src/ruby/ext/grpc/rb_server.c +13 -1
  978. data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
  979. data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
  980. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
  981. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
  982. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
  983. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
  984. data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
  985. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  986. data/src/ruby/lib/grpc/version.rb +1 -1
  987. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +3 -3
  988. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +40 -0
  989. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +50 -16
  990. data/src/ruby/spec/call_spec.rb +1 -1
  991. data/src/ruby/spec/channel_credentials_spec.rb +42 -0
  992. data/src/ruby/spec/channel_spec.rb +17 -6
  993. data/src/ruby/spec/client_auth_spec.rb +27 -1
  994. data/src/ruby/spec/errors_spec.rb +1 -1
  995. data/src/ruby/spec/generic/active_call_spec.rb +21 -10
  996. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  997. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  998. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  999. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
  1000. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  1001. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  1002. data/src/ruby/spec/pb/codegen/package_option_spec.rb +27 -7
  1003. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1004. data/src/ruby/spec/server_spec.rb +22 -0
  1005. data/src/ruby/spec/user_agent_spec.rb +74 -0
  1006. data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
  1007. data/third_party/abseil-cpp/absl/base/attributes.h +122 -41
  1008. data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
  1009. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  1010. data/third_party/abseil-cpp/absl/base/config.h +97 -26
  1011. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +442 -335
  1012. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +169 -0
  1013. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  1014. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  1015. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  1016. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  1017. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  1018. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  1019. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  1020. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +31 -4
  1021. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +35 -33
  1022. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +17 -5
  1023. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +36 -40
  1024. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +33 -30
  1025. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1026. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +11 -3
  1027. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1028. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  1029. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1030. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  1031. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  1032. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  1033. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  1034. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1035. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  1036. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1037. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  1038. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  1039. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  1040. data/third_party/abseil-cpp/absl/base/macros.h +47 -109
  1041. data/third_party/abseil-cpp/absl/base/optimization.h +69 -6
  1042. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  1043. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  1044. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1045. data/third_party/abseil-cpp/absl/base/thread_annotations.h +95 -40
  1046. data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
  1047. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  1048. data/third_party/abseil-cpp/absl/container/inlined_vector.h +38 -39
  1049. data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
  1050. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
  1051. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
  1052. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
  1053. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
  1054. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  1055. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +274 -0
  1056. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +322 -0
  1057. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
  1058. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
  1059. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  1060. data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
  1061. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
  1062. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +61 -0
  1063. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
  1064. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
  1065. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  1066. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1949 -0
  1067. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  1068. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  1069. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  1070. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +199 -0
  1071. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
  1072. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +80 -0
  1073. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  1074. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +253 -0
  1075. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  1076. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
  1077. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  1078. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +147 -0
  1079. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
  1080. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  1081. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  1082. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  1083. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
  1084. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  1085. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  1086. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
  1087. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  1088. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  1089. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  1090. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  1091. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  1092. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  1093. data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
  1094. data/third_party/abseil-cpp/absl/hash/internal/city.cc +349 -0
  1095. data/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
  1096. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +70 -0
  1097. data/third_party/abseil-cpp/absl/hash/internal/hash.h +1045 -0
  1098. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  1099. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  1100. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  1101. data/third_party/abseil-cpp/absl/meta/type_traits.h +18 -10
  1102. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  1103. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  1104. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  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 +69 -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 +452 -0
  1110. data/third_party/abseil-cpp/absl/status/status.h +878 -0
  1111. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  1112. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  1113. data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
  1114. data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
  1115. data/third_party/abseil-cpp/absl/strings/charconv.cc +7 -7
  1116. data/third_party/abseil-cpp/absl/strings/cord.cc +1953 -0
  1117. data/third_party/abseil-cpp/absl/strings/cord.h +1394 -0
  1118. data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
  1119. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  1120. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1121. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  1122. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +8 -8
  1123. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  1124. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +543 -0
  1125. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  1126. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  1127. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  1128. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  1129. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
  1130. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +150 -64
  1131. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +16 -2
  1132. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +29 -21
  1133. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +21 -14
  1134. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  1135. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  1136. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1017 -87
  1137. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -3
  1138. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  1139. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +22 -6
  1140. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +27 -11
  1141. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  1142. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  1143. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1144. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1145. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  1146. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  1147. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1148. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  1149. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  1150. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  1151. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  1152. data/third_party/abseil-cpp/absl/strings/str_split.h +39 -4
  1153. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  1154. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  1155. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  1156. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  1157. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  1158. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  1159. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  1160. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  1161. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  1162. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1163. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
  1164. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  1165. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +156 -0
  1166. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  1167. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  1168. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +428 -0
  1169. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +155 -0
  1170. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2751 -0
  1171. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1082 -0
  1172. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  1173. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  1174. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  1175. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1176. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1177. data/third_party/abseil-cpp/absl/time/duration.cc +93 -61
  1178. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  1179. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +33 -27
  1180. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  1181. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  1182. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  1183. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  1184. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  1185. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  1186. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  1187. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +15 -8
  1188. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +2 -2
  1189. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  1190. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1191. data/third_party/abseil-cpp/absl/time/time.h +41 -40
  1192. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  1193. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  1194. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  1195. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  1196. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  1197. data/third_party/abseil-cpp/absl/types/variant.h +866 -0
  1198. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  1199. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  1200. data/third_party/boringssl-with-bazel/err_data.c +763 -721
  1201. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +6 -6
  1202. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  1203. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
  1204. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
  1205. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +15 -20
  1206. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1207. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  1208. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +23 -11
  1209. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
  1210. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -22
  1211. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +35 -0
  1212. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  1213. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  1214. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  1215. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  1216. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
  1217. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +40 -86
  1218. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +6 -17
  1219. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
  1220. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
  1221. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
  1222. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  1223. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1224. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
  1225. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1226. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
  1227. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
  1228. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
  1229. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1230. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  1231. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  1232. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +120 -273
  1233. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1234. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  1235. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1236. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  1237. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1238. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1239. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
  1240. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
  1241. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
  1242. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  1243. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → dsa/internal.h} +16 -11
  1244. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1245. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  1246. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  1247. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  1248. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -0
  1249. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
  1250. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  1251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  1252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  1253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
  1255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +21 -3
  1256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  1257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
  1258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +198 -37
  1259. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1260. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
  1261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
  1262. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  1263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  1264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  1265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  1266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -5
  1267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  1268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  1269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  1270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  1271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  1272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  1273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  1274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
  1275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
  1276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  1277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  1278. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  1279. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  1280. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  1281. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  1282. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +25 -0
  1283. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +122 -43
  1284. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -14
  1285. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  1286. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +56 -34
  1287. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +116 -60
  1288. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  1289. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +231 -11
  1290. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
  1291. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
  1292. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
  1293. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +584 -0
  1294. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  1295. data/third_party/boringssl-with-bazel/src/crypto/mem.c +43 -15
  1296. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  1297. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
  1298. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  1299. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +131 -53
  1300. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
  1301. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1302. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1303. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  1304. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  1305. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  1306. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1307. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  1308. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +110 -70
  1309. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +348 -423
  1310. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +217 -79
  1311. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  1312. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +7 -7
  1313. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  1314. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  1315. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
  1316. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  1317. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
  1318. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  1319. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
  1320. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
  1321. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  1322. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  1323. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +24 -39
  1324. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +27 -21
  1325. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
  1326. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +52 -89
  1327. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +67 -12
  1328. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +9 -4
  1329. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  1330. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +4 -4
  1331. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +71 -59
  1332. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
  1333. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +98 -25
  1334. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
  1335. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  1336. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  1337. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -10
  1338. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  1339. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +43 -17
  1340. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
  1341. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1342. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +21 -172
  1343. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  1344. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +25 -0
  1345. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  1346. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +68 -9
  1347. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  1348. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  1349. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +12 -0
  1350. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  1351. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
  1352. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +25 -24
  1353. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
  1354. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +32 -28
  1355. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +4 -6
  1356. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
  1357. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
  1358. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1359. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  1360. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
  1361. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +2 -2
  1362. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +127 -41
  1363. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
  1364. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +11 -14
  1365. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
  1366. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  1367. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +119 -0
  1368. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +746 -561
  1369. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
  1370. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +58 -10
  1371. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  1372. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1373. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +23 -7
  1374. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1375. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -4
  1376. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1377. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -5
  1378. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  1379. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +62 -20
  1380. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +16 -2
  1381. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  1382. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
  1383. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  1384. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +104 -51
  1385. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  1386. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
  1387. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  1388. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  1389. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  1390. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
  1391. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  1392. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  1393. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
  1394. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
  1395. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +467 -125
  1396. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +28 -12
  1397. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +43 -24
  1398. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1456 -780
  1399. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
  1400. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +595 -441
  1401. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  1402. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
  1403. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  1404. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
  1405. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +336 -25
  1406. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +97 -53
  1407. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +202 -109
  1408. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +174 -30
  1409. data/third_party/boringssl-with-bazel/src/ssl/internal.h +504 -162
  1410. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  1411. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -3
  1412. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  1413. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +55 -15
  1414. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -12
  1415. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
  1416. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  1417. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +162 -60
  1418. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  1419. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +26 -73
  1420. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  1421. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -5
  1422. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +12 -8
  1423. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +47 -28
  1424. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +1070 -566
  1425. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +66 -9
  1426. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +183 -76
  1427. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +169 -89
  1428. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +379 -140
  1429. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  1430. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  1431. data/third_party/re2/re2/bitmap256.h +117 -0
  1432. data/third_party/re2/re2/bitstate.cc +385 -0
  1433. data/third_party/re2/re2/compile.cc +1279 -0
  1434. data/third_party/re2/re2/dfa.cc +2130 -0
  1435. data/third_party/re2/re2/filtered_re2.cc +121 -0
  1436. data/third_party/re2/re2/filtered_re2.h +109 -0
  1437. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  1438. data/third_party/re2/re2/nfa.cc +713 -0
  1439. data/third_party/re2/re2/onepass.cc +623 -0
  1440. data/third_party/re2/re2/parse.cc +2464 -0
  1441. data/third_party/re2/re2/perl_groups.cc +119 -0
  1442. data/third_party/re2/re2/pod_array.h +55 -0
  1443. data/third_party/re2/re2/prefilter.cc +710 -0
  1444. data/third_party/re2/re2/prefilter.h +108 -0
  1445. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  1446. data/third_party/re2/re2/prefilter_tree.h +139 -0
  1447. data/third_party/re2/re2/prog.cc +988 -0
  1448. data/third_party/re2/re2/prog.h +436 -0
  1449. data/third_party/re2/re2/re2.cc +1362 -0
  1450. data/third_party/re2/re2/re2.h +1002 -0
  1451. data/third_party/re2/re2/regexp.cc +980 -0
  1452. data/third_party/re2/re2/regexp.h +659 -0
  1453. data/third_party/re2/re2/set.cc +154 -0
  1454. data/third_party/re2/re2/set.h +80 -0
  1455. data/third_party/re2/re2/simplify.cc +657 -0
  1456. data/third_party/re2/re2/sparse_array.h +392 -0
  1457. data/third_party/re2/re2/sparse_set.h +264 -0
  1458. data/third_party/re2/re2/stringpiece.cc +65 -0
  1459. data/third_party/re2/re2/stringpiece.h +210 -0
  1460. data/third_party/re2/re2/tostring.cc +351 -0
  1461. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  1462. data/third_party/re2/re2/unicode_casefold.h +78 -0
  1463. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  1464. data/third_party/re2/re2/unicode_groups.h +67 -0
  1465. data/third_party/re2/re2/walker-inl.h +246 -0
  1466. data/third_party/re2/util/benchmark.h +156 -0
  1467. data/third_party/re2/util/flags.h +26 -0
  1468. data/third_party/re2/util/logging.h +109 -0
  1469. data/third_party/re2/util/malloc_counter.h +19 -0
  1470. data/third_party/re2/util/mix.h +41 -0
  1471. data/third_party/re2/util/mutex.h +148 -0
  1472. data/third_party/re2/util/pcre.cc +1025 -0
  1473. data/third_party/re2/util/pcre.h +681 -0
  1474. data/third_party/re2/util/rune.cc +260 -0
  1475. data/third_party/re2/util/strutil.cc +149 -0
  1476. data/third_party/re2/util/strutil.h +21 -0
  1477. data/third_party/re2/util/test.h +50 -0
  1478. data/third_party/re2/util/utf.h +44 -0
  1479. data/third_party/re2/util/util.h +42 -0
  1480. data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
  1481. data/third_party/upb/upb/decode.c +604 -511
  1482. data/third_party/upb/upb/decode.h +20 -1
  1483. data/third_party/upb/upb/decode.int.h +163 -0
  1484. data/third_party/upb/upb/decode_fast.c +1040 -0
  1485. data/third_party/upb/upb/decode_fast.h +126 -0
  1486. data/third_party/upb/upb/def.c +2178 -0
  1487. data/third_party/upb/upb/def.h +315 -0
  1488. data/third_party/upb/upb/def.hpp +439 -0
  1489. data/third_party/upb/upb/encode.c +311 -211
  1490. data/third_party/upb/upb/encode.h +27 -2
  1491. data/third_party/upb/upb/msg.c +215 -70
  1492. data/third_party/upb/upb/msg.h +558 -14
  1493. data/third_party/upb/upb/port_def.inc +105 -63
  1494. data/third_party/upb/upb/port_undef.inc +10 -7
  1495. data/third_party/upb/upb/reflection.c +408 -0
  1496. data/third_party/upb/upb/reflection.h +168 -0
  1497. data/third_party/upb/upb/table.c +73 -269
  1498. data/third_party/upb/upb/table.int.h +25 -57
  1499. data/third_party/upb/upb/text_encode.c +421 -0
  1500. data/third_party/upb/upb/text_encode.h +38 -0
  1501. data/third_party/upb/upb/upb.c +138 -135
  1502. data/third_party/upb/upb/upb.h +119 -146
  1503. data/third_party/upb/upb/upb.hpp +88 -0
  1504. data/third_party/upb/upb/upb.int.h +29 -0
  1505. data/third_party/xxhash/xxhash.h +5325 -0
  1506. metadata +698 -181
  1507. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -938
  1508. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
  1509. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -834
  1510. data/src/core/ext/filters/client_channel/parse_address.h +0 -53
  1511. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
  1512. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  1513. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -348
  1514. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -123
  1515. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
  1516. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
  1517. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -342
  1518. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -88
  1519. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  1520. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
  1521. data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -309
  1522. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  1523. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -35
  1524. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  1525. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -418
  1526. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  1527. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -197
  1528. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  1529. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -378
  1530. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
  1531. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  1532. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
  1533. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -35
  1534. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  1535. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -55
  1536. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
  1537. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  1538. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1447
  1539. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  1540. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
  1541. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +0 -35
  1542. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -78
  1543. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  1544. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -897
  1545. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  1546. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
  1547. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  1548. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -72
  1549. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  1550. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
  1551. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  1552. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -673
  1553. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -36
  1554. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  1555. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  1556. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -518
  1557. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
  1558. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  1559. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
  1560. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
  1561. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  1562. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
  1563. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  1564. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -266
  1565. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  1566. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
  1567. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  1568. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
  1569. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
  1570. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  1571. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
  1572. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  1573. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
  1574. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  1575. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
  1576. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  1577. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -399
  1578. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
  1579. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  1580. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
  1581. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  1582. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -3032
  1583. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  1584. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
  1585. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  1586. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
  1587. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
  1588. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  1589. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
  1590. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  1591. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1132
  1592. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -33
  1593. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  1594. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  1595. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  1596. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
  1597. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  1598. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -134
  1599. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  1600. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -144
  1601. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  1602. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  1603. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  1604. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  1605. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -39
  1606. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
  1607. data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -50
  1608. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
  1609. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
  1610. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  1611. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
  1612. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  1613. data/src/core/lib/gpr/arena.h +0 -47
  1614. data/src/core/lib/gprpp/map.h +0 -53
  1615. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  1616. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
  1617. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  1618. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  1619. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  1620. data/src/core/lib/slice/slice_hash_table.h +0 -199
  1621. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  1622. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  1623. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -218
  1624. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  1625. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  1626. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  1627. data/third_party/upb/upb/generated_util.h +0 -105
  1628. data/third_party/upb/upb/port.c +0 -26
@@ -1,25 +1,25 @@
1
- /*
2
- *
3
- * Copyright 2018 gRPC authors.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- *
17
- */
1
+ //
2
+ // Copyright 2018 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
18
16
 
19
17
  #include <grpc/support/port_platform.h>
20
18
 
21
19
  #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
22
20
 
21
+ #include "absl/strings/str_format.h"
22
+
23
23
  #include <grpc/slice_buffer.h>
24
24
  #include <grpc/support/alloc.h>
25
25
  #include <grpc/support/log.h>
@@ -31,7 +31,6 @@
31
31
  #include <stdio.h>
32
32
  #include <string.h>
33
33
 
34
- #include "absl/strings/str_format.h"
35
34
  #include "src/core/ext/transport/chttp2/transport/context_list.h"
36
35
  #include "src/core/ext/transport/chttp2/transport/frame_data.h"
37
36
  #include "src/core/ext/transport/chttp2/transport/internal.h"
@@ -70,7 +69,6 @@
70
69
  #define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
71
70
  #define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2
72
71
 
73
- #define DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
74
72
  #define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
75
73
  #define DEFAULT_MAX_PINGS_BETWEEN_DATA 2
76
74
  #define DEFAULT_MAX_PING_STRIKES 2
@@ -90,8 +88,6 @@ static bool g_default_client_keepalive_permit_without_calls =
90
88
  static bool g_default_server_keepalive_permit_without_calls =
91
89
  DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS;
92
90
 
93
- static int g_default_min_sent_ping_interval_without_data_ms =
94
- DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS;
95
91
  static int g_default_min_recv_ping_interval_without_data_ms =
96
92
  DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS;
97
93
  static int g_default_max_pings_without_data = DEFAULT_MAX_PINGS_BETWEEN_DATA;
@@ -103,76 +99,98 @@ grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
103
99
  grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
104
100
  "chttp2_refcount");
105
101
 
106
- /* forward declarations of various callbacks that we'll build closures around */
107
- static void write_action_begin_locked(void* t, grpc_error* error);
108
- static void write_action(void* t, grpc_error* error);
109
- static void write_action_end(void* t, grpc_error* error);
110
- static void write_action_end_locked(void* t, grpc_error* error);
102
+ // forward declarations of various callbacks that we'll build closures around
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);
111
107
 
112
- static void read_action(void* t, grpc_error* error);
113
- 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);
114
110
  static void continue_read_action_locked(grpc_chttp2_transport* t);
115
111
 
116
- static void complete_fetch(void* gs, grpc_error* error);
117
- static void complete_fetch_locked(void* gs, grpc_error* error);
118
- /** Set a transport level setting, and push it to our peer */
112
+ static void complete_fetch(void* gs, grpc_error_handle error);
113
+ static void complete_fetch_locked(void* gs, grpc_error_handle error);
114
+ // Set a transport level setting, and push it to our peer
119
115
  static void queue_setting_update(grpc_chttp2_transport* t,
120
116
  grpc_chttp2_setting_id id, uint32_t value);
121
117
 
122
118
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
123
- grpc_error* error);
119
+ grpc_error_handle error);
124
120
 
125
- /** Start new streams that have been created if we can */
121
+ // Start new streams that have been created if we can
126
122
  static void maybe_start_some_streams(grpc_chttp2_transport* t);
127
123
 
128
124
  static void connectivity_state_set(grpc_chttp2_transport* t,
129
125
  grpc_connectivity_state state,
126
+ const absl::Status& status,
130
127
  const char* reason);
131
128
 
132
- static void benign_reclaimer(void* t, grpc_error* error);
133
- static void destructive_reclaimer(void* t, grpc_error* error);
134
- static void benign_reclaimer_locked(void* t, grpc_error* error);
135
- static void destructive_reclaimer_locked(void* t, grpc_error* error);
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);
136
133
 
137
134
  static void post_benign_reclaimer(grpc_chttp2_transport* t);
138
135
  static void post_destructive_reclaimer(grpc_chttp2_transport* t);
139
136
 
140
- static void close_transport_locked(grpc_chttp2_transport* t, grpc_error* error);
141
- static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error);
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);
151
+ static void send_ping_locked(grpc_chttp2_transport* t,
152
+ grpc_closure* on_initiate, grpc_closure* on_ack);
153
+ static void retry_initiate_ping_locked(void* tp, grpc_error_handle error);
142
154
 
143
- static void schedule_bdp_ping_locked(grpc_chttp2_transport* t);
144
- static void start_bdp_ping(void* tp, grpc_error* error);
145
- static void finish_bdp_ping(void* tp, grpc_error* error);
146
- static void start_bdp_ping_locked(void* tp, grpc_error* error);
147
- static void finish_bdp_ping_locked(void* tp, grpc_error* error);
148
- static void next_bdp_ping_timer_expired(void* tp, grpc_error* error);
149
- static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error);
155
+ // keepalive-relevant functions
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);
150
164
 
151
- static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error);
152
- static void send_ping_locked(grpc_chttp2_transport* t,
153
- grpc_closure* on_initiate,
154
- grpc_closure* on_complete);
155
- static void retry_initiate_ping_locked(void* tp, grpc_error* error);
156
-
157
- /** keepalive-relevant functions */
158
- static void init_keepalive_ping(void* arg, grpc_error* error);
159
- static void init_keepalive_ping_locked(void* arg, grpc_error* error);
160
- static void start_keepalive_ping(void* arg, grpc_error* error);
161
- static void finish_keepalive_ping(void* arg, grpc_error* error);
162
- static void start_keepalive_ping_locked(void* arg, grpc_error* error);
163
- static void finish_keepalive_ping_locked(void* arg, grpc_error* error);
164
- static void keepalive_watchdog_fired(void* arg, grpc_error* error);
165
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error);
166
-
167
- static void reset_byte_stream(void* arg, grpc_error* error);
165
+ static void reset_byte_stream(void* arg, grpc_error_handle error);
168
166
 
169
167
  // Flow control default enabled. Can be disabled by setting
170
168
  // GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
171
169
  bool g_flow_control_enabled = true;
172
170
 
173
- /*******************************************************************************
174
- * CONSTRUCTION/DESTRUCTION/REFCOUNTING
175
- */
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
+
191
+ //
192
+ // CONSTRUCTION/DESTRUCTION/REFCOUNTING
193
+ //
176
194
 
177
195
  grpc_chttp2_transport::~grpc_chttp2_transport() {
178
196
  size_t i;
@@ -188,7 +206,7 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
188
206
  grpc_slice_buffer_destroy_internal(&outbuf);
189
207
  grpc_chttp2_hpack_compressor_destroy(&hpack_compressor);
190
208
 
191
- grpc_error* error =
209
+ grpc_error_handle error =
192
210
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
193
211
  // ContextList::Execute follows semantics of a callback function and does not
194
212
  // take a ref on error
@@ -197,7 +215,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
197
215
  cl = nullptr;
198
216
 
199
217
  grpc_slice_buffer_destroy_internal(&read_buffer);
200
- grpc_chttp2_hpack_parser_destroy(&hpack_parser);
201
218
  grpc_chttp2_goaway_parser_destroy(&goaway_parser);
202
219
 
203
220
  for (i = 0; i < STREAM_LIST_COUNT; i++) {
@@ -226,12 +243,14 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
226
243
 
227
244
  GRPC_ERROR_UNREF(closed_with_error);
228
245
  gpr_free(ping_acks);
229
- gpr_free(peer_string);
246
+ if (grpc_core::test_only_destruct_callback != nullptr) {
247
+ grpc_core::test_only_destruct_callback();
248
+ }
230
249
  }
231
250
 
232
251
  static const grpc_transport_vtable* get_vtable(void);
233
252
 
234
- /* Returns whether bdp is enabled */
253
+ // Returns whether bdp is enabled
235
254
  static bool read_channel_args(grpc_chttp2_transport* t,
236
255
  const grpc_channel_args* channel_args,
237
256
  bool is_client) {
@@ -273,15 +292,6 @@ static bool read_channel_args(grpc_chttp2_transport* t,
273
292
  GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
274
293
  t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
275
294
  &channel_args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
276
- } else if (0 ==
277
- strcmp(channel_args->args[i].key,
278
- GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
279
- t->ping_policy.min_sent_ping_interval_without_data =
280
- grpc_channel_arg_get_integer(
281
- &channel_args->args[i],
282
- grpc_integer_options{
283
- g_default_min_sent_ping_interval_without_data_ms, 0,
284
- INT_MAX});
285
295
  } else if (0 ==
286
296
  strcmp(channel_args->args[i].key,
287
297
  GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
@@ -378,12 +388,12 @@ static bool read_channel_args(grpc_chttp2_transport* t,
378
388
  }
379
389
  }
380
390
  if (channelz_enabled) {
381
- // TODO(ncteisen): add an API to endpoint to query for local addr, and pass
382
- // it in here, so SocketNode knows its own address.
383
391
  t->channelz_socket =
384
392
  grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
385
- "", t->peer_string,
386
- absl::StrFormat("%s %s", get_vtable()->name, t->peer_string));
393
+ std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
394
+ absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
395
+ grpc_core::channelz::SocketNode::Security::GetFromChannelArgs(
396
+ channel_args));
387
397
  }
388
398
  return enable_bdp;
389
399
  }
@@ -412,8 +422,6 @@ static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
412
422
 
413
423
  static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
414
424
  t->ping_policy.max_pings_without_data = g_default_max_pings_without_data;
415
- t->ping_policy.min_sent_ping_interval_without_data =
416
- g_default_min_sent_ping_interval_without_data_ms;
417
425
  t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
418
426
  t->ping_policy.min_recv_ping_interval_without_data =
419
427
  g_default_min_recv_ping_interval_without_data_ms;
@@ -429,8 +437,8 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
429
437
  grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
430
438
  &t->init_keepalive_ping_locked);
431
439
  } else {
432
- /* Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
433
- inflight keeaplive timers */
440
+ // Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
441
+ // inflight keeaplive timers
434
442
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED;
435
443
  }
436
444
  }
@@ -438,7 +446,9 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
438
446
  grpc_chttp2_transport::grpc_chttp2_transport(
439
447
  const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client,
440
448
  grpc_resource_user* resource_user)
441
- : refs(1, &grpc_trace_chttp2_refcount),
449
+ : refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
450
+ ? "chttp2_refcount"
451
+ : nullptr),
442
452
  ep(ep),
443
453
  peer_string(grpc_endpoint_get_peer(ep)),
444
454
  resource_user(resource_user),
@@ -451,11 +461,11 @@ grpc_chttp2_transport::grpc_chttp2_transport(
451
461
  GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
452
462
  GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
453
463
  base.vtable = get_vtable();
454
- /* 8 is a random stab in the dark as to a good initial size: it's small enough
455
- that it shouldn't waste memory for infrequently used connections, yet
456
- large enough that the exponential growth should happen nicely when it's
457
- needed.
458
- TODO(ctiller): tune this */
464
+ // 8 is a random stab in the dark as to a good initial size: it's small enough
465
+ // that it shouldn't waste memory for infrequently used connections, yet
466
+ // large enough that the exponential growth should happen nicely when it's
467
+ // needed.
468
+ // TODO(ctiller): tune this
459
469
  grpc_chttp2_stream_map_init(&stream_map, 8);
460
470
 
461
471
  grpc_slice_buffer_init(&read_buffer);
@@ -466,7 +476,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
466
476
  }
467
477
  grpc_chttp2_hpack_compressor_init(&hpack_compressor);
468
478
  grpc_slice_buffer_init(&qbuf);
469
- /* copy in initial settings to all setting sets */
479
+ // copy in initial settings to all setting sets
470
480
  size_t i;
471
481
  int j;
472
482
  for (i = 0; i < GRPC_CHTTP2_NUM_SETTINGS; i++) {
@@ -474,10 +484,9 @@ grpc_chttp2_transport::grpc_chttp2_transport(
474
484
  settings[j][i] = grpc_chttp2_settings_parameters[i].default_value;
475
485
  }
476
486
  }
477
- grpc_chttp2_hpack_parser_init(&hpack_parser);
478
487
  grpc_chttp2_goaway_parser_init(&goaway_parser);
479
488
 
480
- /* configure http2 the way we like it */
489
+ // configure http2 the way we like it
481
490
  if (is_client) {
482
491
  queue_setting_update(this, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0);
483
492
  queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
@@ -503,7 +512,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
503
512
  enable_bdp = false;
504
513
  }
505
514
 
506
- /* No pings allowed before receiving a header or data frame. */
515
+ // No pings allowed before receiving a header or data frame.
507
516
  ping_state.pings_before_data_required = 0;
508
517
  ping_state.is_delayed_ping_timer_set = false;
509
518
  ping_state.last_ping_sent_time = GRPC_MILLIS_INF_PAST;
@@ -514,17 +523,19 @@ grpc_chttp2_transport::grpc_chttp2_transport(
514
523
  init_keepalive_pings_if_enabled(this);
515
524
 
516
525
  if (enable_bdp) {
517
- GRPC_CHTTP2_REF_TRANSPORT(this, "bdp_ping");
518
- schedule_bdp_ping_locked(this);
526
+ bdp_ping_blocked = true;
519
527
  grpc_chttp2_act_on_flowctl_action(flow_control->PeriodicUpdate(), this,
520
528
  nullptr);
521
529
  }
522
530
 
523
531
  grpc_chttp2_initiate_write(this, GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE);
524
532
  post_benign_reclaimer(this);
533
+ if (grpc_core::test_only_init_callback != nullptr) {
534
+ grpc_core::test_only_init_callback();
535
+ }
525
536
  }
526
537
 
527
- static void destroy_transport_locked(void* tp, grpc_error* /*error*/) {
538
+ static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
528
539
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
529
540
  t->destroying = 1;
530
541
  close_transport_locked(
@@ -542,7 +553,7 @@ static void destroy_transport(grpc_transport* gt) {
542
553
  }
543
554
 
544
555
  static void close_transport_locked(grpc_chttp2_transport* t,
545
- grpc_error* error) {
556
+ grpc_error_handle error) {
546
557
  end_all_the_calls(t, GRPC_ERROR_REF(error));
547
558
  cancel_pings(t, GRPC_ERROR_REF(error));
548
559
  if (t->closed_with_error == GRPC_ERROR_NONE) {
@@ -551,7 +562,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
551
562
  GRPC_STATUS_UNAVAILABLE);
552
563
  }
553
564
  if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
554
- if (t->close_transport_on_writes_finished == nullptr) {
565
+ if (t->close_transport_on_writes_finished == GRPC_ERROR_NONE) {
555
566
  t->close_transport_on_writes_finished =
556
567
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
557
568
  "Delayed close due to in-progress write");
@@ -562,7 +573,8 @@ static void close_transport_locked(grpc_chttp2_transport* t,
562
573
  }
563
574
  GPR_ASSERT(error != GRPC_ERROR_NONE);
564
575
  t->closed_with_error = GRPC_ERROR_REF(error);
565
- connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, "close_transport");
576
+ connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
577
+ "close_transport");
566
578
  if (t->ping_state.is_delayed_ping_timer_set) {
567
579
  grpc_timer_cancel(&t->ping_state.delayed_ping_timer);
568
580
  }
@@ -579,11 +591,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
579
591
  break;
580
592
  case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
581
593
  case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED:
582
- /* keepalive timers are not set in these two states */
594
+ // keepalive timers are not set in these two states
583
595
  break;
584
596
  }
585
597
 
586
- /* flush writable stream list to avoid dangling references */
598
+ // flush writable stream list to avoid dangling references
587
599
  grpc_chttp2_stream* s;
588
600
  while (grpc_chttp2_list_pop_writable_stream(t, &s)) {
589
601
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
@@ -593,9 +605,14 @@ static void close_transport_locked(grpc_chttp2_transport* t,
593
605
  }
594
606
  if (t->notify_on_receive_settings != nullptr) {
595
607
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
596
- GRPC_ERROR_CANCELLED);
608
+ GRPC_ERROR_REF(error));
597
609
  t->notify_on_receive_settings = nullptr;
598
610
  }
611
+ if (t->notify_on_close != nullptr) {
612
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
613
+ GRPC_ERROR_REF(error));
614
+ t->notify_on_close = nullptr;
615
+ }
599
616
  GRPC_ERROR_UNREF(error);
600
617
  }
601
618
 
@@ -616,9 +633,9 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
616
633
  #endif
617
634
 
618
635
  grpc_chttp2_stream::Reffer::Reffer(grpc_chttp2_stream* s) {
619
- /* We reserve one 'active stream' that's dropped when the stream is
620
- read-closed. The others are for Chttp2IncomingByteStreams that are
621
- actively reading */
636
+ // We reserve one 'active stream' that's dropped when the stream is
637
+ // read-closed. The others are for Chttp2IncomingByteStreams that are
638
+ // actively reading
622
639
  GRPC_CHTTP2_STREAM_REF(s, "chttp2");
623
640
  GRPC_CHTTP2_REF_TRANSPORT(s->t, "stream");
624
641
  }
@@ -633,7 +650,7 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
633
650
  metadata_buffer{grpc_chttp2_incoming_metadata_buffer(arena),
634
651
  grpc_chttp2_incoming_metadata_buffer(arena)} {
635
652
  if (server_data) {
636
- id = static_cast<uint32_t>((uintptr_t)server_data);
653
+ id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
637
654
  *t->accepting_stream = this;
638
655
  grpc_chttp2_stream_map_add(&t->stream_map, id, this);
639
656
  post_destructive_reclaimer(t);
@@ -677,9 +694,6 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
677
694
  grpc_slice_buffer_destroy_internal(&decompressed_data_buffer);
678
695
  }
679
696
 
680
- grpc_chttp2_list_remove_stalled_by_transport(t, this);
681
- grpc_chttp2_list_remove_stalled_by_stream(t, this);
682
-
683
697
  for (int i = 0; i < STREAM_LIST_COUNT; i++) {
684
698
  if (GPR_UNLIKELY(included[i])) {
685
699
  gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
@@ -718,7 +732,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs,
718
732
  return 0;
719
733
  }
720
734
 
721
- static void destroy_stream_locked(void* sp, grpc_error* /*error*/) {
735
+ static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
722
736
  GPR_TIMER_SCOPE("destroy_stream", 0);
723
737
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
724
738
  s->~grpc_chttp2_stream();
@@ -769,14 +783,14 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
769
783
  GPR_ASSERT(t->accepting_stream == nullptr);
770
784
  t->accepting_stream = &accepting;
771
785
  t->accept_stream_cb(t->accept_stream_cb_user_data, &t->base,
772
- (void*)static_cast<uintptr_t>(id));
786
+ reinterpret_cast<void*>(id));
773
787
  t->accepting_stream = nullptr;
774
788
  return accepting;
775
789
  }
776
790
 
777
- /*******************************************************************************
778
- * OUTPUT PROCESSING
779
- */
791
+ //
792
+ // OUTPUT PROCESSING
793
+ //
780
794
 
781
795
  static const char* write_state_name(grpc_chttp2_write_state st) {
782
796
  switch (st) {
@@ -794,20 +808,20 @@ static void set_write_state(grpc_chttp2_transport* t,
794
808
  grpc_chttp2_write_state st, const char* reason) {
795
809
  GRPC_CHTTP2_IF_TRACING(
796
810
  gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
797
- t->is_client ? "CLIENT" : "SERVER", t->peer_string,
811
+ t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
798
812
  write_state_name(t->write_state), write_state_name(st), reason));
799
813
  t->write_state = st;
800
- /* If the state is being reset back to idle, it means a write was just
801
- * finished. Make sure all the run_after_write closures are scheduled.
802
- *
803
- * This is also our chance to close the transport if the transport was marked
804
- * to be closed after all writes finish (for example, if we received a go-away
805
- * from peer while we had some pending writes) */
814
+ // If the state is being reset back to idle, it means a write was just
815
+ // finished. Make sure all the run_after_write closures are scheduled.
816
+ //
817
+ // This is also our chance to close the transport if the transport was marked
818
+ // to be closed after all writes finish (for example, if we received a go-away
819
+ // from peer while we had some pending writes)
806
820
  if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
807
821
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
808
- if (t->close_transport_on_writes_finished != nullptr) {
809
- grpc_error* err = t->close_transport_on_writes_finished;
810
- t->close_transport_on_writes_finished = nullptr;
822
+ if (t->close_transport_on_writes_finished != GRPC_ERROR_NONE) {
823
+ grpc_error_handle err = t->close_transport_on_writes_finished;
824
+ t->close_transport_on_writes_finished = GRPC_ERROR_NONE;
811
825
  close_transport_locked(t, err);
812
826
  }
813
827
  }
@@ -864,6 +878,9 @@ static void inc_initiate_write_reason(
864
878
  case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
865
879
  GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING();
866
880
  break;
881
+ case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
882
+ GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING();
883
+ break;
867
884
  case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
868
885
  GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING();
869
886
  break;
@@ -889,22 +906,22 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
889
906
  set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
890
907
  grpc_chttp2_initiate_write_reason_string(reason));
891
908
  GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
892
- /* Note that the 'write_action_begin_locked' closure is being scheduled
893
- * on the 'finally_scheduler' of t->combiner. This means that
894
- * 'write_action_begin_locked' is called only *after* all the other
895
- * closures (some of which are potentially initiating more writes on the
896
- * transport) are executed on the t->combiner.
897
- *
898
- * The reason for scheduling on finally_scheduler is to make sure we batch
899
- * as many writes as possible. 'write_action_begin_locked' is the function
900
- * that gathers all the relevant bytes (which are at various places in the
901
- * grpc_chttp2_transport structure) and append them to 'outbuf' field in
902
- * grpc_chttp2_transport thereby batching what would have been potentially
903
- * multiple write operations.
904
- *
905
- * Also, 'write_action_begin_locked' only gathers the bytes into outbuf.
906
- * It does not call the endpoint to write the bytes. That is done by the
907
- * 'write_action' (which is scheduled by 'write_action_begin_locked') */
909
+ // Note that the 'write_action_begin_locked' closure is being scheduled
910
+ // on the 'finally_scheduler' of t->combiner. This means that
911
+ // 'write_action_begin_locked' is called only *after* all the other
912
+ // closures (some of which are potentially initiating more writes on the
913
+ // transport) are executed on the t->combiner.
914
+ //
915
+ // The reason for scheduling on finally_scheduler is to make sure we batch
916
+ // as many writes as possible. 'write_action_begin_locked' is the function
917
+ // that gathers all the relevant bytes (which are at various places in the
918
+ // grpc_chttp2_transport structure) and append them to 'outbuf' field in
919
+ // grpc_chttp2_transport thereby batching what would have been potentially
920
+ // multiple write operations.
921
+ //
922
+ // Also, 'write_action_begin_locked' only gathers the bytes into outbuf.
923
+ // It does not call the endpoint to write the bytes. That is done by the
924
+ // 'write_action' (which is scheduled by 'write_action_begin_locked')
908
925
  t->combiner->FinallyRun(
909
926
  GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
910
927
  write_action_begin_locked, t, nullptr),
@@ -935,7 +952,8 @@ static const char* begin_writing_desc(bool partial) {
935
952
  }
936
953
  }
937
954
 
938
- static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
955
+ static void write_action_begin_locked(void* gt,
956
+ grpc_error_handle /*error_ignored*/) {
939
957
  GPR_TIMER_SCOPE("write_action_begin_locked", 0);
940
958
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
941
959
  GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
@@ -956,9 +974,9 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
956
974
  write_action(t, GRPC_ERROR_NONE);
957
975
  if (t->reading_paused_on_pending_induced_frames) {
958
976
  GPR_ASSERT(t->num_pending_induced_frames == 0);
959
- /* We had paused reading, because we had many induced frames (SETTINGS
960
- * ACK, PINGS ACK and RST_STREAMS) pending in t->qbuf. Now that we have
961
- * been able to flush qbuf, we can resume reading. */
977
+ // We had paused reading, because we had many induced frames (SETTINGS
978
+ // ACK, PINGS ACK and RST_STREAMS) pending in t->qbuf. Now that we have
979
+ // been able to flush qbuf, we can resume reading.
962
980
  GRPC_CHTTP2_IF_TRACING(gpr_log(
963
981
  GPR_INFO,
964
982
  "transport %p : Resuming reading after being paused due to too "
@@ -974,7 +992,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
974
992
  }
975
993
  }
976
994
 
977
- static void write_action(void* gt, grpc_error* /*error*/) {
995
+ static void write_action(void* gt, grpc_error_handle /*error*/) {
978
996
  GPR_TIMER_SCOPE("write_action", 0);
979
997
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
980
998
  void* cl = t->cl;
@@ -986,16 +1004,16 @@ static void write_action(void* gt, grpc_error* /*error*/) {
986
1004
  cl);
987
1005
  }
988
1006
 
989
- static void write_action_end(void* tp, grpc_error* error) {
1007
+ static void write_action_end(void* tp, grpc_error_handle error) {
990
1008
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
991
1009
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
992
1010
  write_action_end_locked, t, nullptr),
993
1011
  GRPC_ERROR_REF(error));
994
1012
  }
995
1013
 
996
- /* Callback from the grpc_endpoint after bytes have been written by calling
997
- * sendmsg */
998
- static void write_action_end_locked(void* tp, grpc_error* error) {
1014
+ // Callback from the grpc_endpoint after bytes have been written by calling
1015
+ // sendmsg
1016
+ static void write_action_end_locked(void* tp, grpc_error_handle error) {
999
1017
  GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
1000
1018
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1001
1019
 
@@ -1057,7 +1075,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
1057
1075
  }
1058
1076
  if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
1059
1077
  t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
1060
- t->dirtied_local_settings = 1;
1078
+ t->dirtied_local_settings = true;
1061
1079
  }
1062
1080
  }
1063
1081
 
@@ -1080,16 +1098,17 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1080
1098
  GRPC_CHTTP2_IF_TRACING(
1081
1099
  gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
1082
1100
  last_stream_id));
1083
- /* We want to log this irrespective of whether http tracing is enabled if we
1084
- * received a GOAWAY with a non NO_ERROR code. */
1101
+ // We want to log this irrespective of whether http tracing is enabled if we
1102
+ // received a GOAWAY with a non NO_ERROR code.
1085
1103
  if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1086
- gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string,
1087
- goaway_error, grpc_error_string(t->goaway_error));
1088
- }
1089
- /* When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
1090
- * data equal to "too_many_pings", it should log the occurrence at a log level
1091
- * that is enabled by default and double the configured KEEPALIVE_TIME used
1092
- * for new connections on that channel. */
1104
+ gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
1105
+ goaway_error, grpc_error_std_string(t->goaway_error).c_str());
1106
+ }
1107
+ absl::Status status = grpc_error_to_absl_status(t->goaway_error);
1108
+ // When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
1109
+ // data equal to "too_many_pings", it should log the occurrence at a log level
1110
+ // that is enabled by default and double the configured KEEPALIVE_TIME used
1111
+ // for new connections on that channel.
1093
1112
  if (GPR_UNLIKELY(t->is_client &&
1094
1113
  goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
1095
1114
  grpc_slice_str_cmp(goaway_text, "too_many_pings") == 0)) {
@@ -1104,16 +1123,18 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1104
1123
  ? GRPC_MILLIS_INF_FUTURE
1105
1124
  : static_cast<grpc_millis>(current_keepalive_time_ms *
1106
1125
  KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
1126
+ status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
1127
+ absl::Cord(std::to_string(t->keepalive_time)));
1107
1128
  }
1108
-
1109
- /* lie: use transient failure from the transport to indicate goaway has been
1110
- * received */
1111
- connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, "got_goaway");
1129
+ // lie: use transient failure from the transport to indicate goaway has been
1130
+ // received.
1131
+ connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status,
1132
+ "got_goaway");
1112
1133
  }
1113
1134
 
1114
1135
  static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1115
1136
  grpc_chttp2_stream* s;
1116
- /* cancel out streams that haven't yet started if we have received a GOAWAY */
1137
+ // cancel out streams that haven't yet started if we have received a GOAWAY
1117
1138
  if (t->goaway_error != GRPC_ERROR_NONE) {
1118
1139
  while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1119
1140
  grpc_chttp2_cancel_stream(
@@ -1124,14 +1145,14 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1124
1145
  }
1125
1146
  return;
1126
1147
  }
1127
- /* start streams where we have free grpc_chttp2_stream ids and free
1128
- * concurrency */
1148
+ // start streams where we have free grpc_chttp2_stream ids and free
1149
+ // * concurrency
1129
1150
  while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
1130
1151
  grpc_chttp2_stream_map_size(&t->stream_map) <
1131
1152
  t->settings[GRPC_PEER_SETTINGS]
1132
1153
  [GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
1133
1154
  grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1134
- /* safe since we can't (legally) be parsing this stream yet */
1155
+ // safe since we can't (legally) be parsing this stream yet
1135
1156
  GRPC_CHTTP2_IF_TRACING(gpr_log(
1136
1157
  GPR_INFO,
1137
1158
  "HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d",
@@ -1143,6 +1164,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1143
1164
 
1144
1165
  if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
1145
1166
  connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
1167
+ absl::Status(absl::StatusCode::kUnavailable,
1168
+ "Transport Stream IDs exhausted"),
1146
1169
  "no_more_stream_ids");
1147
1170
  }
1148
1171
 
@@ -1151,7 +1174,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1151
1174
  grpc_chttp2_mark_stream_writable(t, s);
1152
1175
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
1153
1176
  }
1154
- /* cancel out streams that will never be started */
1177
+ // cancel out streams that will never be started
1155
1178
  if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
1156
1179
  while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1157
1180
  grpc_chttp2_cancel_stream(
@@ -1163,12 +1186,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1163
1186
  }
1164
1187
  }
1165
1188
 
1166
- /* Flag that this closure barrier may be covering a write in a pollset, and so
1167
- we should not complete this closure until we can prove that the write got
1168
- scheduled */
1189
+ // Flag that this closure barrier may be covering a write in a pollset, and so
1190
+ // we should not complete this closure until we can prove that the write got
1191
+ // scheduled
1169
1192
  #define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
1170
- /* First bit of the reference count, stored in the high order bits (with the low
1171
- bits being used for flags defined above) */
1193
+ // First bit of the reference count, stored in the high order bits (with the low
1194
+ // bits being used for flags defined above)
1172
1195
  #define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
1173
1196
 
1174
1197
  static grpc_closure* add_closure_barrier(grpc_closure* closure) {
@@ -1185,7 +1208,8 @@ static void null_then_sched_closure(grpc_closure** closure) {
1185
1208
  void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1186
1209
  grpc_chttp2_stream* /*s*/,
1187
1210
  grpc_closure** pclosure,
1188
- grpc_error* error, const char* desc) {
1211
+ grpc_error_handle error,
1212
+ const char* desc) {
1189
1213
  grpc_closure* closure = *pclosure;
1190
1214
  *pclosure = nullptr;
1191
1215
  if (closure == nullptr) {
@@ -1194,7 +1218,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1194
1218
  }
1195
1219
  closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
1196
1220
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1197
- const char* errstr = grpc_error_string(error);
1198
1221
  gpr_log(
1199
1222
  GPR_INFO,
1200
1223
  "complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
@@ -1204,7 +1227,8 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1204
1227
  CLOSURE_BARRIER_FIRST_REF_BIT),
1205
1228
  static_cast<int>(closure->next_data.scratch %
1206
1229
  CLOSURE_BARRIER_FIRST_REF_BIT),
1207
- desc, errstr, write_state_name(t->write_state));
1230
+ desc, grpc_error_std_string(error).c_str(),
1231
+ write_state_name(t->write_state));
1208
1232
  }
1209
1233
  if (error != GRPC_ERROR_NONE) {
1210
1234
  if (closure->error_data.error == GRPC_ERROR_NONE) {
@@ -1212,7 +1236,7 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1212
1236
  "Error in HTTP transport completing operation");
1213
1237
  closure->error_data.error = grpc_error_set_str(
1214
1238
  closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
1215
- grpc_slice_from_copied_string(t->peer_string));
1239
+ grpc_slice_from_copied_string(t->peer_string.c_str()));
1216
1240
  }
1217
1241
  closure->error_data.error =
1218
1242
  grpc_error_add_child(closure->error_data.error, error);
@@ -1260,9 +1284,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1260
1284
  grpc_chttp2_stream* s) {
1261
1285
  for (;;) {
1262
1286
  if (s->fetching_send_message == nullptr) {
1263
- /* Stream was cancelled before message fetch completed */
1287
+ // Stream was cancelled before message fetch completed
1264
1288
  abort(); /* TODO(ctiller): what cleanup here? */
1265
- return; /* early out */
1266
1289
  }
1267
1290
  if (s->fetched_send_message_length == s->fetching_send_message->length()) {
1268
1291
  int64_t notify_offset = s->next_message_end_offset;
@@ -1293,7 +1316,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1293
1316
  UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
1294
1317
  ::complete_fetch, s,
1295
1318
  grpc_schedule_on_exec_ctx))) {
1296
- grpc_error* error = s->fetching_send_message->Pull(&s->fetching_slice);
1319
+ grpc_error_handle error =
1320
+ s->fetching_send_message->Pull(&s->fetching_slice);
1297
1321
  if (error != GRPC_ERROR_NONE) {
1298
1322
  s->fetching_send_message.reset();
1299
1323
  grpc_chttp2_cancel_stream(t, s, error);
@@ -1304,14 +1328,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1304
1328
  }
1305
1329
  }
1306
1330
 
1307
- static void complete_fetch(void* gs, grpc_error* error) {
1331
+ static void complete_fetch(void* gs, grpc_error_handle error) {
1308
1332
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
1309
1333
  s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
1310
1334
  ::complete_fetch_locked, s, nullptr),
1311
1335
  GRPC_ERROR_REF(error));
1312
1336
  }
1313
1337
 
1314
- static void complete_fetch_locked(void* gs, grpc_error* error) {
1338
+ static void complete_fetch_locked(void* gs, grpc_error_handle error) {
1315
1339
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
1316
1340
  grpc_chttp2_transport* t = s->t;
1317
1341
  if (error == GRPC_ERROR_NONE) {
@@ -1341,7 +1365,7 @@ static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
1341
1365
  }
1342
1366
 
1343
1367
  static void perform_stream_op_locked(void* stream_op,
1344
- grpc_error* /*error_ignored*/) {
1368
+ grpc_error_handle /*error_ignored*/) {
1345
1369
  GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
1346
1370
 
1347
1371
  grpc_transport_stream_op_batch* op =
@@ -1390,7 +1414,7 @@ static void perform_stream_op_locked(void* stream_op,
1390
1414
  GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
1391
1415
  on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1392
1416
 
1393
- /* Identify stream compression */
1417
+ // Identify stream compression
1394
1418
  if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
1395
1419
  .content_encoding == nullptr ||
1396
1420
  grpc_stream_compression_method_parse(
@@ -1409,68 +1433,48 @@ static void perform_stream_op_locked(void* stream_op,
1409
1433
  s->send_initial_metadata_finished = add_closure_barrier(on_complete);
1410
1434
  s->send_initial_metadata =
1411
1435
  op_payload->send_initial_metadata.send_initial_metadata;
1412
- const size_t metadata_size =
1413
- grpc_metadata_batch_size(s->send_initial_metadata);
1414
- const size_t metadata_peer_limit =
1415
- t->settings[GRPC_PEER_SETTINGS]
1416
- [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
1417
1436
  if (t->is_client) {
1418
1437
  s->deadline = GPR_MIN(s->deadline, s->send_initial_metadata->deadline);
1419
1438
  }
1420
- if (metadata_size > metadata_peer_limit) {
1421
- grpc_chttp2_cancel_stream(
1422
- t, s,
1423
- grpc_error_set_int(
1424
- grpc_error_set_int(
1425
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1426
- "to-be-sent initial metadata size "
1427
- "exceeds peer limit"),
1428
- GRPC_ERROR_INT_SIZE,
1429
- static_cast<intptr_t>(metadata_size)),
1430
- GRPC_ERROR_INT_LIMIT,
1431
- static_cast<intptr_t>(metadata_peer_limit)),
1432
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
1433
- } else {
1434
- if (contains_non_ok_status(s->send_initial_metadata)) {
1435
- s->seen_error = true;
1436
- }
1437
- if (!s->write_closed) {
1438
- if (t->is_client) {
1439
- if (t->closed_with_error == GRPC_ERROR_NONE) {
1440
- GPR_ASSERT(s->id == 0);
1441
- grpc_chttp2_list_add_waiting_for_concurrency(t, s);
1442
- maybe_start_some_streams(t);
1443
- } else {
1444
- grpc_chttp2_cancel_stream(
1445
- t, s,
1446
- grpc_error_set_int(
1447
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1448
- "Transport closed", &t->closed_with_error, 1),
1449
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1450
- }
1439
+ if (contains_non_ok_status(s->send_initial_metadata)) {
1440
+ s->seen_error = true;
1441
+ }
1442
+ if (!s->write_closed) {
1443
+ if (t->is_client) {
1444
+ if (t->closed_with_error == GRPC_ERROR_NONE) {
1445
+ GPR_ASSERT(s->id == 0);
1446
+ grpc_chttp2_list_add_waiting_for_concurrency(t, s);
1447
+ maybe_start_some_streams(t);
1451
1448
  } else {
1452
- GPR_ASSERT(s->id != 0);
1453
- grpc_chttp2_mark_stream_writable(t, s);
1454
- if (!(op->send_message &&
1455
- (op->payload->send_message.send_message->flags() &
1456
- GRPC_WRITE_BUFFER_HINT))) {
1457
- grpc_chttp2_initiate_write(
1458
- t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
1459
- }
1449
+ grpc_chttp2_cancel_stream(
1450
+ t, s,
1451
+ grpc_error_set_int(
1452
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1453
+ "Transport closed", &t->closed_with_error, 1),
1454
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1460
1455
  }
1461
1456
  } else {
1462
- s->send_initial_metadata = nullptr;
1463
- grpc_chttp2_complete_closure_step(
1464
- t, s, &s->send_initial_metadata_finished,
1465
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1466
- "Attempt to send initial metadata after stream was closed",
1467
- &s->write_closed_error, 1),
1468
- "send_initial_metadata_finished");
1457
+ GPR_ASSERT(s->id != 0);
1458
+ grpc_chttp2_mark_stream_writable(t, s);
1459
+ if (!(op->send_message &&
1460
+ (op->payload->send_message.send_message->flags() &
1461
+ GRPC_WRITE_BUFFER_HINT))) {
1462
+ grpc_chttp2_initiate_write(
1463
+ t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
1464
+ }
1469
1465
  }
1466
+ } else {
1467
+ s->send_initial_metadata = nullptr;
1468
+ grpc_chttp2_complete_closure_step(
1469
+ t, s, &s->send_initial_metadata_finished,
1470
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1471
+ "Attempt to send initial metadata after stream was closed",
1472
+ &s->write_closed_error, 1),
1473
+ "send_initial_metadata_finished");
1470
1474
  }
1471
1475
  if (op_payload->send_initial_metadata.peer_string != nullptr) {
1472
1476
  gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
1473
- (gpr_atm)t->peer_string);
1477
+ (gpr_atm)t->peer_string.c_str());
1474
1478
  }
1475
1479
  }
1476
1480
 
@@ -1526,47 +1530,29 @@ static void perform_stream_op_locked(void* stream_op,
1526
1530
  s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
1527
1531
  s->send_trailing_metadata =
1528
1532
  op_payload->send_trailing_metadata.send_trailing_metadata;
1533
+ s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
1529
1534
  s->write_buffering = false;
1530
- const size_t metadata_size =
1531
- grpc_metadata_batch_size(s->send_trailing_metadata);
1532
- const size_t metadata_peer_limit =
1533
- t->settings[GRPC_PEER_SETTINGS]
1534
- [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
1535
- if (metadata_size > metadata_peer_limit) {
1536
- grpc_chttp2_cancel_stream(
1537
- t, s,
1538
- grpc_error_set_int(
1539
- grpc_error_set_int(
1540
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1541
- "to-be-sent trailing metadata size "
1542
- "exceeds peer limit"),
1543
- GRPC_ERROR_INT_SIZE,
1544
- static_cast<intptr_t>(metadata_size)),
1545
- GRPC_ERROR_INT_LIMIT,
1546
- static_cast<intptr_t>(metadata_peer_limit)),
1547
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
1548
- } else {
1549
- if (contains_non_ok_status(s->send_trailing_metadata)) {
1550
- s->seen_error = true;
1551
- }
1552
- if (s->write_closed) {
1553
- s->send_trailing_metadata = nullptr;
1554
- grpc_chttp2_complete_closure_step(
1555
- t, s, &s->send_trailing_metadata_finished,
1556
- grpc_metadata_batch_is_empty(
1557
- op->payload->send_trailing_metadata.send_trailing_metadata)
1558
- ? GRPC_ERROR_NONE
1559
- : GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1560
- "Attempt to send trailing metadata after "
1561
- "stream was closed"),
1562
- "send_trailing_metadata_finished");
1563
- } else if (s->id != 0) {
1564
- /* TODO(ctiller): check if there's flow control for any outstanding
1565
- bytes before going writable */
1566
- grpc_chttp2_mark_stream_writable(t, s);
1567
- grpc_chttp2_initiate_write(
1568
- t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
1569
- }
1535
+ if (contains_non_ok_status(s->send_trailing_metadata)) {
1536
+ s->seen_error = true;
1537
+ }
1538
+ if (s->write_closed) {
1539
+ s->send_trailing_metadata = nullptr;
1540
+ s->sent_trailing_metadata_op = nullptr;
1541
+ grpc_chttp2_complete_closure_step(
1542
+ t, s, &s->send_trailing_metadata_finished,
1543
+ grpc_metadata_batch_is_empty(
1544
+ op->payload->send_trailing_metadata.send_trailing_metadata)
1545
+ ? GRPC_ERROR_NONE
1546
+ : GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1547
+ "Attempt to send trailing metadata after "
1548
+ "stream was closed"),
1549
+ "send_trailing_metadata_finished");
1550
+ } else if (s->id != 0) {
1551
+ // TODO(ctiller): check if there's flow control for any outstanding
1552
+ // bytes before going writable
1553
+ grpc_chttp2_mark_stream_writable(t, s);
1554
+ grpc_chttp2_initiate_write(
1555
+ t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
1570
1556
  }
1571
1557
  }
1572
1558
 
@@ -1581,7 +1567,7 @@ static void perform_stream_op_locked(void* stream_op,
1581
1567
  op_payload->recv_initial_metadata.trailing_metadata_available;
1582
1568
  if (op_payload->recv_initial_metadata.peer_string != nullptr) {
1583
1569
  gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
1584
- (gpr_atm)t->peer_string);
1570
+ (gpr_atm)t->peer_string.c_str());
1585
1571
  }
1586
1572
  grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
1587
1573
  }
@@ -1593,6 +1579,8 @@ static void perform_stream_op_locked(void* stream_op,
1593
1579
  GPR_ASSERT(!s->pending_byte_stream);
1594
1580
  s->recv_message_ready = op_payload->recv_message.recv_message_ready;
1595
1581
  s->recv_message = op_payload->recv_message.recv_message;
1582
+ s->call_failed_before_recv_message =
1583
+ op_payload->recv_message.call_failed_before_recv_message;
1596
1584
  if (s->id != 0) {
1597
1585
  if (!s->read_closed) {
1598
1586
  before = s->frame_storage.length +
@@ -1602,8 +1590,7 @@ static void perform_stream_op_locked(void* stream_op,
1602
1590
  grpc_chttp2_maybe_complete_recv_message(t, s);
1603
1591
  if (s->id != 0) {
1604
1592
  if (!s->read_closed && s->frame_storage.length == 0) {
1605
- size_t after = s->frame_storage.length +
1606
- s->unprocessed_incoming_frames_buffer_cached_length;
1593
+ size_t after = s->unprocessed_incoming_frames_buffer_cached_length;
1607
1594
  s->flow_control->IncomingByteStreamUpdate(GRPC_HEADER_SIZE_IN_BYTES,
1608
1595
  before - after);
1609
1596
  grpc_chttp2_act_on_flowctl_action(s->flow_control->MakeAction(), t, s);
@@ -1663,9 +1650,9 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1663
1650
  GRPC_ERROR_NONE);
1664
1651
  }
1665
1652
 
1666
- static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) {
1667
- /* callback remaining pings: they're not allowed to call into the transport,
1668
- and maybe they hold resources that need to be freed */
1653
+ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
1654
+ // callback remaining pings: they're not allowed to call into the transport,
1655
+ // and maybe they hold resources that need to be freed
1669
1656
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1670
1657
  GPR_ASSERT(error != GRPC_ERROR_NONE);
1671
1658
  for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
@@ -1691,11 +1678,9 @@ static void send_ping_locked(grpc_chttp2_transport* t,
1691
1678
  GRPC_ERROR_NONE);
1692
1679
  }
1693
1680
 
1694
- /*
1695
- * Specialized form of send_ping_locked for keepalive ping. If there is already
1696
- * a ping in progress, the keepalive ping would piggyback onto that ping,
1697
- * instead of waiting for that ping to complete and then starting a new ping.
1698
- */
1681
+ // Specialized form of send_ping_locked for keepalive ping. If there is already
1682
+ // a ping in progress, the keepalive ping would piggyback onto that ping,
1683
+ // instead of waiting for that ping to complete and then starting a new ping.
1699
1684
  static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1700
1685
  if (t->closed_with_error != GRPC_ERROR_NONE) {
1701
1686
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
@@ -1709,7 +1694,7 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1709
1694
  }
1710
1695
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1711
1696
  if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
1712
- /* There is a ping in flight. Add yourself to the inflight closure list. */
1697
+ // There is a ping in flight. Add yourself to the inflight closure list.
1713
1698
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1714
1699
  start_keepalive_ping_locked, t, nullptr),
1715
1700
  GRPC_ERROR_REF(t->closed_with_error));
@@ -1732,14 +1717,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1732
1717
  GRPC_ERROR_NONE);
1733
1718
  }
1734
1719
 
1735
- void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error* error) {
1720
+ void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
1736
1721
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1737
1722
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
1738
1723
  retry_initiate_ping_locked, t, nullptr),
1739
1724
  GRPC_ERROR_REF(error));
1740
1725
  }
1741
1726
 
1742
- static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
1727
+ static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
1743
1728
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1744
1729
  t->ping_state.is_delayed_ping_timer_set = false;
1745
1730
  if (error == GRPC_ERROR_NONE) {
@@ -1751,9 +1736,8 @@ static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
1751
1736
  void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1752
1737
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1753
1738
  if (pq->inflight_id != id) {
1754
- char* from = grpc_endpoint_get_peer(t->ep);
1755
- gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64, from, id);
1756
- gpr_free(from);
1739
+ gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
1740
+ t->peer_string.c_str(), id);
1757
1741
  return;
1758
1742
  }
1759
1743
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
@@ -1763,10 +1747,10 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1763
1747
  }
1764
1748
  }
1765
1749
 
1766
- static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) {
1767
- /* We want to log this irrespective of whether http tracing is enabled */
1768
- gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string,
1769
- grpc_error_string(error));
1750
+ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
1751
+ // We want to log this irrespective of whether http tracing is enabled
1752
+ gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1753
+ grpc_error_std_string(error).c_str());
1770
1754
  t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
1771
1755
  grpc_http2_error_code http_error;
1772
1756
  grpc_slice slice;
@@ -1786,7 +1770,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1786
1770
  grpc_error_set_int(
1787
1771
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
1788
1772
  GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
1789
- /*The transport will be closed after the write is done */
1773
+ // The transport will be closed after the write is done
1790
1774
  close_transport_locked(
1791
1775
  t, grpc_error_set_int(
1792
1776
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
@@ -1794,13 +1778,22 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1794
1778
  }
1795
1779
  }
1796
1780
 
1781
+ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
1782
+ if (!t->is_client) {
1783
+ t->ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
1784
+ t->ping_recv_state.ping_strikes = 0;
1785
+ }
1786
+ t->ping_state.pings_before_data_required =
1787
+ t->ping_policy.max_pings_without_data;
1788
+ }
1789
+
1797
1790
  static void perform_transport_op_locked(void* stream_op,
1798
- grpc_error* /*error_ignored*/) {
1791
+ grpc_error_handle /*error_ignored*/) {
1799
1792
  grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
1800
1793
  grpc_chttp2_transport* t =
1801
1794
  static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
1802
1795
 
1803
- if (op->goaway_error) {
1796
+ if (op->goaway_error != GRPC_ERROR_NONE) {
1804
1797
  send_goaway(t, op->goaway_error);
1805
1798
  }
1806
1799
 
@@ -1852,9 +1845,9 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1852
1845
  GRPC_ERROR_NONE);
1853
1846
  }
1854
1847
 
1855
- /*******************************************************************************
1856
- * INPUT PROCESSING - GENERAL
1857
- */
1848
+ //
1849
+ // INPUT PROCESSING - GENERAL
1850
+ //
1858
1851
 
1859
1852
  void grpc_chttp2_maybe_complete_recv_initial_metadata(
1860
1853
  grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
@@ -1875,7 +1868,7 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
1875
1868
 
1876
1869
  void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
1877
1870
  grpc_chttp2_stream* s) {
1878
- grpc_error* error = GRPC_ERROR_NONE;
1871
+ grpc_error_handle error = GRPC_ERROR_NONE;
1879
1872
  if (s->recv_message_ready != nullptr) {
1880
1873
  *s->recv_message = nullptr;
1881
1874
  if (s->final_metadata_requested && s->seen_error) {
@@ -1952,6 +1945,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
1952
1945
  null_then_sched_closure(&s->recv_message_ready);
1953
1946
  } else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
1954
1947
  *s->recv_message = nullptr;
1948
+ if (s->call_failed_before_recv_message != nullptr) {
1949
+ *s->call_failed_before_recv_message =
1950
+ (s->published_metadata[1] != GRPC_METADATA_PUBLISHED_AT_CLOSE);
1951
+ }
1955
1952
  null_then_sched_closure(&s->recv_message_ready);
1956
1953
  }
1957
1954
  GRPC_ERROR_UNREF(error);
@@ -1974,8 +1971,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1974
1971
  s->unprocessed_incoming_frames_buffer.length > 0;
1975
1972
  if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
1976
1973
  !s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
1977
- /* Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
1978
- * maybe decompress the next 5 bytes in the stream. */
1974
+ // Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
1975
+ // maybe decompress the next 5 bytes in the stream.
1979
1976
  if (s->stream_decompression_method ==
1980
1977
  GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
1981
1978
  grpc_slice_buffer_move_first(
@@ -2025,7 +2022,7 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
2025
2022
  }
2026
2023
 
2027
2024
  static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2028
- grpc_error* error) {
2025
+ grpc_error_handle error) {
2029
2026
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
2030
2027
  grpc_chttp2_stream_map_delete(&t->stream_map, id));
2031
2028
  GPR_DEBUG_ASSERT(s);
@@ -2059,6 +2056,8 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2059
2056
  if (grpc_chttp2_list_remove_writable_stream(t, s)) {
2060
2057
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream");
2061
2058
  }
2059
+ grpc_chttp2_list_remove_stalled_by_stream(t, s);
2060
+ grpc_chttp2_list_remove_stalled_by_transport(t, s);
2062
2061
 
2063
2062
  GRPC_ERROR_UNREF(error);
2064
2063
 
@@ -2066,7 +2065,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2066
2065
  }
2067
2066
 
2068
2067
  void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2069
- grpc_error* due_to_error) {
2068
+ grpc_error_handle due_to_error) {
2070
2069
  if (!t->is_client && !s->sent_trailing_metadata &&
2071
2070
  grpc_error_has_clear_grpc_status(due_to_error)) {
2072
2071
  close_from_api(t, s, due_to_error);
@@ -2090,19 +2089,19 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2090
2089
  }
2091
2090
 
2092
2091
  void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2093
- grpc_error* error) {
2092
+ grpc_error_handle error) {
2094
2093
  grpc_status_code status;
2095
2094
  grpc_slice slice;
2096
2095
  grpc_error_get_status(error, s->deadline, &status, &slice, nullptr, nullptr);
2097
2096
  if (status != GRPC_STATUS_OK) {
2098
2097
  s->seen_error = true;
2099
2098
  }
2100
- /* stream_global->recv_trailing_metadata_finished gives us a
2101
- last chance replacement: we've received trailing metadata,
2102
- but something more important has become available to signal
2103
- to the upper layers - drop what we've got, and then publish
2104
- what we want - which is safe because we haven't told anyone
2105
- about the metadata yet */
2099
+ // stream_global->recv_trailing_metadata_finished gives us a
2100
+ // last chance replacement: we've received trailing metadata,
2101
+ // but something more important has become available to signal
2102
+ // to the upper layers - drop what we've got, and then publish
2103
+ // what we want - which is safe because we haven't told anyone
2104
+ // about the metadata yet
2106
2105
  if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
2107
2106
  s->recv_trailing_metadata_finished != nullptr) {
2108
2107
  char status_string[GPR_LTOA_MIN_BUFSIZE];
@@ -2127,7 +2126,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2127
2126
  GRPC_ERROR_UNREF(error);
2128
2127
  }
2129
2128
 
2130
- static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
2129
+ static void add_error(grpc_error_handle error, grpc_error_handle* refs,
2130
+ size_t* nrefs) {
2131
2131
  if (error == GRPC_ERROR_NONE) return;
2132
2132
  for (size_t i = 0; i < *nrefs; i++) {
2133
2133
  if (error == refs[i]) {
@@ -2138,16 +2138,17 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
2138
2138
  ++*nrefs;
2139
2139
  }
2140
2140
 
2141
- static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
2142
- const char* master_error_msg) {
2143
- grpc_error* refs[3];
2141
+ static grpc_error_handle removal_error(grpc_error_handle extra_error,
2142
+ grpc_chttp2_stream* s,
2143
+ const char* main_error_msg) {
2144
+ grpc_error_handle refs[3];
2144
2145
  size_t nrefs = 0;
2145
2146
  add_error(s->read_closed_error, refs, &nrefs);
2146
2147
  add_error(s->write_closed_error, refs, &nrefs);
2147
2148
  add_error(extra_error, refs, &nrefs);
2148
- grpc_error* error = GRPC_ERROR_NONE;
2149
+ grpc_error_handle error = GRPC_ERROR_NONE;
2149
2150
  if (nrefs > 0) {
2150
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(master_error_msg,
2151
+ error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
2151
2152
  refs, nrefs);
2152
2153
  }
2153
2154
  GRPC_ERROR_UNREF(extra_error);
@@ -2155,7 +2156,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
2155
2156
  }
2156
2157
 
2157
2158
  static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2158
- grpc_chttp2_write_cb** list, grpc_error* error) {
2159
+ grpc_chttp2_write_cb** list,
2160
+ grpc_error_handle error) {
2159
2161
  while (*list) {
2160
2162
  grpc_chttp2_write_cb* cb = *list;
2161
2163
  *list = cb->next;
@@ -2168,7 +2170,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2168
2170
  }
2169
2171
 
2170
2172
  void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2171
- grpc_chttp2_stream* s, grpc_error* error) {
2173
+ grpc_chttp2_stream* s,
2174
+ grpc_error_handle error) {
2172
2175
  error =
2173
2176
  removal_error(error, s, "Pending writes failed due to stream closure");
2174
2177
  s->send_initial_metadata = nullptr;
@@ -2177,6 +2180,7 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2177
2180
  "send_initial_metadata_finished");
2178
2181
 
2179
2182
  s->send_trailing_metadata = nullptr;
2183
+ s->sent_trailing_metadata_op = nullptr;
2180
2184
  grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
2181
2185
  GRPC_ERROR_REF(error),
2182
2186
  "send_trailing_metadata_finished");
@@ -2191,11 +2195,14 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2191
2195
 
2192
2196
  void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2193
2197
  grpc_chttp2_stream* s, int close_reads,
2194
- int close_writes, grpc_error* error) {
2198
+ int close_writes, grpc_error_handle error) {
2195
2199
  if (s->read_closed && s->write_closed) {
2196
- /* already closed */
2200
+ // already closed, but we should still fake the status if needed.
2201
+ grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2202
+ if (overall_error != GRPC_ERROR_NONE) {
2203
+ grpc_chttp2_fake_status(t, s, overall_error);
2204
+ }
2197
2205
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
2198
- GRPC_ERROR_UNREF(error);
2199
2206
  return;
2200
2207
  }
2201
2208
  bool closed_read = false;
@@ -2212,12 +2219,12 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2212
2219
  }
2213
2220
  if (s->read_closed && s->write_closed) {
2214
2221
  became_closed = true;
2215
- grpc_error* overall_error =
2222
+ grpc_error_handle overall_error =
2216
2223
  removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
2217
2224
  if (s->id != 0) {
2218
2225
  remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
2219
2226
  } else {
2220
- /* Purge streams waiting on concurrency still waiting for id assignment */
2227
+ // Purge streams waiting on concurrency still waiting for id assignment
2221
2228
  grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
2222
2229
  }
2223
2230
  if (overall_error != GRPC_ERROR_NONE) {
@@ -2241,7 +2248,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2241
2248
  }
2242
2249
 
2243
2250
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2244
- grpc_error* error) {
2251
+ grpc_error_handle error) {
2245
2252
  grpc_slice hdr;
2246
2253
  grpc_slice status_hdr;
2247
2254
  grpc_slice http_status_hdr;
@@ -2256,12 +2263,12 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2256
2263
 
2257
2264
  GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
2258
2265
 
2259
- /* Hand roll a header block.
2260
- This is unnecessarily ugly - at some point we should find a more
2261
- elegant solution.
2262
- It's complicated by the fact that our send machinery would be dead by
2263
- the time we got around to sending this, so instead we ignore HPACK
2264
- compression and just write the uncompressed bytes onto the wire. */
2266
+ // Hand roll a header block.
2267
+ // This is unnecessarily ugly - at some point we should find a more
2268
+ // elegant solution.
2269
+ // It's complicated by the fact that our send machinery would be dead by
2270
+ // the time we got around to sending this, so instead we ignore HPACK
2271
+ // compression and just write the uncompressed bytes onto the wire.
2265
2272
  if (!s->sent_initial_metadata) {
2266
2273
  http_status_hdr = GRPC_SLICE_MALLOC(13);
2267
2274
  p = GRPC_SLICE_START_PTR(http_status_hdr);
@@ -2390,6 +2397,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2390
2397
  grpc_slice_buffer_add(&t->qbuf, status_hdr);
2391
2398
  grpc_slice_buffer_add(&t->qbuf, message_pfx);
2392
2399
  grpc_slice_buffer_add(&t->qbuf, grpc_slice_ref_internal(slice));
2400
+ grpc_chttp2_reset_ping_clock(t);
2393
2401
  grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
2394
2402
  &s->stats.outgoing);
2395
2403
 
@@ -2398,7 +2406,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2398
2406
  }
2399
2407
 
2400
2408
  struct cancel_stream_cb_args {
2401
- grpc_error* error;
2409
+ grpc_error_handle error;
2402
2410
  grpc_chttp2_transport* t;
2403
2411
  };
2404
2412
 
@@ -2408,7 +2416,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
2408
2416
  grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
2409
2417
  }
2410
2418
 
2411
- static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
2419
+ static void end_all_the_calls(grpc_chttp2_transport* t,
2420
+ grpc_error_handle error) {
2412
2421
  intptr_t http2_error;
2413
2422
  // If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
2414
2423
  if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
@@ -2421,9 +2430,9 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
2421
2430
  GRPC_ERROR_UNREF(error);
2422
2431
  }
2423
2432
 
2424
- /*******************************************************************************
2425
- * INPUT PROCESSING - PARSING
2426
- */
2433
+ //
2434
+ // INPUT PROCESSING - PARSING
2435
+ //
2427
2436
 
2428
2437
  template <class F>
2429
2438
  static void WithUrgency(grpc_chttp2_transport* t,
@@ -2434,7 +2443,7 @@ static void WithUrgency(grpc_chttp2_transport* t,
2434
2443
  break;
2435
2444
  case grpc_core::chttp2::FlowControlAction::Urgency::UPDATE_IMMEDIATELY:
2436
2445
  grpc_chttp2_initiate_write(t, reason);
2437
- // fallthrough
2446
+ ABSL_FALLTHROUGH_INTENDED;
2438
2447
  case grpc_core::chttp2::FlowControlAction::Urgency::QUEUE_UPDATE:
2439
2448
  action();
2440
2449
  break;
@@ -2462,15 +2471,15 @@ void grpc_chttp2_act_on_flowctl_action(
2462
2471
  });
2463
2472
  }
2464
2473
 
2465
- static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
2474
+ static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
2466
2475
  grpc_http_parser parser;
2467
2476
  size_t i = 0;
2468
- grpc_error* error = GRPC_ERROR_NONE;
2477
+ grpc_error_handle error = GRPC_ERROR_NONE;
2469
2478
  grpc_http_response response;
2470
2479
 
2471
2480
  grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
2472
2481
 
2473
- grpc_error* parse_error = GRPC_ERROR_NONE;
2482
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
2474
2483
  for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
2475
2484
  parse_error =
2476
2485
  grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
@@ -2491,40 +2500,35 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
2491
2500
  return error;
2492
2501
  }
2493
2502
 
2494
- static void read_action(void* tp, grpc_error* error) {
2503
+ static void read_action(void* tp, grpc_error_handle error) {
2495
2504
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2496
2505
  t->combiner->Run(
2497
2506
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
2498
2507
  GRPC_ERROR_REF(error));
2499
2508
  }
2500
2509
 
2501
- static void read_action_locked(void* tp, grpc_error* error) {
2510
+ static void read_action_locked(void* tp, grpc_error_handle error) {
2502
2511
  GPR_TIMER_SCOPE("reading_action_locked", 0);
2503
2512
 
2504
2513
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2505
2514
 
2506
2515
  GRPC_ERROR_REF(error);
2507
2516
 
2508
- grpc_error* err = error;
2517
+ grpc_error_handle err = error;
2509
2518
  if (err != GRPC_ERROR_NONE) {
2510
2519
  err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2511
2520
  "Endpoint read failed", &err, 1),
2512
2521
  GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
2513
2522
  t->write_state);
2514
2523
  }
2515
- GPR_SWAP(grpc_error*, err, error);
2524
+ GPR_SWAP(grpc_error_handle, err, error);
2516
2525
  GRPC_ERROR_UNREF(err);
2517
2526
  if (t->closed_with_error == GRPC_ERROR_NONE) {
2518
2527
  GPR_TIMER_SCOPE("reading_action.parse", 0);
2519
2528
  size_t i = 0;
2520
- grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2521
- GRPC_ERROR_NONE};
2529
+ grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2530
+ GRPC_ERROR_NONE};
2522
2531
  for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
2523
- grpc_core::BdpEstimator* bdp_est = t->flow_control->bdp_estimator();
2524
- if (bdp_est) {
2525
- bdp_est->AddIncomingBytes(
2526
- static_cast<int64_t> GRPC_SLICE_LENGTH(t->read_buffer.slices[i]));
2527
- }
2528
2532
  errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
2529
2533
  }
2530
2534
  if (errors[1] != GRPC_ERROR_NONE) {
@@ -2558,8 +2562,8 @@ static void read_action_locked(void* tp, grpc_error* error) {
2558
2562
  "Transport closed", &t->closed_with_error, 1);
2559
2563
  }
2560
2564
  if (error != GRPC_ERROR_NONE) {
2561
- /* If a goaway frame was received, this might be the reason why the read
2562
- * failed. Add this info to the error */
2565
+ // If a goaway frame was received, this might be the reason why the read
2566
+ // failed. Add this info to the error
2563
2567
  if (t->goaway_error != GRPC_ERROR_NONE) {
2564
2568
  error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
2565
2569
  }
@@ -2568,7 +2572,7 @@ static void read_action_locked(void* tp, grpc_error* error) {
2568
2572
  t->endpoint_reading = 0;
2569
2573
  } else if (t->closed_with_error == GRPC_ERROR_NONE) {
2570
2574
  keep_reading = true;
2571
- /* Since we have read a byte, reset the keepalive timer */
2575
+ // Since we have read a byte, reset the keepalive timer
2572
2576
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2573
2577
  grpc_timer_cancel(&t->keepalive_ping_timer);
2574
2578
  }
@@ -2603,7 +2607,7 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
2603
2607
 
2604
2608
  // t is reffed prior to calling the first time, and once the callback chain
2605
2609
  // that kicks off finishes, it's unreffed
2606
- static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2610
+ void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2607
2611
  t->flow_control->bdp_estimator()->SchedulePing();
2608
2612
  send_ping_locked(
2609
2613
  t,
@@ -2611,25 +2615,26 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2611
2615
  grpc_schedule_on_exec_ctx),
2612
2616
  GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
2613
2617
  grpc_schedule_on_exec_ctx));
2618
+ grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2614
2619
  }
2615
2620
 
2616
- static void start_bdp_ping(void* tp, grpc_error* error) {
2621
+ static void start_bdp_ping(void* tp, grpc_error_handle error) {
2617
2622
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2618
2623
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
2619
2624
  start_bdp_ping_locked, t, nullptr),
2620
2625
  GRPC_ERROR_REF(error));
2621
2626
  }
2622
2627
 
2623
- static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2628
+ static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2624
2629
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2625
2630
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2626
- gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string,
2627
- grpc_error_string(error));
2631
+ gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
2632
+ grpc_error_std_string(error).c_str());
2628
2633
  }
2629
2634
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2630
2635
  return;
2631
2636
  }
2632
- /* Reset the keepalive ping timer */
2637
+ // Reset the keepalive ping timer
2633
2638
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2634
2639
  grpc_timer_cancel(&t->keepalive_ping_timer);
2635
2640
  }
@@ -2637,26 +2642,26 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2637
2642
  t->bdp_ping_started = true;
2638
2643
  }
2639
2644
 
2640
- static void finish_bdp_ping(void* tp, grpc_error* error) {
2645
+ static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2641
2646
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2642
2647
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2643
2648
  finish_bdp_ping_locked, t, nullptr),
2644
2649
  GRPC_ERROR_REF(error));
2645
2650
  }
2646
2651
 
2647
- static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2652
+ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2648
2653
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2649
2654
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2650
- gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string,
2651
- grpc_error_string(error));
2655
+ gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
2656
+ grpc_error_std_string(error).c_str());
2652
2657
  }
2653
2658
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2654
2659
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2655
2660
  return;
2656
2661
  }
2657
2662
  if (!t->bdp_ping_started) {
2658
- /* start_bdp_ping_locked has not been run yet. Schedule
2659
- * finish_bdp_ping_locked to be run later. */
2663
+ // start_bdp_ping_locked has not been run yet. Schedule
2664
+ // finish_bdp_ping_locked to be run later.
2660
2665
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2661
2666
  finish_bdp_ping_locked, t, nullptr),
2662
2667
  GRPC_ERROR_REF(error));
@@ -2674,7 +2679,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2674
2679
  &t->next_bdp_ping_timer_expired_locked);
2675
2680
  }
2676
2681
 
2677
- static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
2682
+ static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
2678
2683
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2679
2684
  t->combiner->Run(
2680
2685
  GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
@@ -2682,7 +2687,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
2682
2687
  GRPC_ERROR_REF(error));
2683
2688
  }
2684
2689
 
2685
- static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
2690
+ static void next_bdp_ping_timer_expired_locked(void* tp,
2691
+ grpc_error_handle error) {
2686
2692
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2687
2693
  GPR_ASSERT(t->have_next_bdp_ping_timer);
2688
2694
  t->have_next_bdp_ping_timer = false;
@@ -2690,7 +2696,13 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
2690
2696
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2691
2697
  return;
2692
2698
  }
2693
- schedule_bdp_ping_locked(t);
2699
+ if (t->flow_control->bdp_estimator()->accumulator() == 0) {
2700
+ // Block the bdp ping till we receive more data.
2701
+ t->bdp_ping_blocked = true;
2702
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2703
+ } else {
2704
+ schedule_bdp_ping_locked(t);
2705
+ }
2694
2706
  }
2695
2707
 
2696
2708
  void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
@@ -2739,14 +2751,6 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2739
2751
  GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
2740
2752
  g_default_max_pings_without_data = grpc_channel_arg_get_integer(
2741
2753
  &args->args[i], {g_default_max_pings_without_data, 0, INT_MAX});
2742
- } else if (0 ==
2743
- strcmp(
2744
- args->args[i].key,
2745
- GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
2746
- g_default_min_sent_ping_interval_without_data_ms =
2747
- grpc_channel_arg_get_integer(
2748
- &args->args[i],
2749
- {g_default_min_sent_ping_interval_without_data_ms, 0, INT_MAX});
2750
2754
  } else if (0 ==
2751
2755
  strcmp(
2752
2756
  args->args[i].key,
@@ -2760,14 +2764,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2760
2764
  }
2761
2765
  }
2762
2766
 
2763
- static void init_keepalive_ping(void* arg, grpc_error* error) {
2767
+ static void init_keepalive_ping(void* arg, grpc_error_handle error) {
2764
2768
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2765
2769
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
2766
2770
  init_keepalive_ping_locked, t, nullptr),
2767
2771
  GRPC_ERROR_REF(error));
2768
2772
  }
2769
2773
 
2770
- static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2774
+ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2771
2775
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2772
2776
  GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
2773
2777
  if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
@@ -2789,7 +2793,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2789
2793
  &t->init_keepalive_ping_locked);
2790
2794
  }
2791
2795
  } else if (error == GRPC_ERROR_CANCELLED) {
2792
- /* The keepalive ping timer may be cancelled by bdp */
2796
+ // The keepalive ping timer may be cancelled by bdp
2793
2797
  GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
2794
2798
  GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
2795
2799
  grpc_schedule_on_exec_ctx);
@@ -2800,14 +2804,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2800
2804
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
2801
2805
  }
2802
2806
 
2803
- static void start_keepalive_ping(void* arg, grpc_error* error) {
2807
+ static void start_keepalive_ping(void* arg, grpc_error_handle error) {
2804
2808
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2805
2809
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
2806
2810
  start_keepalive_ping_locked, t, nullptr),
2807
2811
  GRPC_ERROR_REF(error));
2808
2812
  }
2809
2813
 
2810
- static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2814
+ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2811
2815
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2812
2816
  if (error != GRPC_ERROR_NONE) {
2813
2817
  return;
@@ -2817,7 +2821,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2817
2821
  }
2818
2822
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2819
2823
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2820
- gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string);
2824
+ gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string.c_str());
2821
2825
  }
2822
2826
  GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
2823
2827
  GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
@@ -2828,24 +2832,24 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2828
2832
  t->keepalive_ping_started = true;
2829
2833
  }
2830
2834
 
2831
- static void finish_keepalive_ping(void* arg, grpc_error* error) {
2835
+ static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
2832
2836
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2833
2837
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2834
2838
  finish_keepalive_ping_locked, t, nullptr),
2835
2839
  GRPC_ERROR_REF(error));
2836
2840
  }
2837
2841
 
2838
- static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2842
+ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2839
2843
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2840
2844
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2841
2845
  if (error == GRPC_ERROR_NONE) {
2842
2846
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2843
2847
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2844
- gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string);
2848
+ gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
2845
2849
  }
2846
2850
  if (!t->keepalive_ping_started) {
2847
- /* start_keepalive_ping_locked has not run yet. Reschedule
2848
- * finish_keepalive_ping_locked for it to be run later. */
2851
+ // start_keepalive_ping_locked has not run yet. Reschedule
2852
+ // finish_keepalive_ping_locked for it to be run later.
2849
2853
  t->combiner->Run(
2850
2854
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2851
2855
  finish_keepalive_ping_locked, t, nullptr),
@@ -2866,7 +2870,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2866
2870
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
2867
2871
  }
2868
2872
 
2869
- static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
2873
+ static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
2870
2874
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2871
2875
  t->combiner->Run(
2872
2876
  GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
@@ -2874,12 +2878,13 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
2874
2878
  GRPC_ERROR_REF(error));
2875
2879
  }
2876
2880
 
2877
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2881
+ static void keepalive_watchdog_fired_locked(void* arg,
2882
+ grpc_error_handle error) {
2878
2883
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2879
2884
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2880
2885
  if (error == GRPC_ERROR_NONE) {
2881
- gpr_log(GPR_ERROR, "%s: Keepalive watchdog fired. Closing transport.",
2882
- t->peer_string);
2886
+ gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2887
+ t->peer_string.c_str());
2883
2888
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2884
2889
  close_transport_locked(
2885
2890
  t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
@@ -2888,8 +2893,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2888
2893
  GRPC_STATUS_UNAVAILABLE));
2889
2894
  }
2890
2895
  } else {
2891
- /* The watchdog timer should have been cancelled by
2892
- * finish_keepalive_ping_locked. */
2896
+ // The watchdog timer should have been cancelled by
2897
+ // finish_keepalive_ping_locked.
2893
2898
  if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
2894
2899
  gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
2895
2900
  t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
@@ -2898,21 +2903,22 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2898
2903
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
2899
2904
  }
2900
2905
 
2901
- /*******************************************************************************
2902
- * CALLBACK LOOP
2903
- */
2906
+ //
2907
+ // CALLBACK LOOP
2908
+ //
2904
2909
 
2905
2910
  static void connectivity_state_set(grpc_chttp2_transport* t,
2906
2911
  grpc_connectivity_state state,
2912
+ const absl::Status& status,
2907
2913
  const char* reason) {
2908
2914
  GRPC_CHTTP2_IF_TRACING(
2909
2915
  gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
2910
- t->state_tracker.SetState(state, reason);
2916
+ t->state_tracker.SetState(state, status, reason);
2911
2917
  }
2912
2918
 
2913
- /*******************************************************************************
2914
- * POLLSET STUFF
2915
- */
2919
+ //
2920
+ // POLLSET STUFF
2921
+ //
2916
2922
 
2917
2923
  static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
2918
2924
  grpc_pollset* pollset) {
@@ -2926,11 +2932,11 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
2926
2932
  grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
2927
2933
  }
2928
2934
 
2929
- /*******************************************************************************
2930
- * BYTE STREAM
2931
- */
2935
+ //
2936
+ // BYTE STREAM
2937
+ //
2932
2938
 
2933
- static void reset_byte_stream(void* arg, grpc_error* error) {
2939
+ static void reset_byte_stream(void* arg, grpc_error_handle error) {
2934
2940
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
2935
2941
  s->pending_byte_stream = false;
2936
2942
  if (error == GRPC_ERROR_NONE) {
@@ -2961,8 +2967,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream(
2961
2967
  stream->byte_stream_error = GRPC_ERROR_NONE;
2962
2968
  }
2963
2969
 
2964
- void Chttp2IncomingByteStream::OrphanLocked(void* arg,
2965
- grpc_error* /*error_ignored*/) {
2970
+ void Chttp2IncomingByteStream::OrphanLocked(
2971
+ void* arg, grpc_error_handle /*error_ignored*/) {
2966
2972
  Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
2967
2973
  grpc_chttp2_stream* s = bs->stream_;
2968
2974
  grpc_chttp2_transport* t = s->t;
@@ -2981,7 +2987,7 @@ void Chttp2IncomingByteStream::Orphan() {
2981
2987
  }
2982
2988
 
2983
2989
  void Chttp2IncomingByteStream::NextLocked(void* arg,
2984
- grpc_error* /*error_ignored*/) {
2990
+ grpc_error_handle /*error_ignored*/) {
2985
2991
  Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
2986
2992
  grpc_chttp2_transport* t = bs->transport_;
2987
2993
  grpc_chttp2_stream* s = bs->stream_;
@@ -3016,7 +3022,7 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
3016
3022
  s->data_parser.parsing_frame = nullptr;
3017
3023
  }
3018
3024
  } else {
3019
- /* Should never reach here. */
3025
+ // Should never reach here.
3020
3026
  GPR_ASSERT(false);
3021
3027
  }
3022
3028
  } else {
@@ -3051,9 +3057,9 @@ void Chttp2IncomingByteStream::MaybeCreateStreamDecompressionCtx() {
3051
3057
  }
3052
3058
  }
3053
3059
 
3054
- grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3060
+ grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3055
3061
  GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
3056
- grpc_error* error;
3062
+ grpc_error_handle error;
3057
3063
  if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
3058
3064
  if (!stream_->unprocessed_incoming_frames_decompressed &&
3059
3065
  stream_->stream_decompression_method !=
@@ -3096,7 +3102,7 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3096
3102
  return GRPC_ERROR_NONE;
3097
3103
  }
3098
3104
 
3099
- void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
3105
+ void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
3100
3106
  GPR_ASSERT(error != GRPC_ERROR_NONE);
3101
3107
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, stream_->on_next,
3102
3108
  GRPC_ERROR_REF(error));
@@ -3106,10 +3112,10 @@ void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
3106
3112
  grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
3107
3113
  }
3108
3114
 
3109
- grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3110
- grpc_slice* slice_out) {
3115
+ grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3116
+ grpc_slice* slice_out) {
3111
3117
  if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
3112
- grpc_error* error =
3118
+ grpc_error_handle error =
3113
3119
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
3114
3120
  transport_->combiner->Run(&stream_->reset_byte_stream,
3115
3121
  GRPC_ERROR_REF(error));
@@ -3124,8 +3130,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3124
3130
  }
3125
3131
  }
3126
3132
 
3127
- grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
3128
- bool reset_on_error) {
3133
+ grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
3134
+ bool reset_on_error) {
3129
3135
  if (error == GRPC_ERROR_NONE) {
3130
3136
  if (remaining_bytes_ != 0) {
3131
3137
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
@@ -3139,15 +3145,15 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
3139
3145
  return error;
3140
3146
  }
3141
3147
 
3142
- void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
3148
+ void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
3143
3149
  GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
3144
3150
  }
3145
3151
 
3146
3152
  } // namespace grpc_core
3147
3153
 
3148
- /*******************************************************************************
3149
- * RESOURCE QUOTAS
3150
- */
3154
+ //
3155
+ // RESOURCE QUOTAS
3156
+ //
3151
3157
 
3152
3158
  static void post_benign_reclaimer(grpc_chttp2_transport* t) {
3153
3159
  if (!t->benign_reclaimer_registered) {
@@ -3171,22 +3177,22 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
3171
3177
  }
3172
3178
  }
3173
3179
 
3174
- static void benign_reclaimer(void* arg, grpc_error* error) {
3180
+ static void benign_reclaimer(void* arg, grpc_error_handle error) {
3175
3181
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3176
3182
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
3177
3183
  benign_reclaimer_locked, t, nullptr),
3178
3184
  GRPC_ERROR_REF(error));
3179
3185
  }
3180
3186
 
3181
- static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3187
+ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
3182
3188
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3183
3189
  if (error == GRPC_ERROR_NONE &&
3184
3190
  grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
3185
- /* Channel with no active streams: send a goaway to try and make it
3186
- * disconnect cleanly */
3191
+ // Channel with no active streams: send a goaway to try and make it
3192
+ // disconnect cleanly
3187
3193
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
3188
3194
  gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
3189
- t->peer_string);
3195
+ t->peer_string.c_str());
3190
3196
  }
3191
3197
  send_goaway(t,
3192
3198
  grpc_error_set_int(
@@ -3197,7 +3203,8 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3197
3203
  gpr_log(GPR_INFO,
3198
3204
  "HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
3199
3205
  " streams",
3200
- t->peer_string, grpc_chttp2_stream_map_size(&t->stream_map));
3206
+ t->peer_string.c_str(),
3207
+ grpc_chttp2_stream_map_size(&t->stream_map));
3201
3208
  }
3202
3209
  t->benign_reclaimer_registered = false;
3203
3210
  if (error != GRPC_ERROR_CANCELLED) {
@@ -3207,14 +3214,14 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3207
3214
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3208
3215
  }
3209
3216
 
3210
- static void destructive_reclaimer(void* arg, grpc_error* error) {
3217
+ static void destructive_reclaimer(void* arg, grpc_error_handle error) {
3211
3218
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3212
3219
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
3213
3220
  destructive_reclaimer_locked, t, nullptr),
3214
3221
  GRPC_ERROR_REF(error));
3215
3222
  }
3216
3223
 
3217
- static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3224
+ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
3218
3225
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3219
3226
  size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
3220
3227
  t->destructive_reclaimer_registered = false;
@@ -3222,8 +3229,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3222
3229
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
3223
3230
  grpc_chttp2_stream_map_rand(&t->stream_map));
3224
3231
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
3225
- gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d", t->peer_string,
3226
- s->id);
3232
+ gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
3233
+ t->peer_string.c_str(), s->id);
3227
3234
  }
3228
3235
  grpc_chttp2_cancel_stream(
3229
3236
  t, s,
@@ -3231,10 +3238,10 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3231
3238
  GRPC_ERROR_INT_HTTP2_ERROR,
3232
3239
  GRPC_HTTP2_ENHANCE_YOUR_CALM));
3233
3240
  if (n > 1) {
3234
- /* Since we cancel one stream per destructive reclamation, if
3235
- there are more streams left, we can immediately post a new
3236
- reclaimer in case the resource quota needs to free more
3237
- memory */
3241
+ // Since we cancel one stream per destructive reclamation, if
3242
+ // there are more streams left, we can immediately post a new
3243
+ // reclaimer in case the resource quota needs to free more
3244
+ // memory
3238
3245
  post_destructive_reclaimer(t);
3239
3246
  }
3240
3247
  }
@@ -3245,9 +3252,9 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3245
3252
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
3246
3253
  }
3247
3254
 
3248
- /*******************************************************************************
3249
- * MONITORING
3250
- */
3255
+ //
3256
+ // MONITORING
3257
+ //
3251
3258
 
3252
3259
  const char* grpc_chttp2_initiate_write_reason_string(
3253
3260
  grpc_chttp2_initiate_write_reason reason) {
@@ -3284,6 +3291,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
3284
3291
  return "FLOW_CONTROL_UNSTALLED_BY_UPDATE";
3285
3292
  case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
3286
3293
  return "APPLICATION_PING";
3294
+ case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
3295
+ return "BDP_PING";
3287
3296
  case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
3288
3297
  return "KEEPALIVE_PING";
3289
3298
  case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED:
@@ -3330,7 +3339,7 @@ grpc_transport* grpc_create_chttp2_transport(
3330
3339
 
3331
3340
  void grpc_chttp2_transport_start_reading(
3332
3341
  grpc_transport* transport, grpc_slice_buffer* read_buffer,
3333
- grpc_closure* notify_on_receive_settings) {
3342
+ grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close) {
3334
3343
  grpc_chttp2_transport* t =
3335
3344
  reinterpret_cast<grpc_chttp2_transport*>(transport);
3336
3345
  GRPC_CHTTP2_REF_TRANSPORT(
@@ -3340,6 +3349,7 @@ void grpc_chttp2_transport_start_reading(
3340
3349
  gpr_free(read_buffer);
3341
3350
  }
3342
3351
  t->notify_on_receive_settings = notify_on_receive_settings;
3352
+ t->notify_on_close = notify_on_close;
3343
3353
  t->combiner->Run(
3344
3354
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
3345
3355
  GRPC_ERROR_NONE);