grpc 1.31.1 → 1.35.0.pre1

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 (1104) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +719 -17819
  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/impl/codegen/README.md +22 -0
  8. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  9. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  10. data/include/grpc/impl/codegen/grpc_types.h +10 -8
  11. data/include/grpc/impl/codegen/log.h +0 -2
  12. data/include/grpc/impl/codegen/port_platform.h +28 -56
  13. data/include/grpc/impl/codegen/sync_windows.h +4 -0
  14. data/include/grpc/slice_buffer.h +3 -3
  15. data/include/grpc/support/sync.h +3 -3
  16. data/include/grpc/support/time.h +7 -7
  17. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
  18. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
  19. data/src/core/ext/filters/client_channel/client_channel.cc +2831 -1540
  20. data/src/core/ext/filters/client_channel/client_channel.h +1 -5
  21. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
  22. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  23. data/src/core/ext/filters/client_channel/config_selector.cc +0 -4
  24. data/src/core/ext/filters/client_channel/config_selector.h +40 -8
  25. data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
  26. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  27. data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -8
  28. data/src/core/ext/filters/client_channel/health/health_check_client.h +4 -4
  29. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +7 -9
  30. data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
  31. data/src/core/ext/filters/client_channel/lb_policy.cc +6 -2
  32. data/src/core/ext/filters/client_channel/lb_policy.h +8 -7
  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 +210 -192
  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 -34
  48. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +26 -15
  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_registry.cc +8 -1
  56. data/src/core/ext/filters/client_channel/resolver.cc +3 -1
  57. data/src/core/ext/filters/client_channel/resolver.h +4 -1
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +9 -16
  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_posix.cc +3 -3
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +457 -19
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
  63. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  64. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  65. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +7 -10
  66. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +4 -4
  67. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  68. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +35 -28
  69. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +664 -63
  70. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
  71. data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
  72. data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
  73. data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
  74. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +29 -74
  75. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +12 -11
  76. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
  77. data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
  78. data/src/core/ext/filters/client_channel/server_address.cc +120 -7
  79. data/src/core/ext/filters/client_channel/server_address.h +44 -21
  80. data/src/core/ext/filters/client_channel/service_config.cc +18 -13
  81. data/src/core/ext/filters/client_channel/service_config.h +8 -5
  82. data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
  83. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  84. data/src/core/ext/filters/client_channel/service_config_parser.cc +8 -6
  85. data/src/core/ext/filters/client_channel/service_config_parser.h +8 -5
  86. data/src/core/ext/filters/client_channel/subchannel.cc +115 -87
  87. data/src/core/ext/filters/client_channel/subchannel.h +30 -24
  88. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
  89. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
  90. data/src/core/ext/filters/deadline/deadline_filter.cc +87 -79
  91. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  92. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
  93. data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
  94. data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
  95. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  96. data/src/core/ext/filters/max_age/max_age_filter.cc +3 -2
  97. data/src/core/ext/filters/message_size/message_size_filter.cc +3 -2
  98. data/src/core/ext/filters/message_size/message_size_filter.h +2 -1
  99. data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
  100. data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
  101. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
  102. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +19 -2
  103. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
  104. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
  105. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +34 -47
  106. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +200 -100
  107. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -1
  108. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -2
  109. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +16 -9
  110. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
  111. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  112. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +267 -319
  113. data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -3
  114. data/src/core/ext/transport/chttp2/transport/flow_control.h +13 -3
  115. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  116. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  117. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
  118. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
  119. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
  120. data/src/core/ext/transport/chttp2/transport/internal.h +10 -2
  121. data/src/core/ext/transport/chttp2/transport/parsing.cc +19 -31
  122. data/src/core/ext/transport/chttp2/transport/writing.cc +8 -8
  123. data/src/core/ext/transport/inproc/inproc_transport.cc +52 -18
  124. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
  125. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  126. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
  127. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +244 -0
  128. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +865 -0
  129. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  130. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +253 -0
  131. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +458 -0
  132. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1818 -0
  133. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
  134. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +77 -0
  135. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +55 -0
  136. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +349 -0
  137. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
  138. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +428 -0
  139. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
  140. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +88 -0
  141. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +310 -0
  142. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +991 -0
  143. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
  144. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +388 -0
  145. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  146. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +78 -0
  147. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
  148. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +149 -0
  149. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
  150. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +839 -0
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +752 -0
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +88 -0
  155. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +176 -0
  156. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +730 -0
  157. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
  158. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +65 -0
  159. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +8 -8
  160. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +95 -0
  161. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +36 -0
  162. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +92 -0
  163. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
  164. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +243 -0
  165. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  166. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +305 -0
  167. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  168. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +367 -0
  169. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
  170. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +73 -0
  171. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +128 -0
  172. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +512 -0
  173. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +155 -0
  174. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +591 -0
  175. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
  176. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +107 -0
  177. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +178 -0
  178. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +662 -0
  179. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
  180. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +220 -0
  181. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +900 -0
  182. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3640 -0
  183. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
  184. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +159 -0
  185. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
  186. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +122 -0
  187. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +364 -0
  188. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1475 -0
  189. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
  190. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
  191. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +110 -0
  192. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +426 -0
  193. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +76 -0
  194. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +236 -0
  195. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +147 -0
  196. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +621 -0
  197. data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +6 -7
  198. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +56 -0
  199. data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +6 -5
  200. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +56 -0
  201. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +139 -0
  202. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +487 -0
  203. data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +6 -7
  204. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
  205. data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +6 -7
  206. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +56 -0
  207. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
  208. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +151 -0
  209. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +6 -7
  210. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +56 -0
  211. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +6 -7
  212. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +56 -0
  213. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  214. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +128 -0
  215. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  216. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +84 -0
  217. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  218. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +78 -0
  219. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
  220. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +166 -0
  221. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +54 -0
  222. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +146 -0
  223. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  224. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +207 -0
  225. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  226. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +301 -0
  227. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  228. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +283 -0
  229. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
  230. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +9 -8
  231. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
  232. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +99 -0
  233. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
  234. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +130 -0
  235. data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +7 -6
  236. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +68 -0
  237. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -0
  238. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
  239. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +830 -0
  240. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
  241. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +842 -0
  242. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  243. data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
  244. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  245. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
  246. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +103 -103
  247. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
  248. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  249. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
  250. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  251. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
  252. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
  253. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +23 -4
  254. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  255. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
  256. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
  257. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
  258. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  259. data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
  260. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
  261. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
  262. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
  263. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
  264. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
  265. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
  266. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  267. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +13 -0
  268. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
  269. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
  270. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  271. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
  272. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
  273. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
  274. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
  275. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
  276. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
  277. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  278. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +60 -0
  279. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +28 -0
  280. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +60 -0
  281. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +52 -0
  282. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +143 -0
  283. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +42 -0
  284. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +84 -0
  285. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +36 -0
  286. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +94 -0
  287. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +54 -0
  288. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +173 -0
  289. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +36 -0
  290. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +92 -0
  291. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
  292. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
  293. data/src/core/ext/upb-generated/validate/validate.upb.c +68 -68
  294. data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
  295. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  296. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  297. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  298. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  299. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
  300. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  301. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  302. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  303. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
  304. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  305. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  306. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  307. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
  308. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  309. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  310. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  311. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  312. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  313. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
  314. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
  315. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  316. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  317. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  318. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  319. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  320. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  321. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  322. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  323. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  324. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  325. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  326. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  327. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
  328. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
  329. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
  330. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  331. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  332. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  333. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
  334. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  335. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
  336. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  337. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  338. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  339. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  340. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  341. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  342. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  343. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
  344. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  345. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
  346. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  347. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
  348. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  349. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
  350. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  351. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
  352. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
  353. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  354. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  355. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
  356. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  357. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
  358. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  359. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  360. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  361. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
  362. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  363. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
  364. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  365. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
  366. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  367. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  368. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  369. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  370. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  371. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
  372. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
  373. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
  374. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  375. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
  376. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  377. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
  378. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  379. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
  380. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  381. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  382. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  383. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  384. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  385. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  386. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  387. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  388. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  389. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  390. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  391. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
  392. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  393. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  394. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  395. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  396. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  397. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  398. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  399. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  400. data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -9
  401. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  402. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  403. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  404. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  405. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  406. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  407. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  408. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  409. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  410. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  411. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
  412. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  413. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  414. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  415. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
  416. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  417. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  418. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  419. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  420. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  421. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
  422. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  423. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  424. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  425. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  426. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  427. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  428. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  429. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  430. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  431. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  432. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  433. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  434. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  435. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  436. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  437. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
  438. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
  439. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
  440. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
  441. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
  442. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
  443. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
  444. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
  445. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
  446. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
  447. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
  448. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
  449. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
  450. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  451. data/src/core/ext/xds/certificate_provider_factory.h +61 -0
  452. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  453. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  454. data/src/core/ext/xds/certificate_provider_store.cc +87 -0
  455. data/src/core/ext/xds/certificate_provider_store.h +112 -0
  456. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
  457. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
  458. data/src/core/ext/xds/xds_api.cc +2308 -0
  459. data/src/core/ext/xds/xds_api.h +469 -0
  460. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +208 -19
  461. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +31 -11
  462. data/src/core/ext/xds/xds_certificate_provider.cc +299 -0
  463. data/src/core/ext/xds/xds_certificate_provider.h +112 -0
  464. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
  465. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +656 -865
  466. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +126 -99
  467. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +61 -18
  468. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +38 -10
  469. data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
  470. data/src/core/lib/channel/channel_args.cc +9 -8
  471. data/src/core/lib/channel/channel_args.h +0 -1
  472. data/src/core/lib/channel/channel_trace.cc +4 -2
  473. data/src/core/lib/channel/channel_trace.h +1 -1
  474. data/src/core/lib/channel/channelz.cc +37 -74
  475. data/src/core/lib/channel/channelz.h +14 -23
  476. data/src/core/lib/channel/channelz_registry.cc +15 -12
  477. data/src/core/lib/channel/channelz_registry.h +3 -1
  478. data/src/core/lib/channel/handshaker.cc +2 -2
  479. data/src/core/lib/channel/handshaker.h +2 -2
  480. data/src/core/lib/compression/compression.cc +8 -4
  481. data/src/core/lib/compression/compression_args.cc +3 -2
  482. data/src/core/lib/compression/compression_internal.cc +10 -5
  483. data/src/core/lib/compression/compression_internal.h +2 -1
  484. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  485. data/src/core/lib/debug/stats.h +2 -2
  486. data/src/core/lib/debug/stats_data.cc +1 -0
  487. data/src/core/lib/debug/stats_data.h +13 -13
  488. data/src/core/lib/gpr/alloc.cc +3 -2
  489. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  490. data/src/core/lib/gpr/log.cc +53 -16
  491. data/src/core/lib/gpr/log_linux.cc +19 -3
  492. data/src/core/lib/gpr/log_posix.cc +15 -1
  493. data/src/core/lib/gpr/log_windows.cc +18 -4
  494. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  495. data/src/core/lib/gpr/spinlock.h +10 -2
  496. data/src/core/lib/gpr/string.cc +23 -22
  497. data/src/core/lib/gpr/string.h +5 -6
  498. data/src/core/lib/gpr/sync.cc +4 -4
  499. data/src/core/lib/gpr/sync_posix.cc +2 -8
  500. data/src/core/lib/gpr/time.cc +12 -12
  501. data/src/core/lib/gpr/time_precise.cc +5 -2
  502. data/src/core/lib/gpr/time_precise.h +6 -2
  503. data/src/core/lib/gpr/tls.h +4 -0
  504. data/src/core/lib/gpr/tls_msvc.h +2 -0
  505. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  506. data/src/core/lib/gpr/useful.h +5 -4
  507. data/src/core/lib/gprpp/arena.h +3 -2
  508. data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
  509. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  510. data/src/core/lib/gprpp/examine_stack.h +46 -0
  511. data/src/core/lib/gprpp/fork.cc +2 -2
  512. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  513. data/src/core/lib/gprpp/orphanable.h +4 -8
  514. data/src/core/lib/gprpp/ref_counted.h +91 -68
  515. data/src/core/lib/gprpp/ref_counted_ptr.h +166 -7
  516. data/src/core/lib/gprpp/stat.h +38 -0
  517. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  518. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  519. data/src/core/lib/gprpp/thd.h +2 -2
  520. data/src/core/lib/gprpp/thd_posix.cc +42 -37
  521. data/src/core/lib/gprpp/thd_windows.cc +3 -1
  522. data/src/core/lib/http/httpcli.cc +1 -1
  523. data/src/core/lib/http/httpcli.h +2 -3
  524. data/src/core/lib/http/httpcli_security_connector.cc +1 -1
  525. data/src/core/lib/http/parser.cc +47 -27
  526. data/src/core/lib/iomgr/call_combiner.cc +8 -5
  527. data/src/core/lib/iomgr/combiner.cc +2 -1
  528. data/src/core/lib/iomgr/endpoint.cc +5 -1
  529. data/src/core/lib/iomgr/endpoint.h +8 -4
  530. data/src/core/lib/iomgr/endpoint_cfstream.cc +36 -11
  531. data/src/core/lib/iomgr/error.cc +17 -12
  532. data/src/core/lib/iomgr/error_internal.h +1 -1
  533. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
  534. data/src/core/lib/iomgr/ev_epollex_linux.cc +25 -17
  535. data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
  536. data/src/core/lib/iomgr/ev_posix.cc +0 -2
  537. data/src/core/lib/iomgr/exec_ctx.cc +1 -1
  538. data/src/core/lib/iomgr/exec_ctx.h +16 -12
  539. data/src/core/lib/iomgr/executor.cc +2 -1
  540. data/src/core/lib/iomgr/executor.h +1 -1
  541. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  542. data/src/core/lib/iomgr/executor/threadpool.h +4 -4
  543. data/src/core/lib/iomgr/iomgr.cc +1 -11
  544. data/src/core/lib/iomgr/iomgr.h +0 -10
  545. data/src/core/lib/iomgr/load_file.h +1 -1
  546. data/src/core/lib/iomgr/lockfree_event.cc +19 -14
  547. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  548. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +128 -44
  549. data/src/core/lib/iomgr/parse_address.h +77 -0
  550. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  551. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
  552. data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
  553. data/src/core/lib/iomgr/python_util.h +4 -4
  554. data/src/core/lib/iomgr/resolve_address.cc +4 -4
  555. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
  556. data/src/core/lib/iomgr/resource_quota.cc +4 -4
  557. data/src/core/lib/iomgr/sockaddr_utils.cc +12 -11
  558. data/src/core/lib/iomgr/sockaddr_utils.h +3 -2
  559. data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
  560. data/src/core/lib/iomgr/socket_mutator.cc +3 -2
  561. data/src/core/lib/iomgr/tcp_client.cc +3 -3
  562. data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
  563. data/src/core/lib/iomgr/tcp_custom.cc +53 -32
  564. data/src/core/lib/iomgr/tcp_posix.cc +43 -21
  565. data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
  566. data/src/core/lib/iomgr/tcp_windows.cc +26 -10
  567. data/src/core/lib/iomgr/timer_custom.cc +5 -5
  568. data/src/core/lib/iomgr/timer_generic.cc +3 -3
  569. data/src/core/lib/iomgr/timer_manager.cc +2 -2
  570. data/src/core/lib/iomgr/udp_server.cc +1 -2
  571. data/src/core/lib/iomgr/udp_server.h +1 -2
  572. data/src/core/lib/iomgr/unix_sockets_posix.cc +32 -21
  573. data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
  574. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
  575. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  576. data/src/core/lib/json/json.h +12 -2
  577. data/src/core/lib/json/json_reader.cc +8 -4
  578. data/src/core/lib/json/json_util.cc +58 -0
  579. data/src/core/lib/json/json_util.h +204 -0
  580. data/src/core/lib/json/json_writer.cc +2 -1
  581. data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
  582. data/src/core/lib/security/authorization/authorization_engine.h +84 -0
  583. data/src/core/lib/security/authorization/evaluate_args.cc +148 -0
  584. data/src/core/lib/security/authorization/evaluate_args.h +59 -0
  585. data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
  586. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +44 -0
  587. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +69 -0
  588. data/src/core/lib/security/authorization/mock_cel/cel_value.h +97 -0
  589. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
  590. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +57 -0
  591. data/src/core/lib/security/context/security_context.cc +4 -3
  592. data/src/core/lib/security/context/security_context.h +3 -1
  593. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  594. data/src/core/lib/security/credentials/credentials.cc +7 -7
  595. data/src/core/lib/security/credentials/credentials.h +3 -3
  596. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
  597. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
  598. data/src/core/lib/security/credentials/external/aws_request_signer.cc +213 -0
  599. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  600. data/src/core/lib/security/credentials/external/external_account_credentials.cc +497 -0
  601. data/src/core/lib/security/credentials/external/external_account_credentials.h +120 -0
  602. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
  603. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +48 -0
  604. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
  605. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +58 -0
  606. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
  607. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +74 -50
  608. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
  609. data/src/core/lib/security/credentials/jwt/json_token.cc +6 -3
  610. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  611. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -4
  612. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +39 -46
  613. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
  614. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
  615. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -5
  616. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  617. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +346 -0
  618. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
  619. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +399 -0
  620. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +138 -0
  621. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +78 -150
  622. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +57 -187
  623. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
  624. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  625. data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
  626. data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
  627. data/src/core/lib/security/credentials/xds/xds_credentials.cc +175 -0
  628. data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
  629. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
  630. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -15
  631. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
  632. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +87 -0
  633. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  634. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  635. data/src/core/lib/security/security_connector/local/local_security_connector.cc +3 -3
  636. data/src/core/lib/security/security_connector/security_connector.cc +4 -3
  637. data/src/core/lib/security/security_connector/security_connector.h +4 -2
  638. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
  639. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  640. data/src/core/lib/security/security_connector/ssl_utils.h +19 -19
  641. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +342 -279
  642. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +105 -61
  643. data/src/core/lib/security/transport/secure_endpoint.cc +9 -3
  644. data/src/core/lib/security/transport/security_handshaker.cc +3 -3
  645. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  646. data/src/core/lib/security/util/json_util.h +1 -0
  647. data/src/core/lib/slice/slice.cc +7 -4
  648. data/src/core/lib/slice/slice_buffer.cc +2 -1
  649. data/src/core/lib/slice/slice_intern.cc +6 -7
  650. data/src/core/lib/slice/slice_internal.h +2 -2
  651. data/src/core/lib/surface/call.cc +53 -44
  652. data/src/core/lib/surface/call.h +2 -1
  653. data/src/core/lib/surface/call_details.cc +8 -8
  654. data/src/core/lib/surface/channel.cc +53 -61
  655. data/src/core/lib/surface/channel.h +21 -5
  656. data/src/core/lib/surface/channel_init.cc +1 -1
  657. data/src/core/lib/surface/completion_queue.cc +38 -294
  658. data/src/core/lib/surface/completion_queue.h +16 -24
  659. data/src/core/lib/surface/init.cc +32 -16
  660. data/src/core/lib/surface/lame_client.cc +20 -46
  661. data/src/core/lib/surface/lame_client.h +4 -0
  662. data/src/core/lib/surface/server.cc +1107 -1239
  663. data/src/core/lib/surface/server.h +394 -86
  664. data/src/core/lib/surface/validate_metadata.h +3 -0
  665. data/src/core/lib/surface/version.cc +2 -2
  666. data/src/core/lib/transport/authority_override.cc +40 -0
  667. data/src/core/lib/transport/authority_override.h +37 -0
  668. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  669. data/src/core/lib/transport/bdp_estimator.h +2 -1
  670. data/src/core/lib/transport/byte_stream.h +3 -3
  671. data/src/core/lib/transport/connectivity_state.cc +18 -13
  672. data/src/core/lib/transport/connectivity_state.h +26 -12
  673. data/src/core/lib/transport/error_utils.cc +13 -0
  674. data/src/core/lib/transport/error_utils.h +7 -1
  675. data/src/core/lib/transport/metadata.cc +11 -1
  676. data/src/core/lib/transport/metadata.h +2 -2
  677. data/src/core/lib/transport/metadata_batch.h +4 -4
  678. data/src/core/lib/transport/static_metadata.cc +296 -277
  679. data/src/core/lib/transport/static_metadata.h +80 -73
  680. data/src/core/lib/transport/status_metadata.cc +4 -3
  681. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  682. data/src/core/lib/transport/transport.cc +5 -3
  683. data/src/core/lib/transport/transport.h +15 -8
  684. data/src/core/lib/uri/uri_parser.cc +131 -247
  685. data/src/core/lib/uri/uri_parser.h +58 -20
  686. data/src/core/plugin_registry/grpc_plugin_registry.cc +41 -20
  687. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  688. data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
  689. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  690. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +49 -26
  691. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  692. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
  693. data/src/core/tsi/fake_transport_security.cc +6 -3
  694. data/src/core/tsi/local_transport_security.cc +5 -1
  695. data/src/core/tsi/local_transport_security.h +6 -7
  696. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
  697. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  698. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
  699. data/src/core/tsi/ssl_transport_security.cc +81 -67
  700. data/src/core/tsi/ssl_transport_security.h +9 -6
  701. data/src/core/tsi/transport_security.cc +10 -8
  702. data/src/core/tsi/transport_security_interface.h +1 -1
  703. data/src/ruby/ext/grpc/extconf.rb +1 -1
  704. data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
  705. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  706. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -18
  707. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +74 -44
  708. data/src/ruby/lib/grpc/version.rb +1 -1
  709. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -0
  710. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
  711. data/src/ruby/spec/channel_credentials_spec.rb +10 -0
  712. data/src/ruby/spec/generic/active_call_spec.rb +19 -8
  713. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
  714. data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
  715. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  716. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  717. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  718. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  719. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  720. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  721. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +166 -0
  722. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  723. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  724. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  725. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  726. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  727. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  728. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  729. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  730. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  731. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  732. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  733. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  734. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  735. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  736. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  737. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  738. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  739. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  740. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  741. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  742. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  743. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  744. data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
  745. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  746. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
  747. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  748. data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
  749. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  750. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
  751. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
  752. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
  753. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  754. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +270 -0
  755. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -0
  756. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
  757. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
  758. data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
  759. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
  760. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
  761. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
  762. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
  763. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  764. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1945 -0
  765. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  766. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  767. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  768. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +196 -0
  769. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
  770. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +89 -0
  771. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  772. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
  773. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  774. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
  775. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  776. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +149 -0
  777. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
  778. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  779. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  780. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  781. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
  782. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  783. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  784. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
  785. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  786. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  787. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  788. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  789. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  790. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  791. data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
  792. data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
  793. data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
  794. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
  795. data/third_party/abseil-cpp/absl/hash/internal/hash.h +996 -0
  796. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  797. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  798. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  799. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  800. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  801. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
  802. data/third_party/abseil-cpp/absl/status/status.cc +445 -0
  803. data/third_party/abseil-cpp/absl/status/status.h +817 -0
  804. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  805. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  806. data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
  807. data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
  808. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  809. data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
  810. data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
  811. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  812. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  813. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  814. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  815. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  816. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +173 -0
  817. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  818. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  819. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  820. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  821. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  822. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  823. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  824. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  825. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  826. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  827. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  828. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  829. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  830. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  831. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  832. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  833. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  834. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  835. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  836. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  837. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  838. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  839. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  840. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  841. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  842. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  843. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  844. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
  845. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  846. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
  847. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +249 -0
  848. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  849. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  850. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +492 -0
  851. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
  852. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
  853. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -0
  854. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  855. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  856. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  857. data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
  858. data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
  859. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  860. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
  861. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  862. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  863. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  864. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  865. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  866. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  867. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  868. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
  869. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
  870. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  871. data/third_party/abseil-cpp/absl/time/time.h +15 -16
  872. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  873. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  874. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  875. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  876. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  877. data/third_party/abseil-cpp/absl/types/variant.h +861 -0
  878. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  879. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  880. data/third_party/boringssl-with-bazel/err_data.c +479 -467
  881. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -6
  882. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  883. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
  884. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  885. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  886. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
  887. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
  888. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  889. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  890. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
  891. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  892. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +30 -10
  893. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +56 -22
  894. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
  895. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +543 -0
  896. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +237 -0
  897. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +118 -49
  898. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +267 -95
  899. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +210 -34
  900. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  901. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +3 -3
  902. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +6 -4
  903. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
  904. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
  905. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +7 -2
  906. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +21 -18
  907. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
  908. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +24 -3
  909. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +3 -3
  910. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  911. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +3 -3
  912. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +29 -35
  913. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +13 -2
  914. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
  915. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
  916. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +2 -2
  917. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
  918. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
  919. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
  920. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  921. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  922. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
  923. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +7 -3
  924. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +2 -2
  925. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  926. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  927. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +55 -8
  928. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -1
  929. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  930. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +54 -0
  931. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +0 -1
  932. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +6 -3
  933. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  934. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +6 -0
  935. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +1 -1
  936. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  937. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +12 -0
  938. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -0
  939. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +4 -1
  940. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  941. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  942. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +103 -10
  943. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +5 -2
  944. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +42 -14
  945. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +199 -78
  946. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +482 -432
  947. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  948. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
  949. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +18 -18
  950. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -3
  951. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  952. data/third_party/boringssl-with-bazel/src/ssl/internal.h +49 -10
  953. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
  954. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
  955. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
  956. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +77 -0
  957. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
  958. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +250 -20
  959. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -2
  960. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +57 -19
  961. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +140 -41
  962. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  963. data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
  964. data/third_party/upb/upb/decode.c +275 -145
  965. data/third_party/upb/upb/decode.h +20 -1
  966. data/third_party/upb/upb/decode.int.h +163 -0
  967. data/third_party/upb/upb/decode_fast.c +1040 -0
  968. data/third_party/upb/upb/decode_fast.h +126 -0
  969. data/third_party/upb/upb/def.c +2178 -0
  970. data/third_party/upb/upb/def.h +315 -0
  971. data/third_party/upb/upb/def.hpp +439 -0
  972. data/third_party/upb/upb/encode.c +229 -171
  973. data/third_party/upb/upb/encode.h +27 -2
  974. data/third_party/upb/upb/json_decode.c +1443 -0
  975. data/third_party/upb/upb/json_decode.h +23 -0
  976. data/third_party/upb/upb/json_encode.c +713 -0
  977. data/third_party/upb/upb/json_encode.h +36 -0
  978. data/third_party/upb/upb/msg.c +167 -88
  979. data/third_party/upb/upb/msg.h +175 -35
  980. data/third_party/upb/upb/port_def.inc +75 -62
  981. data/third_party/upb/upb/port_undef.inc +3 -7
  982. data/third_party/upb/upb/reflection.c +408 -0
  983. data/third_party/upb/upb/reflection.h +168 -0
  984. data/third_party/upb/upb/table.c +34 -208
  985. data/third_party/upb/upb/table.int.h +14 -14
  986. data/third_party/upb/upb/text_encode.c +421 -0
  987. data/third_party/upb/upb/text_encode.h +38 -0
  988. data/third_party/upb/upb/upb.c +33 -54
  989. data/third_party/upb/upb/upb.h +56 -1
  990. data/third_party/upb/upb/upb.hpp +6 -4
  991. data/third_party/upb/upb/upb.int.h +29 -0
  992. metadata +508 -172
  993. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -938
  994. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
  995. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1143
  996. data/src/core/ext/filters/client_channel/parse_address.h +0 -53
  997. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
  998. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  999. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -353
  1000. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -142
  1001. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -2110
  1002. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -345
  1003. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  1004. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
  1005. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  1006. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -34
  1007. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  1008. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -429
  1009. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  1010. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -198
  1011. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  1012. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -388
  1013. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -52
  1014. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  1015. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1453
  1016. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  1017. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -226
  1018. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -35
  1019. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  1020. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -55
  1021. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -323
  1022. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  1023. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -334
  1024. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +0 -35
  1025. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -79
  1026. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  1027. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -891
  1028. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  1029. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -328
  1030. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  1031. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -71
  1032. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  1033. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -649
  1034. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  1035. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -693
  1036. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -36
  1037. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  1038. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  1039. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -536
  1040. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -88
  1041. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  1042. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -386
  1043. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -52
  1044. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  1045. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -224
  1046. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  1047. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -32
  1048. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  1049. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -273
  1050. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  1051. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -332
  1052. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -52
  1053. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  1054. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -415
  1055. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  1056. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -32
  1057. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  1058. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -538
  1059. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  1060. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -111
  1061. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -52
  1062. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  1063. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -204
  1064. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  1065. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -32
  1066. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  1067. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2984
  1068. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  1069. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -135
  1070. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -52
  1071. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  1072. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -732
  1073. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  1074. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1167
  1075. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -33
  1076. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  1077. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  1078. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  1079. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -49
  1080. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  1081. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -136
  1082. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  1083. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -145
  1084. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  1085. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  1086. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  1087. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  1088. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -39
  1089. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
  1090. data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -50
  1091. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -111
  1092. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -61
  1093. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  1094. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -250
  1095. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  1096. data/src/core/lib/gprpp/map.h +0 -53
  1097. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  1098. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  1099. data/src/core/lib/slice/slice_hash_table.h +0 -199
  1100. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  1101. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  1102. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  1103. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  1104. data/third_party/upb/upb/port.c +0 -26
@@ -24,12 +24,13 @@
24
24
  #include <grpc/impl/codegen/grpc_types.h>
25
25
 
26
26
  #include "src/core/lib/iomgr/error.h"
27
+ #include "src/core/lib/surface/server.h"
27
28
 
28
29
  namespace grpc_core {
29
30
 
30
31
  /// Adds a port to \a server. Sets \a port_num to the port number.
31
32
  /// Takes ownership of \a args.
32
- grpc_error* Chttp2ServerAddPort(grpc_server* server, const char* addr,
33
+ grpc_error* Chttp2ServerAddPort(Server* server, const char* addr,
33
34
  grpc_channel_args* args, int* port_num);
34
35
 
35
36
  } // namespace grpc_core
@@ -33,8 +33,8 @@ int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) {
33
33
  GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2,
34
34
  (server, addr));
35
35
  grpc_error* err = grpc_core::Chttp2ServerAddPort(
36
- server, addr,
37
- grpc_channel_args_copy(grpc_server_get_channel_args(server)), &port_num);
36
+ server->core_server.get(), addr,
37
+ grpc_channel_args_copy(server->core_server->channel_args()), &port_num);
38
38
  if (err != GRPC_ERROR_NONE) {
39
39
  const char* msg = grpc_error_string(err);
40
40
  gpr_log(GPR_ERROR, "%s", msg);
@@ -41,22 +41,29 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
41
41
  GPR_ASSERT(reserved == nullptr);
42
42
 
43
43
  grpc_core::ExecCtx exec_ctx;
44
+ grpc_core::Server* core_server = server->core_server.get();
44
45
 
46
+ const grpc_channel_args* server_args = core_server->channel_args();
45
47
  std::string name = absl::StrCat("fd:", fd);
46
- grpc_endpoint* server_endpoint =
47
- grpc_tcp_create(grpc_fd_create(fd, name.c_str(), true),
48
- grpc_server_get_channel_args(server), name.c_str());
48
+ grpc_endpoint* server_endpoint = grpc_tcp_create(
49
+ grpc_fd_create(fd, name.c_str(), true), server_args, name.c_str());
49
50
 
50
- const grpc_channel_args* server_args = grpc_server_get_channel_args(server);
51
51
  grpc_transport* transport = grpc_create_chttp2_transport(
52
52
  server_args, server_endpoint, false /* is_client */);
53
53
 
54
- for (grpc_pollset* pollset : grpc_server_get_pollsets(server)) {
55
- grpc_endpoint_add_to_pollset(server_endpoint, pollset);
54
+ grpc_error* error =
55
+ core_server->SetupTransport(transport, nullptr, server_args, nullptr);
56
+ if (error == GRPC_ERROR_NONE) {
57
+ for (grpc_pollset* pollset : core_server->pollsets()) {
58
+ grpc_endpoint_add_to_pollset(server_endpoint, pollset);
59
+ }
60
+ grpc_chttp2_transport_start_reading(transport, nullptr, nullptr);
61
+ } else {
62
+ gpr_log(GPR_ERROR, "Failed to create channel: %s",
63
+ grpc_error_string(error));
64
+ GRPC_ERROR_UNREF(error);
65
+ grpc_transport_destroy(transport);
56
66
  }
57
-
58
- grpc_server_setup_transport(server, transport, nullptr, server_args, nullptr);
59
- grpc_chttp2_transport_start_reading(transport, nullptr, nullptr);
60
67
  }
61
68
 
62
69
  #else // !GPR_SUPPORT_CHANNELS_FROM_FD
@@ -68,10 +68,11 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
68
68
  args_to_add[0] = grpc_server_credentials_to_arg(creds);
69
69
  args_to_add[1] = grpc_security_connector_to_arg(sc.get());
70
70
  args =
71
- grpc_channel_args_copy_and_add(grpc_server_get_channel_args(server),
71
+ grpc_channel_args_copy_and_add(server->core_server->channel_args(),
72
72
  args_to_add, GPR_ARRAY_SIZE(args_to_add));
73
73
  // Add server port.
74
- err = grpc_core::Chttp2ServerAddPort(server, addr, args, &port_num);
74
+ err = grpc_core::Chttp2ServerAddPort(server->core_server.get(), addr, args,
75
+ &port_num);
75
76
  done:
76
77
  sc.reset(DEBUG_LOCATION, "server");
77
78
 
@@ -66,16 +66,16 @@ static bool input_is_valid(const uint8_t* input_ptr, size_t length) {
66
66
  return true;
67
67
  }
68
68
 
69
- #define COMPOSE_OUTPUT_BYTE_0(input_ptr) \
70
- (uint8_t)((decode_table[input_ptr[0]] << 2) | \
71
- (decode_table[input_ptr[1]] >> 4))
69
+ #define COMPOSE_OUTPUT_BYTE_0(input_ptr) \
70
+ (uint8_t)((decode_table[(input_ptr)[0]] << 2) | \
71
+ (decode_table[(input_ptr)[1]] >> 4))
72
72
 
73
- #define COMPOSE_OUTPUT_BYTE_1(input_ptr) \
74
- (uint8_t)((decode_table[input_ptr[1]] << 4) | \
75
- (decode_table[input_ptr[2]] >> 2))
73
+ #define COMPOSE_OUTPUT_BYTE_1(input_ptr) \
74
+ (uint8_t)((decode_table[(input_ptr)[1]] << 4) | \
75
+ (decode_table[(input_ptr)[2]] >> 2))
76
76
 
77
77
  #define COMPOSE_OUTPUT_BYTE_2(input_ptr) \
78
- (uint8_t)((decode_table[input_ptr[2]] << 6) | decode_table[input_ptr[3]])
78
+ (uint8_t)((decode_table[(input_ptr)[2]] << 6) | decode_table[(input_ptr)[3]])
79
79
 
80
80
  // By RFC 4648, if the length of the encoded string without padding is 4n+r,
81
81
  // the length of decoded string is: 1) 3n if r = 0, 2) 3n + 1 if r = 2, 3, or
@@ -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,15 +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
- /* lie: use transient failure from the transport to indicate goaway has been
1109
- * received */
1110
- 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");
1111
1098
  }
1112
1099
 
1113
1100
  static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1114
1101
  grpc_chttp2_stream* s;
1115
- /* 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
1116
1103
  if (t->goaway_error != GRPC_ERROR_NONE) {
1117
1104
  while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1118
1105
  grpc_chttp2_cancel_stream(
@@ -1123,14 +1110,14 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1123
1110
  }
1124
1111
  return;
1125
1112
  }
1126
- /* start streams where we have free grpc_chttp2_stream ids and free
1127
- * concurrency */
1113
+ // start streams where we have free grpc_chttp2_stream ids and free
1114
+ // * concurrency
1128
1115
  while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
1129
1116
  grpc_chttp2_stream_map_size(&t->stream_map) <
1130
1117
  t->settings[GRPC_PEER_SETTINGS]
1131
1118
  [GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
1132
1119
  grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1133
- /* safe since we can't (legally) be parsing this stream yet */
1120
+ // safe since we can't (legally) be parsing this stream yet
1134
1121
  GRPC_CHTTP2_IF_TRACING(gpr_log(
1135
1122
  GPR_INFO,
1136
1123
  "HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d",
@@ -1142,6 +1129,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1142
1129
 
1143
1130
  if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
1144
1131
  connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
1132
+ absl::Status(absl::StatusCode::kUnavailable,
1133
+ "Transport Stream IDs exhausted"),
1145
1134
  "no_more_stream_ids");
1146
1135
  }
1147
1136
 
@@ -1150,7 +1139,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1150
1139
  grpc_chttp2_mark_stream_writable(t, s);
1151
1140
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
1152
1141
  }
1153
- /* cancel out streams that will never be started */
1142
+ // cancel out streams that will never be started
1154
1143
  if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
1155
1144
  while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1156
1145
  grpc_chttp2_cancel_stream(
@@ -1162,12 +1151,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1162
1151
  }
1163
1152
  }
1164
1153
 
1165
- /* Flag that this closure barrier may be covering a write in a pollset, and so
1166
- we should not complete this closure until we can prove that the write got
1167
- 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
1168
1157
  #define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
1169
- /* First bit of the reference count, stored in the high order bits (with the low
1170
- 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)
1171
1160
  #define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
1172
1161
 
1173
1162
  static grpc_closure* add_closure_barrier(grpc_closure* closure) {
@@ -1211,7 +1200,7 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1211
1200
  "Error in HTTP transport completing operation");
1212
1201
  closure->error_data.error = grpc_error_set_str(
1213
1202
  closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
1214
- grpc_slice_from_copied_string(t->peer_string));
1203
+ grpc_slice_from_copied_string(t->peer_string.c_str()));
1215
1204
  }
1216
1205
  closure->error_data.error =
1217
1206
  grpc_error_add_child(closure->error_data.error, error);
@@ -1259,7 +1248,7 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1259
1248
  grpc_chttp2_stream* s) {
1260
1249
  for (;;) {
1261
1250
  if (s->fetching_send_message == nullptr) {
1262
- /* Stream was cancelled before message fetch completed */
1251
+ // Stream was cancelled before message fetch completed
1263
1252
  abort(); /* TODO(ctiller): what cleanup here? */
1264
1253
  return; /* early out */
1265
1254
  }
@@ -1389,7 +1378,7 @@ static void perform_stream_op_locked(void* stream_op,
1389
1378
  GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
1390
1379
  on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1391
1380
 
1392
- /* Identify stream compression */
1381
+ // Identify stream compression
1393
1382
  if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
1394
1383
  .content_encoding == nullptr ||
1395
1384
  grpc_stream_compression_method_parse(
@@ -1408,68 +1397,48 @@ static void perform_stream_op_locked(void* stream_op,
1408
1397
  s->send_initial_metadata_finished = add_closure_barrier(on_complete);
1409
1398
  s->send_initial_metadata =
1410
1399
  op_payload->send_initial_metadata.send_initial_metadata;
1411
- const size_t metadata_size =
1412
- grpc_metadata_batch_size(s->send_initial_metadata);
1413
- const size_t metadata_peer_limit =
1414
- t->settings[GRPC_PEER_SETTINGS]
1415
- [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
1416
1400
  if (t->is_client) {
1417
1401
  s->deadline = GPR_MIN(s->deadline, s->send_initial_metadata->deadline);
1418
1402
  }
1419
- if (metadata_size > metadata_peer_limit) {
1420
- grpc_chttp2_cancel_stream(
1421
- t, s,
1422
- grpc_error_set_int(
1423
- grpc_error_set_int(
1424
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1425
- "to-be-sent initial metadata size "
1426
- "exceeds peer limit"),
1427
- GRPC_ERROR_INT_SIZE,
1428
- static_cast<intptr_t>(metadata_size)),
1429
- GRPC_ERROR_INT_LIMIT,
1430
- static_cast<intptr_t>(metadata_peer_limit)),
1431
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
1432
- } else {
1433
- if (contains_non_ok_status(s->send_initial_metadata)) {
1434
- s->seen_error = true;
1435
- }
1436
- if (!s->write_closed) {
1437
- if (t->is_client) {
1438
- if (t->closed_with_error == GRPC_ERROR_NONE) {
1439
- GPR_ASSERT(s->id == 0);
1440
- grpc_chttp2_list_add_waiting_for_concurrency(t, s);
1441
- maybe_start_some_streams(t);
1442
- } else {
1443
- grpc_chttp2_cancel_stream(
1444
- t, s,
1445
- grpc_error_set_int(
1446
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1447
- "Transport closed", &t->closed_with_error, 1),
1448
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1449
- }
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);
1450
1412
  } else {
1451
- GPR_ASSERT(s->id != 0);
1452
- grpc_chttp2_mark_stream_writable(t, s);
1453
- if (!(op->send_message &&
1454
- (op->payload->send_message.send_message->flags() &
1455
- GRPC_WRITE_BUFFER_HINT))) {
1456
- grpc_chttp2_initiate_write(
1457
- t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
1458
- }
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));
1459
1419
  }
1460
1420
  } else {
1461
- s->send_initial_metadata = nullptr;
1462
- grpc_chttp2_complete_closure_step(
1463
- t, s, &s->send_initial_metadata_finished,
1464
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1465
- "Attempt to send initial metadata after stream was closed",
1466
- &s->write_closed_error, 1),
1467
- "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
+ }
1468
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");
1469
1438
  }
1470
1439
  if (op_payload->send_initial_metadata.peer_string != nullptr) {
1471
1440
  gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
1472
- (gpr_atm)t->peer_string);
1441
+ (gpr_atm)t->peer_string.c_str());
1473
1442
  }
1474
1443
  }
1475
1444
 
@@ -1527,47 +1496,27 @@ static void perform_stream_op_locked(void* stream_op,
1527
1496
  op_payload->send_trailing_metadata.send_trailing_metadata;
1528
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
- s->sent_trailing_metadata_op = nullptr;
1555
- grpc_chttp2_complete_closure_step(
1556
- t, s, &s->send_trailing_metadata_finished,
1557
- grpc_metadata_batch_is_empty(
1558
- op->payload->send_trailing_metadata.send_trailing_metadata)
1559
- ? GRPC_ERROR_NONE
1560
- : GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1561
- "Attempt to send trailing metadata after "
1562
- "stream was closed"),
1563
- "send_trailing_metadata_finished");
1564
- } else if (s->id != 0) {
1565
- /* TODO(ctiller): check if there's flow control for any outstanding
1566
- bytes before going writable */
1567
- grpc_chttp2_mark_stream_writable(t, s);
1568
- grpc_chttp2_initiate_write(
1569
- t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
1570
- }
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);
1571
1520
  }
1572
1521
  }
1573
1522
 
@@ -1582,7 +1531,7 @@ static void perform_stream_op_locked(void* stream_op,
1582
1531
  op_payload->recv_initial_metadata.trailing_metadata_available;
1583
1532
  if (op_payload->recv_initial_metadata.peer_string != nullptr) {
1584
1533
  gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
1585
- (gpr_atm)t->peer_string);
1534
+ (gpr_atm)t->peer_string.c_str());
1586
1535
  }
1587
1536
  grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
1588
1537
  }
@@ -1665,8 +1614,8 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1665
1614
  }
1666
1615
 
1667
1616
  static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) {
1668
- /* callback remaining pings: they're not allowed to call into the transport,
1669
- 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
1670
1619
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1671
1620
  GPR_ASSERT(error != GRPC_ERROR_NONE);
1672
1621
  for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
@@ -1692,11 +1641,9 @@ static void send_ping_locked(grpc_chttp2_transport* t,
1692
1641
  GRPC_ERROR_NONE);
1693
1642
  }
1694
1643
 
1695
- /*
1696
- * Specialized form of send_ping_locked for keepalive ping. If there is already
1697
- * a ping in progress, the keepalive ping would piggyback onto that ping,
1698
- * instead of waiting for that ping to complete and then starting a new ping.
1699
- */
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.
1700
1647
  static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1701
1648
  if (t->closed_with_error != GRPC_ERROR_NONE) {
1702
1649
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
@@ -1710,7 +1657,7 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1710
1657
  }
1711
1658
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1712
1659
  if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
1713
- /* 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.
1714
1661
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1715
1662
  start_keepalive_ping_locked, t, nullptr),
1716
1663
  GRPC_ERROR_REF(t->closed_with_error));
@@ -1752,9 +1699,8 @@ static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
1752
1699
  void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1753
1700
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1754
1701
  if (pq->inflight_id != id) {
1755
- char* from = grpc_endpoint_get_peer(t->ep);
1756
- gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64, from, id);
1757
- gpr_free(from);
1702
+ gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
1703
+ t->peer_string.c_str(), id);
1758
1704
  return;
1759
1705
  }
1760
1706
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
@@ -1765,8 +1711,8 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1765
1711
  }
1766
1712
 
1767
1713
  static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) {
1768
- /* We want to log this irrespective of whether http tracing is enabled */
1769
- 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(),
1770
1716
  grpc_error_string(error));
1771
1717
  t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
1772
1718
  grpc_http2_error_code http_error;
@@ -1787,7 +1733,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1787
1733
  grpc_error_set_int(
1788
1734
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
1789
1735
  GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
1790
- /*The transport will be closed after the write is done */
1736
+ // The transport will be closed after the write is done
1791
1737
  close_transport_locked(
1792
1738
  t, grpc_error_set_int(
1793
1739
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
@@ -1862,9 +1808,9 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1862
1808
  GRPC_ERROR_NONE);
1863
1809
  }
1864
1810
 
1865
- /*******************************************************************************
1866
- * INPUT PROCESSING - GENERAL
1867
- */
1811
+ //
1812
+ // INPUT PROCESSING - GENERAL
1813
+ //
1868
1814
 
1869
1815
  void grpc_chttp2_maybe_complete_recv_initial_metadata(
1870
1816
  grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
@@ -1984,8 +1930,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1984
1930
  s->unprocessed_incoming_frames_buffer.length > 0;
1985
1931
  if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
1986
1932
  !s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
1987
- /* Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
1988
- * 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.
1989
1935
  if (s->stream_decompression_method ==
1990
1936
  GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
1991
1937
  grpc_slice_buffer_move_first(
@@ -2069,6 +2015,8 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2069
2015
  if (grpc_chttp2_list_remove_writable_stream(t, s)) {
2070
2016
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream");
2071
2017
  }
2018
+ grpc_chttp2_list_remove_stalled_by_stream(t, s);
2019
+ grpc_chttp2_list_remove_stalled_by_transport(t, s);
2072
2020
 
2073
2021
  GRPC_ERROR_UNREF(error);
2074
2022
 
@@ -2107,12 +2055,12 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2107
2055
  if (status != GRPC_STATUS_OK) {
2108
2056
  s->seen_error = true;
2109
2057
  }
2110
- /* stream_global->recv_trailing_metadata_finished gives us a
2111
- last chance replacement: we've received trailing metadata,
2112
- but something more important has become available to signal
2113
- to the upper layers - drop what we've got, and then publish
2114
- what we want - which is safe because we haven't told anyone
2115
- 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
2116
2064
  if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
2117
2065
  s->recv_trailing_metadata_finished != nullptr) {
2118
2066
  char status_string[GPR_LTOA_MIN_BUFSIZE];
@@ -2204,7 +2152,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2204
2152
  grpc_chttp2_stream* s, int close_reads,
2205
2153
  int close_writes, grpc_error* error) {
2206
2154
  if (s->read_closed && s->write_closed) {
2207
- /* already closed, but we should still fake the status if needed. */
2155
+ // already closed, but we should still fake the status if needed.
2208
2156
  grpc_error* overall_error = removal_error(error, s, "Stream removed");
2209
2157
  if (overall_error != GRPC_ERROR_NONE) {
2210
2158
  grpc_chttp2_fake_status(t, s, overall_error);
@@ -2231,7 +2179,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2231
2179
  if (s->id != 0) {
2232
2180
  remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
2233
2181
  } else {
2234
- /* Purge streams waiting on concurrency still waiting for id assignment */
2182
+ // Purge streams waiting on concurrency still waiting for id assignment
2235
2183
  grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
2236
2184
  }
2237
2185
  if (overall_error != GRPC_ERROR_NONE) {
@@ -2270,12 +2218,12 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2270
2218
 
2271
2219
  GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
2272
2220
 
2273
- /* Hand roll a header block.
2274
- This is unnecessarily ugly - at some point we should find a more
2275
- elegant solution.
2276
- It's complicated by the fact that our send machinery would be dead by
2277
- the time we got around to sending this, so instead we ignore HPACK
2278
- 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.
2279
2227
  if (!s->sent_initial_metadata) {
2280
2228
  http_status_hdr = GRPC_SLICE_MALLOC(13);
2281
2229
  p = GRPC_SLICE_START_PTR(http_status_hdr);
@@ -2436,9 +2384,9 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
2436
2384
  GRPC_ERROR_UNREF(error);
2437
2385
  }
2438
2386
 
2439
- /*******************************************************************************
2440
- * INPUT PROCESSING - PARSING
2441
- */
2387
+ //
2388
+ // INPUT PROCESSING - PARSING
2389
+ //
2442
2390
 
2443
2391
  template <class F>
2444
2392
  static void WithUrgency(grpc_chttp2_transport* t,
@@ -2535,11 +2483,6 @@ static void read_action_locked(void* tp, grpc_error* error) {
2535
2483
  grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2536
2484
  GRPC_ERROR_NONE};
2537
2485
  for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
2538
- grpc_core::BdpEstimator* bdp_est = t->flow_control->bdp_estimator();
2539
- if (bdp_est) {
2540
- bdp_est->AddIncomingBytes(
2541
- static_cast<int64_t> GRPC_SLICE_LENGTH(t->read_buffer.slices[i]));
2542
- }
2543
2486
  errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
2544
2487
  }
2545
2488
  if (errors[1] != GRPC_ERROR_NONE) {
@@ -2573,8 +2516,8 @@ static void read_action_locked(void* tp, grpc_error* error) {
2573
2516
  "Transport closed", &t->closed_with_error, 1);
2574
2517
  }
2575
2518
  if (error != GRPC_ERROR_NONE) {
2576
- /* If a goaway frame was received, this might be the reason why the read
2577
- * 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
2578
2521
  if (t->goaway_error != GRPC_ERROR_NONE) {
2579
2522
  error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
2580
2523
  }
@@ -2583,7 +2526,7 @@ static void read_action_locked(void* tp, grpc_error* error) {
2583
2526
  t->endpoint_reading = 0;
2584
2527
  } else if (t->closed_with_error == GRPC_ERROR_NONE) {
2585
2528
  keep_reading = true;
2586
- /* Since we have read a byte, reset the keepalive timer */
2529
+ // Since we have read a byte, reset the keepalive timer
2587
2530
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2588
2531
  grpc_timer_cancel(&t->keepalive_ping_timer);
2589
2532
  }
@@ -2618,7 +2561,7 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
2618
2561
 
2619
2562
  // t is reffed prior to calling the first time, and once the callback chain
2620
2563
  // that kicks off finishes, it's unreffed
2621
- static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2564
+ void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2622
2565
  t->flow_control->bdp_estimator()->SchedulePing();
2623
2566
  send_ping_locked(
2624
2567
  t,
@@ -2626,6 +2569,9 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2626
2569
  grpc_schedule_on_exec_ctx),
2627
2570
  GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
2628
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);
2629
2575
  }
2630
2576
 
2631
2577
  static void start_bdp_ping(void* tp, grpc_error* error) {
@@ -2638,13 +2584,13 @@ static void start_bdp_ping(void* tp, grpc_error* error) {
2638
2584
  static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2639
2585
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2640
2586
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2641
- 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(),
2642
2588
  grpc_error_string(error));
2643
2589
  }
2644
2590
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2645
2591
  return;
2646
2592
  }
2647
- /* Reset the keepalive ping timer */
2593
+ // Reset the keepalive ping timer
2648
2594
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2649
2595
  grpc_timer_cancel(&t->keepalive_ping_timer);
2650
2596
  }
@@ -2662,7 +2608,7 @@ static void finish_bdp_ping(void* tp, grpc_error* error) {
2662
2608
  static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2663
2609
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2664
2610
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2665
- 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(),
2666
2612
  grpc_error_string(error));
2667
2613
  }
2668
2614
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
@@ -2670,8 +2616,8 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2670
2616
  return;
2671
2617
  }
2672
2618
  if (!t->bdp_ping_started) {
2673
- /* start_bdp_ping_locked has not been run yet. Schedule
2674
- * 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.
2675
2621
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2676
2622
  finish_bdp_ping_locked, t, nullptr),
2677
2623
  GRPC_ERROR_REF(error));
@@ -2705,7 +2651,13 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
2705
2651
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2706
2652
  return;
2707
2653
  }
2708
- 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
+ }
2709
2661
  }
2710
2662
 
2711
2663
  void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
@@ -2754,14 +2706,6 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2754
2706
  GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
2755
2707
  g_default_max_pings_without_data = grpc_channel_arg_get_integer(
2756
2708
  &args->args[i], {g_default_max_pings_without_data, 0, INT_MAX});
2757
- } else if (0 ==
2758
- strcmp(
2759
- args->args[i].key,
2760
- GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
2761
- g_default_min_sent_ping_interval_without_data_ms =
2762
- grpc_channel_arg_get_integer(
2763
- &args->args[i],
2764
- {g_default_min_sent_ping_interval_without_data_ms, 0, INT_MAX});
2765
2709
  } else if (0 ==
2766
2710
  strcmp(
2767
2711
  args->args[i].key,
@@ -2804,7 +2748,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2804
2748
  &t->init_keepalive_ping_locked);
2805
2749
  }
2806
2750
  } else if (error == GRPC_ERROR_CANCELLED) {
2807
- /* The keepalive ping timer may be cancelled by bdp */
2751
+ // The keepalive ping timer may be cancelled by bdp
2808
2752
  GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
2809
2753
  GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
2810
2754
  grpc_schedule_on_exec_ctx);
@@ -2832,7 +2776,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2832
2776
  }
2833
2777
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2834
2778
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2835
- 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());
2836
2780
  }
2837
2781
  GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
2838
2782
  GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
@@ -2856,11 +2800,11 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2856
2800
  if (error == GRPC_ERROR_NONE) {
2857
2801
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2858
2802
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2859
- 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());
2860
2804
  }
2861
2805
  if (!t->keepalive_ping_started) {
2862
- /* start_keepalive_ping_locked has not run yet. Reschedule
2863
- * 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.
2864
2808
  t->combiner->Run(
2865
2809
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2866
2810
  finish_keepalive_ping_locked, t, nullptr),
@@ -2894,7 +2838,7 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2894
2838
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2895
2839
  if (error == GRPC_ERROR_NONE) {
2896
2840
  gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2897
- t->peer_string);
2841
+ t->peer_string.c_str());
2898
2842
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2899
2843
  close_transport_locked(
2900
2844
  t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
@@ -2903,8 +2847,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2903
2847
  GRPC_STATUS_UNAVAILABLE));
2904
2848
  }
2905
2849
  } else {
2906
- /* The watchdog timer should have been cancelled by
2907
- * finish_keepalive_ping_locked. */
2850
+ // The watchdog timer should have been cancelled by
2851
+ // finish_keepalive_ping_locked.
2908
2852
  if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
2909
2853
  gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
2910
2854
  t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
@@ -2913,21 +2857,22 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2913
2857
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
2914
2858
  }
2915
2859
 
2916
- /*******************************************************************************
2917
- * CALLBACK LOOP
2918
- */
2860
+ //
2861
+ // CALLBACK LOOP
2862
+ //
2919
2863
 
2920
2864
  static void connectivity_state_set(grpc_chttp2_transport* t,
2921
2865
  grpc_connectivity_state state,
2866
+ const absl::Status& status,
2922
2867
  const char* reason) {
2923
2868
  GRPC_CHTTP2_IF_TRACING(
2924
2869
  gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
2925
- t->state_tracker.SetState(state, reason);
2870
+ t->state_tracker.SetState(state, status, reason);
2926
2871
  }
2927
2872
 
2928
- /*******************************************************************************
2929
- * POLLSET STUFF
2930
- */
2873
+ //
2874
+ // POLLSET STUFF
2875
+ //
2931
2876
 
2932
2877
  static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
2933
2878
  grpc_pollset* pollset) {
@@ -2941,9 +2886,9 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
2941
2886
  grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
2942
2887
  }
2943
2888
 
2944
- /*******************************************************************************
2945
- * BYTE STREAM
2946
- */
2889
+ //
2890
+ // BYTE STREAM
2891
+ //
2947
2892
 
2948
2893
  static void reset_byte_stream(void* arg, grpc_error* error) {
2949
2894
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
@@ -3031,7 +2976,7 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
3031
2976
  s->data_parser.parsing_frame = nullptr;
3032
2977
  }
3033
2978
  } else {
3034
- /* Should never reach here. */
2979
+ // Should never reach here.
3035
2980
  GPR_ASSERT(false);
3036
2981
  }
3037
2982
  } else {
@@ -3160,9 +3105,9 @@ void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
3160
3105
 
3161
3106
  } // namespace grpc_core
3162
3107
 
3163
- /*******************************************************************************
3164
- * RESOURCE QUOTAS
3165
- */
3108
+ //
3109
+ // RESOURCE QUOTAS
3110
+ //
3166
3111
 
3167
3112
  static void post_benign_reclaimer(grpc_chttp2_transport* t) {
3168
3113
  if (!t->benign_reclaimer_registered) {
@@ -3197,11 +3142,11 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3197
3142
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3198
3143
  if (error == GRPC_ERROR_NONE &&
3199
3144
  grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
3200
- /* Channel with no active streams: send a goaway to try and make it
3201
- * disconnect cleanly */
3145
+ // Channel with no active streams: send a goaway to try and make it
3146
+ // disconnect cleanly
3202
3147
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
3203
3148
  gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
3204
- t->peer_string);
3149
+ t->peer_string.c_str());
3205
3150
  }
3206
3151
  send_goaway(t,
3207
3152
  grpc_error_set_int(
@@ -3212,7 +3157,8 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3212
3157
  gpr_log(GPR_INFO,
3213
3158
  "HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
3214
3159
  " streams",
3215
- 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));
3216
3162
  }
3217
3163
  t->benign_reclaimer_registered = false;
3218
3164
  if (error != GRPC_ERROR_CANCELLED) {
@@ -3237,8 +3183,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3237
3183
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
3238
3184
  grpc_chttp2_stream_map_rand(&t->stream_map));
3239
3185
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
3240
- gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d", t->peer_string,
3241
- s->id);
3186
+ gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
3187
+ t->peer_string.c_str(), s->id);
3242
3188
  }
3243
3189
  grpc_chttp2_cancel_stream(
3244
3190
  t, s,
@@ -3246,10 +3192,10 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3246
3192
  GRPC_ERROR_INT_HTTP2_ERROR,
3247
3193
  GRPC_HTTP2_ENHANCE_YOUR_CALM));
3248
3194
  if (n > 1) {
3249
- /* Since we cancel one stream per destructive reclamation, if
3250
- there are more streams left, we can immediately post a new
3251
- reclaimer in case the resource quota needs to free more
3252
- 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
3253
3199
  post_destructive_reclaimer(t);
3254
3200
  }
3255
3201
  }
@@ -3260,9 +3206,9 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3260
3206
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
3261
3207
  }
3262
3208
 
3263
- /*******************************************************************************
3264
- * MONITORING
3265
- */
3209
+ //
3210
+ // MONITORING
3211
+ //
3266
3212
 
3267
3213
  const char* grpc_chttp2_initiate_write_reason_string(
3268
3214
  grpc_chttp2_initiate_write_reason reason) {
@@ -3299,6 +3245,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
3299
3245
  return "FLOW_CONTROL_UNSTALLED_BY_UPDATE";
3300
3246
  case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
3301
3247
  return "APPLICATION_PING";
3248
+ case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
3249
+ return "BDP_PING";
3302
3250
  case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
3303
3251
  return "KEEPALIVE_PING";
3304
3252
  case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED: