grpc 1.30.2 → 1.35.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 (1231) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1055 -18213
  3. data/etc/roots.pem +257 -573
  4. data/include/grpc/compression.h +1 -1
  5. data/include/grpc/grpc.h +15 -7
  6. data/include/grpc/grpc_security.h +254 -186
  7. data/include/grpc/grpc_security_constants.h +3 -0
  8. data/include/grpc/impl/codegen/README.md +22 -0
  9. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  10. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  11. data/include/grpc/impl/codegen/grpc_types.h +16 -12
  12. data/include/grpc/impl/codegen/log.h +0 -2
  13. data/include/grpc/impl/codegen/port_platform.h +28 -88
  14. data/include/grpc/impl/codegen/sync_windows.h +4 -0
  15. data/include/grpc/slice_buffer.h +3 -3
  16. data/include/grpc/support/sync.h +3 -3
  17. data/include/grpc/support/time.h +7 -7
  18. data/src/core/ext/filters/client_channel/backend_metric.cc +14 -13
  19. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
  20. data/src/core/ext/filters/client_channel/client_channel.cc +2991 -1559
  21. data/src/core/ext/filters/client_channel/client_channel.h +1 -5
  22. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
  23. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  24. data/src/core/ext/filters/client_channel/config_selector.cc +58 -0
  25. data/src/core/ext/filters/client_channel/config_selector.h +125 -0
  26. data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
  27. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  28. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
  29. data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -8
  30. data/src/core/ext/filters/client_channel/health/health_check_client.h +4 -4
  31. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +13 -14
  32. data/src/core/ext/filters/client_channel/http_proxy.cc +27 -24
  33. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
  34. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
  35. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -7
  36. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  37. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +248 -214
  38. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
  39. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
  40. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
  41. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  42. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
  43. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  44. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -17
  45. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +79 -30
  46. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -9
  47. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +14 -36
  48. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +29 -19
  49. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +350 -130
  50. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +52 -24
  51. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +24 -0
  52. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +812 -0
  53. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +722 -0
  54. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1262 -0
  55. data/src/core/ext/filters/client_channel/lb_policy.cc +6 -2
  56. data/src/core/ext/filters/client_channel/lb_policy.h +10 -7
  57. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +12 -6
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +14 -18
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
  63. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +488 -65
  64. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
  65. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  66. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  67. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +13 -12
  68. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +4 -4
  69. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  70. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +35 -28
  71. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +673 -69
  72. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
  73. data/src/core/ext/filters/client_channel/resolver.cc +3 -1
  74. data/src/core/ext/filters/client_channel/resolver.h +4 -1
  75. data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
  76. data/src/core/ext/filters/client_channel/resolver_registry.cc +49 -49
  77. data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
  78. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +35 -81
  79. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +12 -11
  80. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
  81. data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
  82. data/src/core/ext/filters/client_channel/server_address.cc +120 -7
  83. data/src/core/ext/filters/client_channel/server_address.h +44 -21
  84. data/src/core/ext/filters/client_channel/service_config.cc +18 -13
  85. data/src/core/ext/filters/client_channel/service_config.h +8 -5
  86. data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
  87. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
  88. data/src/core/ext/filters/client_channel/service_config_parser.cc +8 -6
  89. data/src/core/ext/filters/client_channel/service_config_parser.h +8 -5
  90. data/src/core/ext/filters/client_channel/subchannel.cc +116 -88
  91. data/src/core/ext/filters/client_channel/subchannel.h +30 -24
  92. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
  93. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
  94. data/src/core/ext/filters/deadline/deadline_filter.cc +87 -79
  95. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  96. data/src/core/ext/filters/http/client/http_client_filter.cc +6 -6
  97. data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
  98. data/src/core/ext/filters/http/http_filters_plugin.cc +8 -4
  99. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
  100. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  101. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  102. data/src/core/ext/filters/max_age/max_age_filter.cc +3 -2
  103. data/src/core/ext/filters/message_size/message_size_filter.cc +59 -82
  104. data/src/core/ext/filters/message_size/message_size_filter.h +8 -1
  105. data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
  106. data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
  107. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
  108. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +19 -2
  109. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
  110. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
  111. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +34 -47
  112. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +478 -342
  113. data/src/core/ext/transport/chttp2/server/chttp2_server.h +7 -2
  114. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
  115. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +19 -18
  116. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +9 -9
  117. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  118. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +284 -321
  119. data/src/core/ext/transport/chttp2/transport/flow_control.cc +33 -30
  120. data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -19
  121. data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
  122. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -7
  123. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  124. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
  125. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -9
  126. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
  127. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +15 -18
  128. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +37 -37
  129. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
  130. data/src/core/ext/transport/chttp2/transport/internal.h +23 -2
  131. data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -74
  132. data/src/core/ext/transport/chttp2/transport/writing.cc +17 -22
  133. data/src/core/ext/transport/inproc/inproc_transport.cc +87 -33
  134. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
  135. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  136. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +10 -4
  137. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +244 -0
  138. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +865 -0
  139. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  140. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +253 -0
  141. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +458 -0
  142. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1818 -0
  143. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
  144. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +77 -0
  145. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +55 -0
  146. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +349 -0
  147. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
  148. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +428 -0
  149. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
  150. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +88 -0
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +310 -0
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +991 -0
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +388 -0
  155. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  156. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +78 -0
  157. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
  158. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +149 -0
  159. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
  160. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +839 -0
  161. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  162. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +752 -0
  163. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
  164. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +88 -0
  165. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +176 -0
  166. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +730 -0
  167. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
  168. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +65 -0
  169. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +8 -8
  170. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +95 -0
  171. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +36 -0
  172. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +92 -0
  173. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
  174. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +243 -0
  175. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  176. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +305 -0
  177. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  178. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +367 -0
  179. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
  180. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +73 -0
  181. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +128 -0
  182. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +512 -0
  183. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +155 -0
  184. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +591 -0
  185. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
  186. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +107 -0
  187. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +178 -0
  188. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +662 -0
  189. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
  190. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +220 -0
  191. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +900 -0
  192. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3640 -0
  193. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
  194. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +159 -0
  195. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
  196. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +122 -0
  197. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +364 -0
  198. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1475 -0
  199. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
  200. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
  201. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +110 -0
  202. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +426 -0
  203. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +76 -0
  204. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +236 -0
  205. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +147 -0
  206. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +621 -0
  207. data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +6 -7
  208. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +56 -0
  209. data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +6 -5
  210. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +56 -0
  211. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +139 -0
  212. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +487 -0
  213. data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +6 -7
  214. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
  215. data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +6 -7
  216. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +56 -0
  217. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
  218. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +151 -0
  219. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +6 -7
  220. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +56 -0
  221. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +6 -7
  222. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +56 -0
  223. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  224. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +128 -0
  225. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  226. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +84 -0
  227. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  228. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +78 -0
  229. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
  230. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +166 -0
  231. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +54 -0
  232. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +146 -0
  233. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  234. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +207 -0
  235. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  236. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +301 -0
  237. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  238. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +283 -0
  239. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
  240. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +9 -9
  241. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
  242. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +99 -0
  243. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
  244. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +130 -0
  245. data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +7 -6
  246. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +68 -0
  247. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  248. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
  249. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +830 -0
  250. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
  251. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +842 -0
  252. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  253. data/src/core/ext/upb-generated/google/api/http.upb.h +52 -32
  254. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  255. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +12 -6
  256. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +106 -106
  257. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +688 -499
  258. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  259. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +12 -6
  260. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  261. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +8 -2
  262. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +5 -5
  263. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +55 -57
  264. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  265. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +12 -6
  266. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
  267. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +82 -28
  268. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  269. data/src/core/ext/upb-generated/google/rpc/status.upb.h +17 -10
  270. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +5 -5
  271. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +40 -45
  272. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +43 -43
  273. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +236 -184
  274. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
  275. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +29 -13
  276. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  277. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +19 -7
  278. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
  279. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +122 -62
  280. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  281. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +30 -12
  282. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
  283. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
  284. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -1
  285. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
  286. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +12 -6
  287. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  288. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +60 -0
  289. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +28 -0
  290. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +60 -0
  291. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +52 -0
  292. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +143 -0
  293. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +42 -0
  294. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +84 -0
  295. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +36 -0
  296. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +94 -0
  297. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +54 -0
  298. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +173 -0
  299. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +36 -0
  300. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +92 -0
  301. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +9 -9
  302. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +48 -68
  303. data/src/core/ext/upb-generated/validate/validate.upb.c +68 -68
  304. data/src/core/ext/upb-generated/validate/validate.upb.h +727 -587
  305. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  306. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  307. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  308. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  309. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
  310. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  311. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  312. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  313. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
  314. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  315. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  316. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  317. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
  318. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  319. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  320. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  321. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  322. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  323. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
  324. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
  325. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  326. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  327. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  328. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  329. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  330. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  331. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  332. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  333. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  334. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  335. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  336. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  337. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
  338. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
  339. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
  340. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  341. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  342. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  343. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
  344. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  345. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
  346. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  347. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  348. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  349. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  350. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  351. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  352. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  353. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
  354. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  355. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
  356. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  357. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
  358. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  359. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
  360. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  361. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
  362. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
  363. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  364. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  365. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
  366. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  367. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
  368. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  369. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  370. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  371. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
  372. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  373. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
  374. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  375. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
  376. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  377. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  378. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  379. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  380. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  381. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
  382. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
  383. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
  384. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  385. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
  386. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  387. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
  388. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  389. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
  390. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  391. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  392. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  393. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  394. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  395. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  396. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  397. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  398. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  399. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  400. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  401. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
  402. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  403. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  404. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  405. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  406. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  407. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  408. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  409. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  410. data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -10
  411. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  412. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  413. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  414. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  415. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  416. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  417. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  418. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  419. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  420. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  421. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +39 -0
  422. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  423. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  424. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  425. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +40 -0
  426. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  427. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  428. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  429. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  430. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  431. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +40 -0
  432. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  433. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  434. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  435. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  436. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  437. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  438. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  439. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  440. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  441. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  442. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  443. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  444. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  445. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  446. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  447. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
  448. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
  449. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
  450. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
  451. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
  452. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
  453. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
  454. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
  455. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
  456. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
  457. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
  458. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
  459. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
  460. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  461. data/src/core/ext/xds/certificate_provider_factory.h +61 -0
  462. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  463. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  464. data/src/core/ext/xds/certificate_provider_store.cc +87 -0
  465. data/src/core/ext/xds/certificate_provider_store.h +112 -0
  466. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
  467. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
  468. data/src/core/ext/xds/xds_api.cc +2308 -0
  469. data/src/core/ext/xds/xds_api.h +469 -0
  470. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +220 -42
  471. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +31 -11
  472. data/src/core/ext/xds/xds_certificate_provider.cc +299 -0
  473. data/src/core/ext/xds/xds_certificate_provider.h +112 -0
  474. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
  475. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +661 -791
  476. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +126 -99
  477. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +61 -18
  478. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +48 -20
  479. data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
  480. data/src/core/lib/channel/channel_args.cc +9 -8
  481. data/src/core/lib/channel/channel_args.h +0 -1
  482. data/src/core/lib/channel/channel_trace.cc +6 -8
  483. data/src/core/lib/channel/channel_trace.h +1 -1
  484. data/src/core/lib/channel/channelz.cc +41 -88
  485. data/src/core/lib/channel/channelz.h +14 -23
  486. data/src/core/lib/channel/channelz_registry.cc +15 -12
  487. data/src/core/lib/channel/channelz_registry.h +3 -1
  488. data/src/core/lib/channel/handshaker.cc +2 -2
  489. data/src/core/lib/channel/handshaker.h +2 -2
  490. data/src/core/lib/compression/compression.cc +8 -4
  491. data/src/core/lib/compression/compression_args.cc +3 -2
  492. data/src/core/lib/compression/compression_internal.cc +10 -5
  493. data/src/core/lib/compression/compression_internal.h +2 -1
  494. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  495. data/src/core/lib/debug/stats.h +2 -2
  496. data/src/core/lib/debug/stats_data.cc +1 -0
  497. data/src/core/lib/debug/stats_data.h +13 -13
  498. data/src/core/lib/gpr/alloc.cc +3 -2
  499. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  500. data/src/core/lib/gpr/log.cc +53 -16
  501. data/src/core/lib/gpr/log_linux.cc +23 -9
  502. data/src/core/lib/gpr/log_posix.cc +19 -7
  503. data/src/core/lib/gpr/log_windows.cc +18 -4
  504. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  505. data/src/core/lib/gpr/spinlock.h +10 -2
  506. data/src/core/lib/gpr/string.cc +33 -31
  507. data/src/core/lib/gpr/string.h +9 -8
  508. data/src/core/lib/gpr/sync.cc +4 -4
  509. data/src/core/lib/gpr/sync_posix.cc +2 -8
  510. data/src/core/lib/gpr/time.cc +12 -12
  511. data/src/core/lib/gpr/time_precise.cc +5 -2
  512. data/src/core/lib/gpr/time_precise.h +6 -2
  513. data/src/core/lib/gpr/tls.h +4 -0
  514. data/src/core/lib/gpr/tls_msvc.h +2 -0
  515. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  516. data/src/core/lib/gpr/useful.h +5 -4
  517. data/src/core/lib/gprpp/arena.h +3 -2
  518. data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
  519. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  520. data/src/core/lib/gprpp/examine_stack.h +46 -0
  521. data/src/core/lib/gprpp/fork.cc +2 -2
  522. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  523. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  524. data/src/core/lib/gprpp/orphanable.h +4 -8
  525. data/src/core/lib/gprpp/ref_counted.h +91 -68
  526. data/src/core/lib/gprpp/ref_counted_ptr.h +166 -7
  527. data/src/core/lib/gprpp/stat.h +38 -0
  528. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  529. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  530. data/src/core/lib/gprpp/thd.h +2 -2
  531. data/src/core/lib/gprpp/thd_posix.cc +42 -37
  532. data/src/core/lib/gprpp/thd_windows.cc +3 -1
  533. data/src/core/lib/http/httpcli.cc +14 -11
  534. data/src/core/lib/http/httpcli.h +2 -3
  535. data/src/core/lib/http/httpcli_security_connector.cc +6 -6
  536. data/src/core/lib/http/parser.cc +47 -27
  537. data/src/core/lib/iomgr/call_combiner.cc +8 -5
  538. data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
  539. data/src/core/lib/iomgr/combiner.cc +2 -1
  540. data/src/core/lib/iomgr/endpoint.cc +5 -1
  541. data/src/core/lib/iomgr/endpoint.h +8 -4
  542. data/src/core/lib/iomgr/endpoint_cfstream.cc +36 -11
  543. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  544. data/src/core/lib/iomgr/error.cc +17 -12
  545. data/src/core/lib/iomgr/error_cfstream.cc +9 -8
  546. data/src/core/lib/iomgr/error_internal.h +1 -1
  547. data/src/core/lib/iomgr/ev_epoll1_linux.cc +25 -19
  548. data/src/core/lib/iomgr/ev_epollex_linux.cc +40 -38
  549. data/src/core/lib/iomgr/ev_poll_posix.cc +15 -12
  550. data/src/core/lib/iomgr/exec_ctx.cc +1 -1
  551. data/src/core/lib/iomgr/exec_ctx.h +16 -12
  552. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  553. data/src/core/lib/iomgr/executor/threadpool.h +4 -4
  554. data/src/core/lib/iomgr/executor.cc +2 -1
  555. data/src/core/lib/iomgr/executor.h +1 -1
  556. data/src/core/lib/iomgr/iomgr.cc +1 -1
  557. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  558. data/src/core/lib/iomgr/load_file.h +1 -1
  559. data/src/core/lib/iomgr/lockfree_event.cc +19 -14
  560. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  561. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +128 -44
  562. data/src/core/lib/iomgr/parse_address.h +77 -0
  563. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  564. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
  565. data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
  566. data/src/core/lib/iomgr/port.h +1 -21
  567. data/src/core/lib/iomgr/python_util.h +4 -4
  568. data/src/core/lib/iomgr/resolve_address.cc +4 -4
  569. data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
  570. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
  571. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
  572. data/src/core/lib/iomgr/resource_quota.cc +34 -31
  573. data/src/core/lib/iomgr/sockaddr_utils.cc +19 -16
  574. data/src/core/lib/iomgr/sockaddr_utils.h +4 -3
  575. data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
  576. data/src/core/lib/iomgr/socket_mutator.cc +3 -2
  577. data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
  578. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  579. data/src/core/lib/iomgr/tcp_client.cc +3 -3
  580. data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
  581. data/src/core/lib/iomgr/tcp_client_custom.cc +13 -15
  582. data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
  583. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
  584. data/src/core/lib/iomgr/tcp_custom.cc +54 -33
  585. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  586. data/src/core/lib/iomgr/tcp_posix.cc +43 -21
  587. data/src/core/lib/iomgr/tcp_server.cc +3 -4
  588. data/src/core/lib/iomgr/tcp_server.h +7 -5
  589. data/src/core/lib/iomgr/tcp_server_custom.cc +34 -36
  590. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
  591. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
  592. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
  593. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
  594. data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
  595. data/src/core/lib/iomgr/tcp_windows.cc +26 -10
  596. data/src/core/lib/iomgr/timer_custom.cc +5 -5
  597. data/src/core/lib/iomgr/timer_generic.cc +16 -15
  598. data/src/core/lib/iomgr/timer_manager.cc +2 -2
  599. data/src/core/lib/iomgr/udp_server.cc +25 -25
  600. data/src/core/lib/iomgr/udp_server.h +6 -4
  601. data/src/core/lib/iomgr/unix_sockets_posix.cc +36 -30
  602. data/src/core/lib/iomgr/unix_sockets_posix.h +8 -1
  603. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -2
  604. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  605. data/src/core/lib/json/json.h +12 -2
  606. data/src/core/lib/json/json_reader.cc +28 -25
  607. data/src/core/lib/json/json_util.cc +58 -0
  608. data/src/core/lib/json/json_util.h +204 -0
  609. data/src/core/lib/json/json_writer.cc +2 -1
  610. data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
  611. data/src/core/lib/security/authorization/authorization_engine.h +84 -0
  612. data/src/core/lib/security/authorization/evaluate_args.cc +148 -0
  613. data/src/core/lib/security/authorization/evaluate_args.h +59 -0
  614. data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
  615. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +44 -0
  616. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +69 -0
  617. data/src/core/lib/security/authorization/mock_cel/cel_value.h +97 -0
  618. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
  619. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +57 -0
  620. data/src/core/lib/security/context/security_context.cc +4 -3
  621. data/src/core/lib/security/context/security_context.h +3 -1
  622. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  623. data/src/core/lib/security/credentials/credentials.cc +7 -7
  624. data/src/core/lib/security/credentials/credentials.h +8 -6
  625. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
  626. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
  627. data/src/core/lib/security/credentials/external/aws_request_signer.cc +213 -0
  628. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  629. data/src/core/lib/security/credentials/external/external_account_credentials.cc +497 -0
  630. data/src/core/lib/security/credentials/external/external_account_credentials.h +120 -0
  631. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
  632. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +48 -0
  633. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
  634. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +58 -0
  635. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
  636. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  637. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +82 -55
  638. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
  639. data/src/core/lib/security/credentials/jwt/json_token.cc +6 -3
  640. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
  641. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  642. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -4
  643. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +58 -74
  644. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
  645. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +7 -7
  646. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +25 -5
  647. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +11 -1
  648. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +346 -0
  649. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
  650. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +399 -0
  651. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +138 -0
  652. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +78 -150
  653. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +65 -185
  654. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
  655. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  656. data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
  657. data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
  658. data/src/core/lib/security/credentials/xds/xds_credentials.cc +175 -0
  659. data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
  660. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
  661. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +20 -25
  662. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
  663. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +87 -0
  664. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  665. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  666. data/src/core/lib/security/security_connector/local/local_security_connector.cc +3 -3
  667. data/src/core/lib/security/security_connector/security_connector.cc +6 -3
  668. data/src/core/lib/security/security_connector/security_connector.h +5 -3
  669. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +22 -15
  670. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
  671. data/src/core/lib/security/security_connector/ssl_utils.cc +46 -25
  672. data/src/core/lib/security/security_connector/ssl_utils.h +25 -21
  673. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +359 -293
  674. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +105 -61
  675. data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
  676. data/src/core/lib/security/transport/secure_endpoint.cc +9 -3
  677. data/src/core/lib/security/transport/security_handshaker.cc +3 -3
  678. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  679. data/src/core/lib/security/util/json_util.cc +12 -13
  680. data/src/core/lib/security/util/json_util.h +1 -0
  681. data/src/core/lib/slice/slice.cc +45 -5
  682. data/src/core/lib/slice/slice_buffer.cc +2 -1
  683. data/src/core/lib/slice/slice_intern.cc +6 -7
  684. data/src/core/lib/slice/slice_internal.h +3 -2
  685. data/src/core/lib/surface/call.cc +93 -85
  686. data/src/core/lib/surface/call.h +2 -1
  687. data/src/core/lib/surface/call_details.cc +8 -8
  688. data/src/core/lib/surface/channel.cc +53 -61
  689. data/src/core/lib/surface/channel.h +21 -5
  690. data/src/core/lib/surface/channel_init.cc +1 -1
  691. data/src/core/lib/surface/completion_queue.cc +30 -29
  692. data/src/core/lib/surface/completion_queue.h +16 -16
  693. data/src/core/lib/surface/init.cc +32 -14
  694. data/src/core/lib/surface/lame_client.cc +20 -46
  695. data/src/core/lib/surface/lame_client.h +4 -0
  696. data/src/core/lib/surface/server.cc +1144 -1343
  697. data/src/core/lib/surface/server.h +400 -70
  698. data/src/core/lib/surface/validate_metadata.h +3 -0
  699. data/src/core/lib/surface/version.cc +2 -2
  700. data/src/core/lib/transport/authority_override.cc +40 -0
  701. data/src/core/lib/transport/authority_override.h +37 -0
  702. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  703. data/src/core/lib/transport/bdp_estimator.h +2 -1
  704. data/src/core/lib/transport/byte_stream.h +3 -3
  705. data/src/core/lib/transport/connectivity_state.cc +18 -13
  706. data/src/core/lib/transport/connectivity_state.h +26 -12
  707. data/src/core/lib/transport/error_utils.cc +13 -0
  708. data/src/core/lib/transport/error_utils.h +7 -1
  709. data/src/core/lib/transport/metadata.cc +11 -1
  710. data/src/core/lib/transport/metadata.h +2 -2
  711. data/src/core/lib/transport/metadata_batch.h +4 -4
  712. data/src/core/lib/transport/static_metadata.cc +296 -277
  713. data/src/core/lib/transport/static_metadata.h +80 -73
  714. data/src/core/lib/transport/status_metadata.cc +4 -3
  715. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  716. data/src/core/lib/transport/transport.cc +5 -3
  717. data/src/core/lib/transport/transport.h +21 -8
  718. data/src/core/lib/uri/uri_parser.cc +135 -258
  719. data/src/core/lib/uri/uri_parser.h +58 -20
  720. data/src/core/plugin_registry/grpc_plugin_registry.cc +45 -20
  721. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  722. data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
  723. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +24 -14
  724. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +51 -26
  725. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
  726. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  727. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
  728. data/src/core/tsi/fake_transport_security.cc +6 -3
  729. data/src/core/tsi/local_transport_security.cc +5 -1
  730. data/src/core/tsi/local_transport_security.h +6 -7
  731. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
  732. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  733. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
  734. data/src/core/tsi/ssl_transport_security.cc +177 -66
  735. data/src/core/tsi/ssl_transport_security.h +23 -8
  736. data/src/core/tsi/transport_security.cc +10 -8
  737. data/src/core/tsi/transport_security_interface.h +6 -1
  738. data/src/ruby/bin/math_services_pb.rb +4 -4
  739. data/src/ruby/ext/grpc/extconf.rb +6 -3
  740. data/src/ruby/ext/grpc/rb_call.c +3 -2
  741. data/src/ruby/ext/grpc/rb_call.h +4 -0
  742. data/src/ruby/ext/grpc/rb_call_credentials.c +54 -10
  743. data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
  744. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  745. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -18
  746. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +74 -44
  747. data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
  748. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  749. data/src/ruby/lib/grpc/version.rb +1 -1
  750. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
  751. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +33 -0
  752. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +46 -12
  753. data/src/ruby/spec/channel_credentials_spec.rb +10 -0
  754. data/src/ruby/spec/generic/active_call_spec.rb +19 -8
  755. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  756. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  757. data/src/ruby/spec/pb/codegen/package_option_spec.rb +22 -6
  758. data/src/ruby/spec/user_agent_spec.rb +74 -0
  759. data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
  760. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  761. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  762. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  763. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  764. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  765. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  766. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +166 -0
  767. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  768. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  769. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  770. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  771. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  772. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  773. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  774. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  775. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  776. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  777. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  778. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  779. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  780. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  781. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  782. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  783. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  784. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  785. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  786. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  787. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  788. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  789. data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
  790. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  791. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
  792. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  793. data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
  794. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  795. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
  796. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
  797. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
  798. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  799. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +270 -0
  800. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -0
  801. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
  802. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
  803. data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
  804. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
  805. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
  806. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
  807. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
  808. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  809. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1945 -0
  810. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  811. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  812. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  813. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +196 -0
  814. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
  815. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +89 -0
  816. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  817. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
  818. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  819. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
  820. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  821. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +149 -0
  822. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
  823. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  824. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  825. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  826. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
  827. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  828. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  829. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
  830. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  831. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  832. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  833. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  834. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  835. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  836. data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
  837. data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
  838. data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
  839. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
  840. data/third_party/abseil-cpp/absl/hash/internal/hash.h +996 -0
  841. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  842. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  843. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  844. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  845. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  846. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
  847. data/third_party/abseil-cpp/absl/status/status.cc +445 -0
  848. data/third_party/abseil-cpp/absl/status/status.h +817 -0
  849. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  850. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  851. data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
  852. data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
  853. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  854. data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
  855. data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
  856. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  857. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  858. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  859. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  860. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  861. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +173 -0
  862. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  863. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  864. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  865. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  866. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  867. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  868. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  869. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  870. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  871. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  872. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  873. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  874. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  875. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  876. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  877. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  878. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  879. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  880. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  881. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  882. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  883. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  884. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  885. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  886. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  887. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  888. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  889. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
  890. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  891. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
  892. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +249 -0
  893. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  894. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  895. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +492 -0
  896. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
  897. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
  898. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -0
  899. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  900. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  901. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  902. data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
  903. data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
  904. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  905. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
  906. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  907. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  908. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  909. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  910. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  911. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  912. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  913. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
  914. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
  915. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  916. data/third_party/abseil-cpp/absl/time/time.h +15 -16
  917. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  918. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  919. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  920. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  921. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  922. data/third_party/abseil-cpp/absl/types/variant.h +861 -0
  923. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  924. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  925. data/third_party/boringssl-with-bazel/err_data.c +482 -464
  926. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  927. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
  928. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
  929. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
  930. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  931. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  932. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -7
  933. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  934. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  935. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  936. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  937. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  938. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
  939. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
  940. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  941. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  942. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  943. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  944. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
  945. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
  946. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  947. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  948. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
  949. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  950. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
  951. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
  952. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  953. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  954. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  955. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  956. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  957. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  958. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +30 -10
  959. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +56 -22
  960. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +70 -2
  961. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +543 -0
  962. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +237 -0
  963. data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
  964. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  965. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
  966. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +110 -70
  967. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +348 -423
  968. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +217 -79
  969. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  970. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +7 -7
  971. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  972. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  973. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
  974. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
  975. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  976. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +20 -8
  977. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +21 -18
  978. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
  979. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
  980. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +65 -3
  981. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +7 -4
  982. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  983. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +3 -3
  984. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +57 -44
  985. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +38 -2
  986. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
  987. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
  988. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +37 -15
  989. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
  990. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
  991. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
  992. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +30 -6
  993. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  994. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
  995. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  996. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
  997. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +7 -3
  998. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +2 -2
  999. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  1000. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  1001. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +126 -40
  1002. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -1
  1003. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  1004. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  1005. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +54 -0
  1006. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -23
  1007. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +7 -4
  1008. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  1009. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +6 -0
  1010. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +1 -1
  1011. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  1012. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +12 -0
  1013. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -0
  1014. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +73 -1
  1015. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  1016. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  1017. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +136 -26
  1018. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +5 -2
  1019. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +43 -24
  1020. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +942 -747
  1021. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +482 -432
  1022. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  1023. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +38 -3
  1024. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +27 -20
  1025. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +4 -5
  1026. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -1
  1027. data/third_party/boringssl-with-bazel/src/ssl/internal.h +66 -24
  1028. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +48 -7
  1029. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
  1030. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
  1031. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +105 -0
  1032. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -34
  1033. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
  1034. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
  1035. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +250 -20
  1036. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -2
  1037. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +88 -40
  1038. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +152 -50
  1039. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  1040. data/third_party/re2/re2/bitmap256.h +117 -0
  1041. data/third_party/re2/re2/bitstate.cc +385 -0
  1042. data/third_party/re2/re2/compile.cc +1279 -0
  1043. data/third_party/re2/re2/dfa.cc +2130 -0
  1044. data/third_party/re2/re2/filtered_re2.cc +121 -0
  1045. data/third_party/re2/re2/filtered_re2.h +109 -0
  1046. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  1047. data/third_party/re2/re2/nfa.cc +713 -0
  1048. data/third_party/re2/re2/onepass.cc +623 -0
  1049. data/third_party/re2/re2/parse.cc +2464 -0
  1050. data/third_party/re2/re2/perl_groups.cc +119 -0
  1051. data/third_party/re2/re2/pod_array.h +55 -0
  1052. data/third_party/re2/re2/prefilter.cc +710 -0
  1053. data/third_party/re2/re2/prefilter.h +108 -0
  1054. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  1055. data/third_party/re2/re2/prefilter_tree.h +139 -0
  1056. data/third_party/re2/re2/prog.cc +988 -0
  1057. data/third_party/re2/re2/prog.h +436 -0
  1058. data/third_party/re2/re2/re2.cc +1362 -0
  1059. data/third_party/re2/re2/re2.h +1002 -0
  1060. data/third_party/re2/re2/regexp.cc +980 -0
  1061. data/third_party/re2/re2/regexp.h +659 -0
  1062. data/third_party/re2/re2/set.cc +154 -0
  1063. data/third_party/re2/re2/set.h +80 -0
  1064. data/third_party/re2/re2/simplify.cc +657 -0
  1065. data/third_party/re2/re2/sparse_array.h +392 -0
  1066. data/third_party/re2/re2/sparse_set.h +264 -0
  1067. data/third_party/re2/re2/stringpiece.cc +65 -0
  1068. data/third_party/re2/re2/stringpiece.h +210 -0
  1069. data/third_party/re2/re2/tostring.cc +351 -0
  1070. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  1071. data/third_party/re2/re2/unicode_casefold.h +78 -0
  1072. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  1073. data/third_party/re2/re2/unicode_groups.h +67 -0
  1074. data/third_party/re2/re2/walker-inl.h +246 -0
  1075. data/third_party/re2/util/benchmark.h +156 -0
  1076. data/third_party/re2/util/flags.h +26 -0
  1077. data/third_party/re2/util/logging.h +109 -0
  1078. data/third_party/re2/util/malloc_counter.h +19 -0
  1079. data/third_party/re2/util/mix.h +41 -0
  1080. data/third_party/re2/util/mutex.h +148 -0
  1081. data/third_party/re2/util/pcre.cc +1025 -0
  1082. data/third_party/re2/util/pcre.h +681 -0
  1083. data/third_party/re2/util/rune.cc +260 -0
  1084. data/third_party/re2/util/strutil.cc +149 -0
  1085. data/third_party/re2/util/strutil.h +21 -0
  1086. data/third_party/re2/util/test.h +50 -0
  1087. data/third_party/re2/util/utf.h +44 -0
  1088. data/third_party/re2/util/util.h +42 -0
  1089. data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
  1090. data/third_party/upb/upb/decode.c +604 -511
  1091. data/third_party/upb/upb/decode.h +20 -1
  1092. data/third_party/upb/upb/decode.int.h +163 -0
  1093. data/third_party/upb/upb/decode_fast.c +1040 -0
  1094. data/third_party/upb/upb/decode_fast.h +126 -0
  1095. data/third_party/upb/upb/def.c +2178 -0
  1096. data/third_party/upb/upb/def.h +315 -0
  1097. data/third_party/upb/upb/def.hpp +439 -0
  1098. data/third_party/upb/upb/encode.c +311 -211
  1099. data/third_party/upb/upb/encode.h +27 -2
  1100. data/third_party/upb/upb/json_decode.c +1443 -0
  1101. data/third_party/upb/upb/json_decode.h +23 -0
  1102. data/third_party/upb/upb/json_encode.c +713 -0
  1103. data/third_party/upb/upb/json_encode.h +36 -0
  1104. data/third_party/upb/upb/msg.c +215 -70
  1105. data/third_party/upb/upb/msg.h +558 -14
  1106. data/third_party/upb/upb/port_def.inc +105 -63
  1107. data/third_party/upb/upb/port_undef.inc +10 -7
  1108. data/third_party/upb/upb/reflection.c +408 -0
  1109. data/third_party/upb/upb/reflection.h +168 -0
  1110. data/third_party/upb/upb/table.c +73 -269
  1111. data/third_party/upb/upb/table.int.h +25 -57
  1112. data/third_party/upb/upb/text_encode.c +421 -0
  1113. data/third_party/upb/upb/text_encode.h +38 -0
  1114. data/third_party/upb/upb/upb.c +138 -135
  1115. data/third_party/upb/upb/upb.h +119 -146
  1116. data/third_party/upb/upb/upb.hpp +88 -0
  1117. data/third_party/upb/upb/upb.int.h +29 -0
  1118. metadata +560 -166
  1119. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -938
  1120. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
  1121. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -834
  1122. data/src/core/ext/filters/client_channel/parse_address.h +0 -53
  1123. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
  1124. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  1125. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -348
  1126. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -123
  1127. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
  1128. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
  1129. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  1130. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
  1131. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  1132. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -35
  1133. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  1134. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -418
  1135. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  1136. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -197
  1137. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  1138. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -378
  1139. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
  1140. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  1141. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
  1142. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -35
  1143. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  1144. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -55
  1145. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
  1146. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  1147. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1447
  1148. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  1149. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
  1150. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +0 -35
  1151. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -78
  1152. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  1153. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -897
  1154. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  1155. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
  1156. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  1157. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -72
  1158. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  1159. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
  1160. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  1161. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -673
  1162. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -36
  1163. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  1164. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  1165. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -518
  1166. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
  1167. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  1168. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
  1169. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
  1170. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  1171. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
  1172. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  1173. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -266
  1174. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  1175. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
  1176. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  1177. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
  1178. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
  1179. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  1180. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
  1181. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  1182. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
  1183. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  1184. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
  1185. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  1186. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -399
  1187. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
  1188. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  1189. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
  1190. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  1191. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -3032
  1192. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  1193. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
  1194. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  1195. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
  1196. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
  1197. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  1198. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
  1199. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  1200. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1132
  1201. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -33
  1202. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  1203. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  1204. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  1205. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
  1206. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  1207. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -134
  1208. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  1209. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -144
  1210. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  1211. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  1212. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  1213. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  1214. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -39
  1215. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
  1216. data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -50
  1217. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
  1218. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
  1219. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  1220. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
  1221. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  1222. data/src/core/lib/gprpp/map.h +0 -53
  1223. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  1224. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  1225. data/src/core/lib/slice/slice_hash_table.h +0 -199
  1226. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  1227. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  1228. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  1229. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  1230. data/third_party/upb/upb/generated_util.h +0 -105
  1231. 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,7 +99,7 @@ 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 */
102
+ // forward declarations of various callbacks that we'll build closures around
107
103
  static void write_action_begin_locked(void* t, grpc_error* error);
108
104
  static void write_action(void* t, grpc_error* error);
109
105
  static void write_action_end(void* t, grpc_error* error);
@@ -115,24 +111,25 @@ static void continue_read_action_locked(grpc_chttp2_transport* t);
115
111
 
116
112
  static void complete_fetch(void* gs, grpc_error* error);
117
113
  static void complete_fetch_locked(void* gs, grpc_error* error);
118
- /** Set a transport level setting, and push it to our peer */
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
119
  grpc_error* 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* error);
130
+ static void destructive_reclaimer(void* arg, grpc_error* error);
131
+ static void benign_reclaimer_locked(void* arg, grpc_error* error);
132
+ static void destructive_reclaimer_locked(void* arg, grpc_error* error);
136
133
 
137
134
  static void post_benign_reclaimer(grpc_chttp2_transport* t);
138
135
  static void post_destructive_reclaimer(grpc_chttp2_transport* t);
@@ -140,7 +137,6 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t);
140
137
  static void close_transport_locked(grpc_chttp2_transport* t, grpc_error* error);
141
138
  static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error);
142
139
 
143
- static void schedule_bdp_ping_locked(grpc_chttp2_transport* t);
144
140
  static void start_bdp_ping(void* tp, grpc_error* error);
145
141
  static void finish_bdp_ping(void* tp, grpc_error* error);
146
142
  static void start_bdp_ping_locked(void* tp, grpc_error* error);
@@ -150,11 +146,10 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error);
150
146
 
151
147
  static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error);
152
148
  static void send_ping_locked(grpc_chttp2_transport* t,
153
- grpc_closure* on_initiate,
154
- grpc_closure* on_complete);
149
+ grpc_closure* on_initiate, grpc_closure* on_ack);
155
150
  static void retry_initiate_ping_locked(void* tp, grpc_error* error);
156
151
 
157
- /** keepalive-relevant functions */
152
+ // keepalive-relevant functions
158
153
  static void init_keepalive_ping(void* arg, grpc_error* error);
159
154
  static void init_keepalive_ping_locked(void* arg, grpc_error* error);
160
155
  static void start_keepalive_ping(void* arg, grpc_error* error);
@@ -170,9 +165,9 @@ static void reset_byte_stream(void* arg, grpc_error* error);
170
165
  // GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
171
166
  bool g_flow_control_enabled = true;
172
167
 
173
- /*******************************************************************************
174
- * CONSTRUCTION/DESTRUCTION/REFCOUNTING
175
- */
168
+ //
169
+ // CONSTRUCTION/DESTRUCTION/REFCOUNTING
170
+ //
176
171
 
177
172
  grpc_chttp2_transport::~grpc_chttp2_transport() {
178
173
  size_t i;
@@ -226,12 +221,11 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
226
221
 
227
222
  GRPC_ERROR_UNREF(closed_with_error);
228
223
  gpr_free(ping_acks);
229
- gpr_free(peer_string);
230
224
  }
231
225
 
232
226
  static const grpc_transport_vtable* get_vtable(void);
233
227
 
234
- /* Returns whether bdp is enabled */
228
+ // Returns whether bdp is enabled
235
229
  static bool read_channel_args(grpc_chttp2_transport* t,
236
230
  const grpc_channel_args* channel_args,
237
231
  bool is_client) {
@@ -273,15 +267,6 @@ static bool read_channel_args(grpc_chttp2_transport* t,
273
267
  GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
274
268
  t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
275
269
  &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
270
  } else if (0 ==
286
271
  strcmp(channel_args->args[i].key,
287
272
  GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
@@ -378,11 +363,9 @@ static bool read_channel_args(grpc_chttp2_transport* t,
378
363
  }
379
364
  }
380
365
  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
366
  t->channelz_socket =
384
367
  grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
385
- "", t->peer_string,
368
+ std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
386
369
  absl::StrFormat("%s %s", get_vtable()->name, t->peer_string));
387
370
  }
388
371
  return enable_bdp;
@@ -412,8 +395,6 @@ static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
412
395
 
413
396
  static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
414
397
  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
398
  t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
418
399
  t->ping_policy.min_recv_ping_interval_without_data =
419
400
  g_default_min_recv_ping_interval_without_data_ms;
@@ -429,8 +410,8 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
429
410
  grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
430
411
  &t->init_keepalive_ping_locked);
431
412
  } else {
432
- /* Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
433
- inflight keeaplive timers */
413
+ // Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
414
+ // inflight keeaplive timers
434
415
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED;
435
416
  }
436
417
  }
@@ -438,7 +419,9 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
438
419
  grpc_chttp2_transport::grpc_chttp2_transport(
439
420
  const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client,
440
421
  grpc_resource_user* resource_user)
441
- : refs(1, &grpc_trace_chttp2_refcount),
422
+ : refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
423
+ ? "chttp2_refcount"
424
+ : nullptr),
442
425
  ep(ep),
443
426
  peer_string(grpc_endpoint_get_peer(ep)),
444
427
  resource_user(resource_user),
@@ -451,11 +434,11 @@ grpc_chttp2_transport::grpc_chttp2_transport(
451
434
  GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
452
435
  GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
453
436
  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 */
437
+ // 8 is a random stab in the dark as to a good initial size: it's small enough
438
+ // that it shouldn't waste memory for infrequently used connections, yet
439
+ // large enough that the exponential growth should happen nicely when it's
440
+ // needed.
441
+ // TODO(ctiller): tune this
459
442
  grpc_chttp2_stream_map_init(&stream_map, 8);
460
443
 
461
444
  grpc_slice_buffer_init(&read_buffer);
@@ -466,7 +449,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
466
449
  }
467
450
  grpc_chttp2_hpack_compressor_init(&hpack_compressor);
468
451
  grpc_slice_buffer_init(&qbuf);
469
- /* copy in initial settings to all setting sets */
452
+ // copy in initial settings to all setting sets
470
453
  size_t i;
471
454
  int j;
472
455
  for (i = 0; i < GRPC_CHTTP2_NUM_SETTINGS; i++) {
@@ -477,7 +460,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
477
460
  grpc_chttp2_hpack_parser_init(&hpack_parser);
478
461
  grpc_chttp2_goaway_parser_init(&goaway_parser);
479
462
 
480
- /* configure http2 the way we like it */
463
+ // configure http2 the way we like it
481
464
  if (is_client) {
482
465
  queue_setting_update(this, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0);
483
466
  queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
@@ -503,7 +486,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
503
486
  enable_bdp = false;
504
487
  }
505
488
 
506
- /* No pings allowed before receiving a header or data frame. */
489
+ // No pings allowed before receiving a header or data frame.
507
490
  ping_state.pings_before_data_required = 0;
508
491
  ping_state.is_delayed_ping_timer_set = false;
509
492
  ping_state.last_ping_sent_time = GRPC_MILLIS_INF_PAST;
@@ -514,8 +497,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
514
497
  init_keepalive_pings_if_enabled(this);
515
498
 
516
499
  if (enable_bdp) {
517
- GRPC_CHTTP2_REF_TRANSPORT(this, "bdp_ping");
518
- schedule_bdp_ping_locked(this);
500
+ bdp_ping_blocked = true;
519
501
  grpc_chttp2_act_on_flowctl_action(flow_control->PeriodicUpdate(), this,
520
502
  nullptr);
521
503
  }
@@ -562,7 +544,8 @@ static void close_transport_locked(grpc_chttp2_transport* t,
562
544
  }
563
545
  GPR_ASSERT(error != GRPC_ERROR_NONE);
564
546
  t->closed_with_error = GRPC_ERROR_REF(error);
565
- connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, "close_transport");
547
+ connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
548
+ "close_transport");
566
549
  if (t->ping_state.is_delayed_ping_timer_set) {
567
550
  grpc_timer_cancel(&t->ping_state.delayed_ping_timer);
568
551
  }
@@ -579,11 +562,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
579
562
  break;
580
563
  case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
581
564
  case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED:
582
- /* keepalive timers are not set in these two states */
565
+ // keepalive timers are not set in these two states
583
566
  break;
584
567
  }
585
568
 
586
- /* flush writable stream list to avoid dangling references */
569
+ // flush writable stream list to avoid dangling references
587
570
  grpc_chttp2_stream* s;
588
571
  while (grpc_chttp2_list_pop_writable_stream(t, &s)) {
589
572
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
@@ -593,7 +576,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
593
576
  }
594
577
  if (t->notify_on_receive_settings != nullptr) {
595
578
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
596
- GRPC_ERROR_CANCELLED);
579
+ GRPC_ERROR_REF(error));
597
580
  t->notify_on_receive_settings = nullptr;
598
581
  }
599
582
  GRPC_ERROR_UNREF(error);
@@ -616,9 +599,9 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
616
599
  #endif
617
600
 
618
601
  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 */
602
+ // We reserve one 'active stream' that's dropped when the stream is
603
+ // read-closed. The others are for Chttp2IncomingByteStreams that are
604
+ // actively reading
622
605
  GRPC_CHTTP2_STREAM_REF(s, "chttp2");
623
606
  GRPC_CHTTP2_REF_TRANSPORT(s->t, "stream");
624
607
  }
@@ -633,7 +616,7 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
633
616
  metadata_buffer{grpc_chttp2_incoming_metadata_buffer(arena),
634
617
  grpc_chttp2_incoming_metadata_buffer(arena)} {
635
618
  if (server_data) {
636
- id = static_cast<uint32_t>((uintptr_t)server_data);
619
+ id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
637
620
  *t->accepting_stream = this;
638
621
  grpc_chttp2_stream_map_add(&t->stream_map, id, this);
639
622
  post_destructive_reclaimer(t);
@@ -677,9 +660,6 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
677
660
  grpc_slice_buffer_destroy_internal(&decompressed_data_buffer);
678
661
  }
679
662
 
680
- grpc_chttp2_list_remove_stalled_by_transport(t, this);
681
- grpc_chttp2_list_remove_stalled_by_stream(t, this);
682
-
683
663
  for (int i = 0; i < STREAM_LIST_COUNT; i++) {
684
664
  if (GPR_UNLIKELY(included[i])) {
685
665
  gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
@@ -769,14 +749,14 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
769
749
  GPR_ASSERT(t->accepting_stream == nullptr);
770
750
  t->accepting_stream = &accepting;
771
751
  t->accept_stream_cb(t->accept_stream_cb_user_data, &t->base,
772
- (void*)static_cast<uintptr_t>(id));
752
+ reinterpret_cast<void*>(id));
773
753
  t->accepting_stream = nullptr;
774
754
  return accepting;
775
755
  }
776
756
 
777
- /*******************************************************************************
778
- * OUTPUT PROCESSING
779
- */
757
+ //
758
+ // OUTPUT PROCESSING
759
+ //
780
760
 
781
761
  static const char* write_state_name(grpc_chttp2_write_state st) {
782
762
  switch (st) {
@@ -794,15 +774,15 @@ static void set_write_state(grpc_chttp2_transport* t,
794
774
  grpc_chttp2_write_state st, const char* reason) {
795
775
  GRPC_CHTTP2_IF_TRACING(
796
776
  gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
797
- t->is_client ? "CLIENT" : "SERVER", t->peer_string,
777
+ t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
798
778
  write_state_name(t->write_state), write_state_name(st), reason));
799
779
  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) */
780
+ // If the state is being reset back to idle, it means a write was just
781
+ // finished. Make sure all the run_after_write closures are scheduled.
782
+ //
783
+ // This is also our chance to close the transport if the transport was marked
784
+ // to be closed after all writes finish (for example, if we received a go-away
785
+ // from peer while we had some pending writes)
806
786
  if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
807
787
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
808
788
  if (t->close_transport_on_writes_finished != nullptr) {
@@ -864,6 +844,9 @@ static void inc_initiate_write_reason(
864
844
  case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
865
845
  GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING();
866
846
  break;
847
+ case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
848
+ GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING();
849
+ break;
867
850
  case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
868
851
  GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING();
869
852
  break;
@@ -889,22 +872,22 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
889
872
  set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
890
873
  grpc_chttp2_initiate_write_reason_string(reason));
891
874
  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') */
875
+ // Note that the 'write_action_begin_locked' closure is being scheduled
876
+ // on the 'finally_scheduler' of t->combiner. This means that
877
+ // 'write_action_begin_locked' is called only *after* all the other
878
+ // closures (some of which are potentially initiating more writes on the
879
+ // transport) are executed on the t->combiner.
880
+ //
881
+ // The reason for scheduling on finally_scheduler is to make sure we batch
882
+ // as many writes as possible. 'write_action_begin_locked' is the function
883
+ // that gathers all the relevant bytes (which are at various places in the
884
+ // grpc_chttp2_transport structure) and append them to 'outbuf' field in
885
+ // grpc_chttp2_transport thereby batching what would have been potentially
886
+ // multiple write operations.
887
+ //
888
+ // Also, 'write_action_begin_locked' only gathers the bytes into outbuf.
889
+ // It does not call the endpoint to write the bytes. That is done by the
890
+ // 'write_action' (which is scheduled by 'write_action_begin_locked')
908
891
  t->combiner->FinallyRun(
909
892
  GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
910
893
  write_action_begin_locked, t, nullptr),
@@ -956,9 +939,9 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
956
939
  write_action(t, GRPC_ERROR_NONE);
957
940
  if (t->reading_paused_on_pending_induced_frames) {
958
941
  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. */
942
+ // We had paused reading, because we had many induced frames (SETTINGS
943
+ // ACK, PINGS ACK and RST_STREAMS) pending in t->qbuf. Now that we have
944
+ // been able to flush qbuf, we can resume reading.
962
945
  GRPC_CHTTP2_IF_TRACING(gpr_log(
963
946
  GPR_INFO,
964
947
  "transport %p : Resuming reading after being paused due to too "
@@ -993,8 +976,8 @@ static void write_action_end(void* tp, grpc_error* error) {
993
976
  GRPC_ERROR_REF(error));
994
977
  }
995
978
 
996
- /* Callback from the grpc_endpoint after bytes have been written by calling
997
- * sendmsg */
979
+ // Callback from the grpc_endpoint after bytes have been written by calling
980
+ // sendmsg
998
981
  static void write_action_end_locked(void* tp, grpc_error* error) {
999
982
  GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
1000
983
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
@@ -1057,7 +1040,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
1057
1040
  }
1058
1041
  if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
1059
1042
  t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
1060
- t->dirtied_local_settings = 1;
1043
+ t->dirtied_local_settings = true;
1061
1044
  }
1062
1045
  }
1063
1046
 
@@ -1080,16 +1063,17 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1080
1063
  GRPC_CHTTP2_IF_TRACING(
1081
1064
  gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
1082
1065
  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. */
1066
+ // We want to log this irrespective of whether http tracing is enabled if we
1067
+ // received a GOAWAY with a non NO_ERROR code.
1085
1068
  if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1086
- gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string,
1069
+ gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
1087
1070
  goaway_error, grpc_error_string(t->goaway_error));
1088
1071
  }
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. */
1072
+ absl::Status status = grpc_error_to_absl_status(t->goaway_error);
1073
+ // When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
1074
+ // data equal to "too_many_pings", it should log the occurrence at a log level
1075
+ // that is enabled by default and double the configured KEEPALIVE_TIME used
1076
+ // for new connections on that channel.
1093
1077
  if (GPR_UNLIKELY(t->is_client &&
1094
1078
  goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
1095
1079
  grpc_slice_str_cmp(goaway_text, "too_many_pings") == 0)) {
@@ -1104,16 +1088,18 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1104
1088
  ? GRPC_MILLIS_INF_FUTURE
1105
1089
  : static_cast<grpc_millis>(current_keepalive_time_ms *
1106
1090
  KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
1091
+ status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
1092
+ absl::Cord(std::to_string(t->keepalive_time)));
1107
1093
  }
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");
1094
+ // lie: use transient failure from the transport to indicate goaway has been
1095
+ // received.
1096
+ connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status,
1097
+ "got_goaway");
1112
1098
  }
1113
1099
 
1114
1100
  static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1115
1101
  grpc_chttp2_stream* s;
1116
- /* cancel out streams that haven't yet started if we have received a GOAWAY */
1102
+ // cancel out streams that haven't yet started if we have received a GOAWAY
1117
1103
  if (t->goaway_error != GRPC_ERROR_NONE) {
1118
1104
  while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1119
1105
  grpc_chttp2_cancel_stream(
@@ -1124,14 +1110,14 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1124
1110
  }
1125
1111
  return;
1126
1112
  }
1127
- /* start streams where we have free grpc_chttp2_stream ids and free
1128
- * concurrency */
1113
+ // start streams where we have free grpc_chttp2_stream ids and free
1114
+ // * concurrency
1129
1115
  while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
1130
1116
  grpc_chttp2_stream_map_size(&t->stream_map) <
1131
1117
  t->settings[GRPC_PEER_SETTINGS]
1132
1118
  [GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
1133
1119
  grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1134
- /* safe since we can't (legally) be parsing this stream yet */
1120
+ // safe since we can't (legally) be parsing this stream yet
1135
1121
  GRPC_CHTTP2_IF_TRACING(gpr_log(
1136
1122
  GPR_INFO,
1137
1123
  "HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d",
@@ -1143,6 +1129,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1143
1129
 
1144
1130
  if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
1145
1131
  connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
1132
+ absl::Status(absl::StatusCode::kUnavailable,
1133
+ "Transport Stream IDs exhausted"),
1146
1134
  "no_more_stream_ids");
1147
1135
  }
1148
1136
 
@@ -1151,7 +1139,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1151
1139
  grpc_chttp2_mark_stream_writable(t, s);
1152
1140
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
1153
1141
  }
1154
- /* cancel out streams that will never be started */
1142
+ // cancel out streams that will never be started
1155
1143
  if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
1156
1144
  while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1157
1145
  grpc_chttp2_cancel_stream(
@@ -1163,12 +1151,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1163
1151
  }
1164
1152
  }
1165
1153
 
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 */
1154
+ // Flag that this closure barrier may be covering a write in a pollset, and so
1155
+ // we should not complete this closure until we can prove that the write got
1156
+ // scheduled
1169
1157
  #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) */
1158
+ // First bit of the reference count, stored in the high order bits (with the low
1159
+ // bits being used for flags defined above)
1172
1160
  #define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
1173
1161
 
1174
1162
  static grpc_closure* add_closure_barrier(grpc_closure* closure) {
@@ -1212,7 +1200,7 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1212
1200
  "Error in HTTP transport completing operation");
1213
1201
  closure->error_data.error = grpc_error_set_str(
1214
1202
  closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
1215
- grpc_slice_from_copied_string(t->peer_string));
1203
+ grpc_slice_from_copied_string(t->peer_string.c_str()));
1216
1204
  }
1217
1205
  closure->error_data.error =
1218
1206
  grpc_error_add_child(closure->error_data.error, error);
@@ -1260,7 +1248,7 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1260
1248
  grpc_chttp2_stream* s) {
1261
1249
  for (;;) {
1262
1250
  if (s->fetching_send_message == nullptr) {
1263
- /* Stream was cancelled before message fetch completed */
1251
+ // Stream was cancelled before message fetch completed
1264
1252
  abort(); /* TODO(ctiller): what cleanup here? */
1265
1253
  return; /* early out */
1266
1254
  }
@@ -1390,7 +1378,7 @@ static void perform_stream_op_locked(void* stream_op,
1390
1378
  GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
1391
1379
  on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1392
1380
 
1393
- /* Identify stream compression */
1381
+ // Identify stream compression
1394
1382
  if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
1395
1383
  .content_encoding == nullptr ||
1396
1384
  grpc_stream_compression_method_parse(
@@ -1409,68 +1397,48 @@ static void perform_stream_op_locked(void* stream_op,
1409
1397
  s->send_initial_metadata_finished = add_closure_barrier(on_complete);
1410
1398
  s->send_initial_metadata =
1411
1399
  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
1400
  if (t->is_client) {
1418
1401
  s->deadline = GPR_MIN(s->deadline, s->send_initial_metadata->deadline);
1419
1402
  }
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
- }
1403
+ if (contains_non_ok_status(s->send_initial_metadata)) {
1404
+ s->seen_error = true;
1405
+ }
1406
+ if (!s->write_closed) {
1407
+ if (t->is_client) {
1408
+ if (t->closed_with_error == GRPC_ERROR_NONE) {
1409
+ GPR_ASSERT(s->id == 0);
1410
+ grpc_chttp2_list_add_waiting_for_concurrency(t, s);
1411
+ maybe_start_some_streams(t);
1451
1412
  } 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
- }
1413
+ grpc_chttp2_cancel_stream(
1414
+ t, s,
1415
+ grpc_error_set_int(
1416
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1417
+ "Transport closed", &t->closed_with_error, 1),
1418
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1460
1419
  }
1461
1420
  } 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");
1421
+ GPR_ASSERT(s->id != 0);
1422
+ grpc_chttp2_mark_stream_writable(t, s);
1423
+ if (!(op->send_message &&
1424
+ (op->payload->send_message.send_message->flags() &
1425
+ GRPC_WRITE_BUFFER_HINT))) {
1426
+ grpc_chttp2_initiate_write(
1427
+ t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
1428
+ }
1469
1429
  }
1430
+ } else {
1431
+ s->send_initial_metadata = nullptr;
1432
+ grpc_chttp2_complete_closure_step(
1433
+ t, s, &s->send_initial_metadata_finished,
1434
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1435
+ "Attempt to send initial metadata after stream was closed",
1436
+ &s->write_closed_error, 1),
1437
+ "send_initial_metadata_finished");
1470
1438
  }
1471
1439
  if (op_payload->send_initial_metadata.peer_string != nullptr) {
1472
1440
  gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
1473
- (gpr_atm)t->peer_string);
1441
+ (gpr_atm)t->peer_string.c_str());
1474
1442
  }
1475
1443
  }
1476
1444
 
@@ -1526,47 +1494,29 @@ static void perform_stream_op_locked(void* stream_op,
1526
1494
  s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
1527
1495
  s->send_trailing_metadata =
1528
1496
  op_payload->send_trailing_metadata.send_trailing_metadata;
1497
+ s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
1529
1498
  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
- }
1499
+ if (contains_non_ok_status(s->send_trailing_metadata)) {
1500
+ s->seen_error = true;
1501
+ }
1502
+ if (s->write_closed) {
1503
+ s->send_trailing_metadata = nullptr;
1504
+ s->sent_trailing_metadata_op = nullptr;
1505
+ grpc_chttp2_complete_closure_step(
1506
+ t, s, &s->send_trailing_metadata_finished,
1507
+ grpc_metadata_batch_is_empty(
1508
+ op->payload->send_trailing_metadata.send_trailing_metadata)
1509
+ ? GRPC_ERROR_NONE
1510
+ : GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1511
+ "Attempt to send trailing metadata after "
1512
+ "stream was closed"),
1513
+ "send_trailing_metadata_finished");
1514
+ } else if (s->id != 0) {
1515
+ // TODO(ctiller): check if there's flow control for any outstanding
1516
+ // bytes before going writable
1517
+ grpc_chttp2_mark_stream_writable(t, s);
1518
+ grpc_chttp2_initiate_write(
1519
+ t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
1570
1520
  }
1571
1521
  }
1572
1522
 
@@ -1581,7 +1531,7 @@ static void perform_stream_op_locked(void* stream_op,
1581
1531
  op_payload->recv_initial_metadata.trailing_metadata_available;
1582
1532
  if (op_payload->recv_initial_metadata.peer_string != nullptr) {
1583
1533
  gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
1584
- (gpr_atm)t->peer_string);
1534
+ (gpr_atm)t->peer_string.c_str());
1585
1535
  }
1586
1536
  grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
1587
1537
  }
@@ -1664,8 +1614,8 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1664
1614
  }
1665
1615
 
1666
1616
  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 */
1617
+ // callback remaining pings: they're not allowed to call into the transport,
1618
+ // and maybe they hold resources that need to be freed
1669
1619
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1670
1620
  GPR_ASSERT(error != GRPC_ERROR_NONE);
1671
1621
  for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
@@ -1691,11 +1641,9 @@ static void send_ping_locked(grpc_chttp2_transport* t,
1691
1641
  GRPC_ERROR_NONE);
1692
1642
  }
1693
1643
 
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
- */
1644
+ // Specialized form of send_ping_locked for keepalive ping. If there is already
1645
+ // a ping in progress, the keepalive ping would piggyback onto that ping,
1646
+ // instead of waiting for that ping to complete and then starting a new ping.
1699
1647
  static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1700
1648
  if (t->closed_with_error != GRPC_ERROR_NONE) {
1701
1649
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
@@ -1709,7 +1657,7 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1709
1657
  }
1710
1658
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1711
1659
  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. */
1660
+ // There is a ping in flight. Add yourself to the inflight closure list.
1713
1661
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1714
1662
  start_keepalive_ping_locked, t, nullptr),
1715
1663
  GRPC_ERROR_REF(t->closed_with_error));
@@ -1751,9 +1699,8 @@ static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
1751
1699
  void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1752
1700
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1753
1701
  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);
1702
+ gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
1703
+ t->peer_string.c_str(), id);
1757
1704
  return;
1758
1705
  }
1759
1706
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
@@ -1764,8 +1711,8 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1764
1711
  }
1765
1712
 
1766
1713
  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,
1714
+ // We want to log this irrespective of whether http tracing is enabled
1715
+ gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1769
1716
  grpc_error_string(error));
1770
1717
  t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
1771
1718
  grpc_http2_error_code http_error;
@@ -1786,7 +1733,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1786
1733
  grpc_error_set_int(
1787
1734
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
1788
1735
  GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
1789
- /*The transport will be closed after the write is done */
1736
+ // The transport will be closed after the write is done
1790
1737
  close_transport_locked(
1791
1738
  t, grpc_error_set_int(
1792
1739
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
@@ -1794,6 +1741,15 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1794
1741
  }
1795
1742
  }
1796
1743
 
1744
+ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
1745
+ if (!t->is_client) {
1746
+ t->ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
1747
+ t->ping_recv_state.ping_strikes = 0;
1748
+ }
1749
+ t->ping_state.pings_before_data_required =
1750
+ t->ping_policy.max_pings_without_data;
1751
+ }
1752
+
1797
1753
  static void perform_transport_op_locked(void* stream_op,
1798
1754
  grpc_error* /*error_ignored*/) {
1799
1755
  grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
@@ -1852,9 +1808,9 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1852
1808
  GRPC_ERROR_NONE);
1853
1809
  }
1854
1810
 
1855
- /*******************************************************************************
1856
- * INPUT PROCESSING - GENERAL
1857
- */
1811
+ //
1812
+ // INPUT PROCESSING - GENERAL
1813
+ //
1858
1814
 
1859
1815
  void grpc_chttp2_maybe_complete_recv_initial_metadata(
1860
1816
  grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
@@ -1974,8 +1930,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1974
1930
  s->unprocessed_incoming_frames_buffer.length > 0;
1975
1931
  if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
1976
1932
  !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. */
1933
+ // Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
1934
+ // maybe decompress the next 5 bytes in the stream.
1979
1935
  if (s->stream_decompression_method ==
1980
1936
  GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
1981
1937
  grpc_slice_buffer_move_first(
@@ -2059,6 +2015,8 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2059
2015
  if (grpc_chttp2_list_remove_writable_stream(t, s)) {
2060
2016
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream");
2061
2017
  }
2018
+ grpc_chttp2_list_remove_stalled_by_stream(t, s);
2019
+ grpc_chttp2_list_remove_stalled_by_transport(t, s);
2062
2020
 
2063
2021
  GRPC_ERROR_UNREF(error);
2064
2022
 
@@ -2097,12 +2055,12 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2097
2055
  if (status != GRPC_STATUS_OK) {
2098
2056
  s->seen_error = true;
2099
2057
  }
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 */
2058
+ // stream_global->recv_trailing_metadata_finished gives us a
2059
+ // last chance replacement: we've received trailing metadata,
2060
+ // but something more important has become available to signal
2061
+ // to the upper layers - drop what we've got, and then publish
2062
+ // what we want - which is safe because we haven't told anyone
2063
+ // about the metadata yet
2106
2064
  if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
2107
2065
  s->recv_trailing_metadata_finished != nullptr) {
2108
2066
  char status_string[GPR_LTOA_MIN_BUFSIZE];
@@ -2177,6 +2135,7 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2177
2135
  "send_initial_metadata_finished");
2178
2136
 
2179
2137
  s->send_trailing_metadata = nullptr;
2138
+ s->sent_trailing_metadata_op = nullptr;
2180
2139
  grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
2181
2140
  GRPC_ERROR_REF(error),
2182
2141
  "send_trailing_metadata_finished");
@@ -2193,9 +2152,12 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2193
2152
  grpc_chttp2_stream* s, int close_reads,
2194
2153
  int close_writes, grpc_error* error) {
2195
2154
  if (s->read_closed && s->write_closed) {
2196
- /* already closed */
2155
+ // already closed, but we should still fake the status if needed.
2156
+ grpc_error* overall_error = removal_error(error, s, "Stream removed");
2157
+ if (overall_error != GRPC_ERROR_NONE) {
2158
+ grpc_chttp2_fake_status(t, s, overall_error);
2159
+ }
2197
2160
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
2198
- GRPC_ERROR_UNREF(error);
2199
2161
  return;
2200
2162
  }
2201
2163
  bool closed_read = false;
@@ -2217,7 +2179,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2217
2179
  if (s->id != 0) {
2218
2180
  remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
2219
2181
  } else {
2220
- /* Purge streams waiting on concurrency still waiting for id assignment */
2182
+ // Purge streams waiting on concurrency still waiting for id assignment
2221
2183
  grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
2222
2184
  }
2223
2185
  if (overall_error != GRPC_ERROR_NONE) {
@@ -2256,12 +2218,12 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2256
2218
 
2257
2219
  GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
2258
2220
 
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. */
2221
+ // Hand roll a header block.
2222
+ // This is unnecessarily ugly - at some point we should find a more
2223
+ // elegant solution.
2224
+ // It's complicated by the fact that our send machinery would be dead by
2225
+ // the time we got around to sending this, so instead we ignore HPACK
2226
+ // compression and just write the uncompressed bytes onto the wire.
2265
2227
  if (!s->sent_initial_metadata) {
2266
2228
  http_status_hdr = GRPC_SLICE_MALLOC(13);
2267
2229
  p = GRPC_SLICE_START_PTR(http_status_hdr);
@@ -2390,6 +2352,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2390
2352
  grpc_slice_buffer_add(&t->qbuf, status_hdr);
2391
2353
  grpc_slice_buffer_add(&t->qbuf, message_pfx);
2392
2354
  grpc_slice_buffer_add(&t->qbuf, grpc_slice_ref_internal(slice));
2355
+ grpc_chttp2_reset_ping_clock(t);
2393
2356
  grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
2394
2357
  &s->stats.outgoing);
2395
2358
 
@@ -2421,9 +2384,9 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
2421
2384
  GRPC_ERROR_UNREF(error);
2422
2385
  }
2423
2386
 
2424
- /*******************************************************************************
2425
- * INPUT PROCESSING - PARSING
2426
- */
2387
+ //
2388
+ // INPUT PROCESSING - PARSING
2389
+ //
2427
2390
 
2428
2391
  template <class F>
2429
2392
  static void WithUrgency(grpc_chttp2_transport* t,
@@ -2520,11 +2483,6 @@ static void read_action_locked(void* tp, grpc_error* error) {
2520
2483
  grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2521
2484
  GRPC_ERROR_NONE};
2522
2485
  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
2486
  errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
2529
2487
  }
2530
2488
  if (errors[1] != GRPC_ERROR_NONE) {
@@ -2558,8 +2516,8 @@ static void read_action_locked(void* tp, grpc_error* error) {
2558
2516
  "Transport closed", &t->closed_with_error, 1);
2559
2517
  }
2560
2518
  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 */
2519
+ // If a goaway frame was received, this might be the reason why the read
2520
+ // failed. Add this info to the error
2563
2521
  if (t->goaway_error != GRPC_ERROR_NONE) {
2564
2522
  error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
2565
2523
  }
@@ -2568,7 +2526,7 @@ static void read_action_locked(void* tp, grpc_error* error) {
2568
2526
  t->endpoint_reading = 0;
2569
2527
  } else if (t->closed_with_error == GRPC_ERROR_NONE) {
2570
2528
  keep_reading = true;
2571
- /* Since we have read a byte, reset the keepalive timer */
2529
+ // Since we have read a byte, reset the keepalive timer
2572
2530
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2573
2531
  grpc_timer_cancel(&t->keepalive_ping_timer);
2574
2532
  }
@@ -2603,7 +2561,7 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
2603
2561
 
2604
2562
  // t is reffed prior to calling the first time, and once the callback chain
2605
2563
  // that kicks off finishes, it's unreffed
2606
- static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2564
+ void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2607
2565
  t->flow_control->bdp_estimator()->SchedulePing();
2608
2566
  send_ping_locked(
2609
2567
  t,
@@ -2611,6 +2569,9 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2611
2569
  grpc_schedule_on_exec_ctx),
2612
2570
  GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
2613
2571
  grpc_schedule_on_exec_ctx));
2572
+ // TODO(yashykt): Enabling this causes internal b/168345569. Re-enable once
2573
+ // fixed.
2574
+ // grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2614
2575
  }
2615
2576
 
2616
2577
  static void start_bdp_ping(void* tp, grpc_error* error) {
@@ -2623,13 +2584,13 @@ static void start_bdp_ping(void* tp, grpc_error* error) {
2623
2584
  static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2624
2585
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2625
2586
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2626
- gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string,
2587
+ gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
2627
2588
  grpc_error_string(error));
2628
2589
  }
2629
2590
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2630
2591
  return;
2631
2592
  }
2632
- /* Reset the keepalive ping timer */
2593
+ // Reset the keepalive ping timer
2633
2594
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2634
2595
  grpc_timer_cancel(&t->keepalive_ping_timer);
2635
2596
  }
@@ -2647,7 +2608,7 @@ static void finish_bdp_ping(void* tp, grpc_error* error) {
2647
2608
  static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2648
2609
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2649
2610
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2650
- gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string,
2611
+ gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
2651
2612
  grpc_error_string(error));
2652
2613
  }
2653
2614
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
@@ -2655,8 +2616,8 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2655
2616
  return;
2656
2617
  }
2657
2618
  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. */
2619
+ // start_bdp_ping_locked has not been run yet. Schedule
2620
+ // finish_bdp_ping_locked to be run later.
2660
2621
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2661
2622
  finish_bdp_ping_locked, t, nullptr),
2662
2623
  GRPC_ERROR_REF(error));
@@ -2690,7 +2651,13 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
2690
2651
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2691
2652
  return;
2692
2653
  }
2693
- schedule_bdp_ping_locked(t);
2654
+ if (t->flow_control->bdp_estimator()->accumulator() == 0) {
2655
+ // Block the bdp ping till we receive more data.
2656
+ t->bdp_ping_blocked = true;
2657
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2658
+ } else {
2659
+ schedule_bdp_ping_locked(t);
2660
+ }
2694
2661
  }
2695
2662
 
2696
2663
  void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
@@ -2739,14 +2706,6 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2739
2706
  GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
2740
2707
  g_default_max_pings_without_data = grpc_channel_arg_get_integer(
2741
2708
  &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
2709
  } else if (0 ==
2751
2710
  strcmp(
2752
2711
  args->args[i].key,
@@ -2789,7 +2748,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2789
2748
  &t->init_keepalive_ping_locked);
2790
2749
  }
2791
2750
  } else if (error == GRPC_ERROR_CANCELLED) {
2792
- /* The keepalive ping timer may be cancelled by bdp */
2751
+ // The keepalive ping timer may be cancelled by bdp
2793
2752
  GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
2794
2753
  GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
2795
2754
  grpc_schedule_on_exec_ctx);
@@ -2817,7 +2776,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2817
2776
  }
2818
2777
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2819
2778
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2820
- gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string);
2779
+ gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string.c_str());
2821
2780
  }
2822
2781
  GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
2823
2782
  GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
@@ -2841,11 +2800,11 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2841
2800
  if (error == GRPC_ERROR_NONE) {
2842
2801
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2843
2802
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2844
- gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string);
2803
+ gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
2845
2804
  }
2846
2805
  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. */
2806
+ // start_keepalive_ping_locked has not run yet. Reschedule
2807
+ // finish_keepalive_ping_locked for it to be run later.
2849
2808
  t->combiner->Run(
2850
2809
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2851
2810
  finish_keepalive_ping_locked, t, nullptr),
@@ -2878,8 +2837,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2878
2837
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2879
2838
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2880
2839
  if (error == GRPC_ERROR_NONE) {
2881
- gpr_log(GPR_ERROR, "%s: Keepalive watchdog fired. Closing transport.",
2882
- t->peer_string);
2840
+ gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2841
+ t->peer_string.c_str());
2883
2842
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2884
2843
  close_transport_locked(
2885
2844
  t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
@@ -2888,8 +2847,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2888
2847
  GRPC_STATUS_UNAVAILABLE));
2889
2848
  }
2890
2849
  } else {
2891
- /* The watchdog timer should have been cancelled by
2892
- * finish_keepalive_ping_locked. */
2850
+ // The watchdog timer should have been cancelled by
2851
+ // finish_keepalive_ping_locked.
2893
2852
  if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
2894
2853
  gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
2895
2854
  t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
@@ -2898,21 +2857,22 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2898
2857
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
2899
2858
  }
2900
2859
 
2901
- /*******************************************************************************
2902
- * CALLBACK LOOP
2903
- */
2860
+ //
2861
+ // CALLBACK LOOP
2862
+ //
2904
2863
 
2905
2864
  static void connectivity_state_set(grpc_chttp2_transport* t,
2906
2865
  grpc_connectivity_state state,
2866
+ const absl::Status& status,
2907
2867
  const char* reason) {
2908
2868
  GRPC_CHTTP2_IF_TRACING(
2909
2869
  gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
2910
- t->state_tracker.SetState(state, reason);
2870
+ t->state_tracker.SetState(state, status, reason);
2911
2871
  }
2912
2872
 
2913
- /*******************************************************************************
2914
- * POLLSET STUFF
2915
- */
2873
+ //
2874
+ // POLLSET STUFF
2875
+ //
2916
2876
 
2917
2877
  static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
2918
2878
  grpc_pollset* pollset) {
@@ -2926,9 +2886,9 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
2926
2886
  grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
2927
2887
  }
2928
2888
 
2929
- /*******************************************************************************
2930
- * BYTE STREAM
2931
- */
2889
+ //
2890
+ // BYTE STREAM
2891
+ //
2932
2892
 
2933
2893
  static void reset_byte_stream(void* arg, grpc_error* error) {
2934
2894
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
@@ -3016,7 +2976,7 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
3016
2976
  s->data_parser.parsing_frame = nullptr;
3017
2977
  }
3018
2978
  } else {
3019
- /* Should never reach here. */
2979
+ // Should never reach here.
3020
2980
  GPR_ASSERT(false);
3021
2981
  }
3022
2982
  } else {
@@ -3145,9 +3105,9 @@ void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
3145
3105
 
3146
3106
  } // namespace grpc_core
3147
3107
 
3148
- /*******************************************************************************
3149
- * RESOURCE QUOTAS
3150
- */
3108
+ //
3109
+ // RESOURCE QUOTAS
3110
+ //
3151
3111
 
3152
3112
  static void post_benign_reclaimer(grpc_chttp2_transport* t) {
3153
3113
  if (!t->benign_reclaimer_registered) {
@@ -3182,11 +3142,11 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3182
3142
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3183
3143
  if (error == GRPC_ERROR_NONE &&
3184
3144
  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 */
3145
+ // Channel with no active streams: send a goaway to try and make it
3146
+ // disconnect cleanly
3187
3147
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
3188
3148
  gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
3189
- t->peer_string);
3149
+ t->peer_string.c_str());
3190
3150
  }
3191
3151
  send_goaway(t,
3192
3152
  grpc_error_set_int(
@@ -3197,7 +3157,8 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3197
3157
  gpr_log(GPR_INFO,
3198
3158
  "HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
3199
3159
  " streams",
3200
- t->peer_string, grpc_chttp2_stream_map_size(&t->stream_map));
3160
+ t->peer_string.c_str(),
3161
+ grpc_chttp2_stream_map_size(&t->stream_map));
3201
3162
  }
3202
3163
  t->benign_reclaimer_registered = false;
3203
3164
  if (error != GRPC_ERROR_CANCELLED) {
@@ -3222,8 +3183,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3222
3183
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
3223
3184
  grpc_chttp2_stream_map_rand(&t->stream_map));
3224
3185
  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);
3186
+ gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
3187
+ t->peer_string.c_str(), s->id);
3227
3188
  }
3228
3189
  grpc_chttp2_cancel_stream(
3229
3190
  t, s,
@@ -3231,10 +3192,10 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3231
3192
  GRPC_ERROR_INT_HTTP2_ERROR,
3232
3193
  GRPC_HTTP2_ENHANCE_YOUR_CALM));
3233
3194
  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 */
3195
+ // Since we cancel one stream per destructive reclamation, if
3196
+ // there are more streams left, we can immediately post a new
3197
+ // reclaimer in case the resource quota needs to free more
3198
+ // memory
3238
3199
  post_destructive_reclaimer(t);
3239
3200
  }
3240
3201
  }
@@ -3245,9 +3206,9 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3245
3206
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
3246
3207
  }
3247
3208
 
3248
- /*******************************************************************************
3249
- * MONITORING
3250
- */
3209
+ //
3210
+ // MONITORING
3211
+ //
3251
3212
 
3252
3213
  const char* grpc_chttp2_initiate_write_reason_string(
3253
3214
  grpc_chttp2_initiate_write_reason reason) {
@@ -3284,6 +3245,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
3284
3245
  return "FLOW_CONTROL_UNSTALLED_BY_UPDATE";
3285
3246
  case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
3286
3247
  return "APPLICATION_PING";
3248
+ case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
3249
+ return "BDP_PING";
3287
3250
  case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
3288
3251
  return "KEEPALIVE_PING";
3289
3252
  case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED: