grpc 1.35.0 → 1.38.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 (885) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +168 -131
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/channel_args.h +28 -0
  5. data/include/grpc/event_engine/event_engine.h +336 -0
  6. data/include/grpc/event_engine/port.h +39 -0
  7. data/include/grpc/event_engine/slice_allocator.h +81 -0
  8. data/include/grpc/grpc.h +15 -1
  9. data/include/grpc/grpc_security.h +16 -11
  10. data/include/grpc/grpc_security_constants.h +14 -0
  11. data/include/grpc/impl/codegen/grpc_types.h +11 -0
  12. data/include/grpc/impl/codegen/port_platform.h +7 -0
  13. data/include/grpc/module.modulemap +14 -14
  14. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  15. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  16. data/src/core/ext/filters/client_channel/client_channel.cc +740 -3185
  17. data/src/core/ext/filters/client_channel/client_channel.h +488 -56
  18. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  19. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
  20. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  21. data/src/core/ext/filters/client_channel/config_selector.h +10 -2
  22. data/src/core/ext/filters/client_channel/connector.h +1 -1
  23. data/src/core/ext/filters/client_channel/dynamic_filters.cc +18 -14
  24. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  25. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
  26. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
  27. data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
  28. data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
  29. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +26 -23
  30. data/src/core/ext/filters/client_channel/lb_policy.cc +4 -1
  31. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +49 -48
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
  35. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +2 -3
  36. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  37. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
  38. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +22 -18
  39. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  42. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  43. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +318 -193
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
  46. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -47
  47. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -47
  48. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +316 -171
  49. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  50. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  51. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  52. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  53. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
  54. data/src/core/ext/filters/client_channel/resolver.cc +5 -5
  55. data/src/core/ext/filters/client_channel/resolver.h +3 -14
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +59 -60
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -15
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +67 -74
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  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 +33 -23
  66. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +38 -43
  67. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  68. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +379 -0
  69. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
  70. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +344 -177
  71. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  72. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  73. data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
  74. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  75. data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
  76. data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
  77. data/src/core/ext/filters/client_channel/server_address.cc +10 -1
  78. data/src/core/ext/filters/client_channel/server_address.h +31 -0
  79. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  80. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  81. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  82. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  83. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  84. data/src/core/ext/filters/client_channel/subchannel.cc +86 -162
  85. data/src/core/ext/filters/client_channel/subchannel.h +68 -99
  86. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
  87. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
  88. data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
  89. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  90. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
  91. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
  92. data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
  93. data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
  94. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  95. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  96. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  97. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  98. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  99. data/src/core/ext/filters/max_age/max_age_filter.cc +47 -42
  100. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  101. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  102. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
  103. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -8
  104. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  105. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +5 -4
  106. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
  107. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -5
  108. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +507 -196
  109. data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
  110. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -4
  111. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -3
  112. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +64 -21
  113. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +167 -122
  114. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
  115. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  116. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  117. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  118. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  119. data/src/core/ext/transport/chttp2/transport/frame_data.cc +13 -9
  120. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  121. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  122. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  123. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  124. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  125. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  126. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  127. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  128. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  129. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  130. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  131. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
  132. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  133. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  134. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  135. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  136. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  137. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  138. data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
  139. data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
  140. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  141. data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
  142. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
  143. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
  144. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
  145. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
  146. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
  147. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
  148. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
  149. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
  150. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
  155. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
  156. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
  157. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
  158. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
  159. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
  160. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
  161. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
  162. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
  163. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
  164. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
  165. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
  166. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
  167. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
  168. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
  169. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
  170. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
  171. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
  172. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
  173. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
  174. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
  175. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +150 -0
  176. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
  177. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
  178. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
  179. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
  180. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
  181. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
  182. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
  183. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
  184. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
  185. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +19 -21
  186. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +64 -51
  187. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
  188. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
  189. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
  190. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
  191. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
  192. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
  193. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
  194. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
  195. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
  196. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
  197. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
  198. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
  199. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
  200. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
  201. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
  202. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
  203. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
  204. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
  205. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
  206. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
  207. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
  208. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
  209. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
  210. data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
  211. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
  212. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
  213. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
  214. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
  215. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
  216. data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
  217. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
  218. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
  219. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
  220. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
  221. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
  222. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
  223. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  224. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
  225. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
  226. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
  227. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
  228. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
  229. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
  230. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
  231. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
  232. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
  233. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
  234. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
  235. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
  236. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
  237. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
  238. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
  239. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
  240. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
  241. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
  242. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
  243. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  244. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
  245. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
  246. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
  247. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +753 -724
  248. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
  249. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
  250. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
  251. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  252. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
  253. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  254. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
  255. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  256. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
  257. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  258. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +371 -377
  259. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
  260. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
  261. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
  262. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
  263. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
  264. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
  265. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
  266. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
  267. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
  268. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
  269. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
  270. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
  271. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
  272. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  273. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
  274. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
  275. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  276. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
  277. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
  278. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
  279. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
  280. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  281. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
  282. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  283. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
  284. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  285. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
  286. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  287. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
  288. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  289. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
  290. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  291. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  292. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  293. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  294. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  295. data/src/core/ext/xds/xds_api.cc +2179 -688
  296. data/src/core/ext/xds/xds_api.h +326 -124
  297. data/src/core/ext/xds/xds_bootstrap.cc +115 -142
  298. data/src/core/ext/xds/xds_bootstrap.h +24 -17
  299. data/src/core/ext/xds/xds_certificate_provider.cc +184 -78
  300. data/src/core/ext/xds/xds_certificate_provider.h +84 -45
  301. data/src/core/ext/xds/xds_channel_args.h +5 -2
  302. data/src/core/ext/xds/xds_client.cc +462 -183
  303. data/src/core/ext/xds/xds_client.h +65 -22
  304. data/src/core/ext/xds/xds_client_stats.cc +2 -1
  305. data/src/core/ext/xds/xds_client_stats.h +5 -4
  306. data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
  307. data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
  308. data/src/core/ext/xds/xds_http_filters.cc +114 -0
  309. data/src/core/ext/xds/xds_http_filters.h +130 -0
  310. data/src/core/ext/xds/xds_server_config_fetcher.cc +444 -29
  311. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  312. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  313. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +108 -5
  314. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +26 -6
  315. data/src/core/lib/channel/channel_stack.cc +22 -9
  316. data/src/core/lib/channel/channel_stack.h +17 -9
  317. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  318. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  319. data/src/core/lib/channel/channelz.cc +108 -12
  320. data/src/core/lib/channel/channelz.h +30 -1
  321. data/src/core/lib/channel/channelz_registry.cc +14 -0
  322. data/src/core/lib/channel/connected_channel.cc +4 -4
  323. data/src/core/lib/channel/handshaker.cc +9 -50
  324. data/src/core/lib/channel/handshaker.h +6 -23
  325. data/src/core/lib/channel/status_util.cc +12 -2
  326. data/src/core/lib/channel/status_util.h +5 -0
  327. data/src/core/lib/event_engine/slice_allocator.cc +59 -0
  328. data/src/core/lib/event_engine/sockaddr.cc +38 -0
  329. data/src/core/lib/gpr/log.cc +6 -1
  330. data/src/core/lib/gpr/sync_abseil.cc +3 -6
  331. data/src/core/lib/gpr/sync_windows.cc +2 -2
  332. data/src/core/lib/gprpp/atomic.h +3 -3
  333. data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
  334. data/src/core/lib/gprpp/mpscq.cc +2 -2
  335. data/src/core/lib/gprpp/ref_counted.h +29 -15
  336. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
  337. data/src/core/lib/gprpp/status_helper.cc +407 -0
  338. data/src/core/lib/gprpp/status_helper.h +180 -0
  339. data/src/core/lib/gprpp/sync.h +129 -40
  340. data/src/core/lib/gprpp/thd.h +1 -1
  341. data/src/core/lib/gprpp/time_util.cc +77 -0
  342. data/src/core/lib/gprpp/time_util.h +42 -0
  343. data/src/core/lib/http/httpcli.cc +11 -11
  344. data/src/core/lib/http/httpcli_security_connector.cc +13 -9
  345. data/src/core/lib/http/parser.cc +16 -16
  346. data/src/core/lib/http/parser.h +4 -4
  347. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  348. data/src/core/lib/iomgr/buffer_list.h +5 -6
  349. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  350. data/src/core/lib/iomgr/call_combiner.h +12 -14
  351. data/src/core/lib/iomgr/cfstream_handle.cc +5 -5
  352. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  353. data/src/core/lib/iomgr/closure.h +7 -6
  354. data/src/core/lib/iomgr/combiner.cc +14 -12
  355. data/src/core/lib/iomgr/combiner.h +2 -2
  356. data/src/core/lib/iomgr/endpoint.cc +1 -1
  357. data/src/core/lib/iomgr/endpoint.h +2 -2
  358. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  359. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  360. data/src/core/lib/iomgr/error.cc +167 -61
  361. data/src/core/lib/iomgr/error.h +218 -107
  362. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  363. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  364. data/src/core/lib/iomgr/error_internal.h +5 -1
  365. data/src/core/lib/iomgr/ev_apple.cc +16 -13
  366. data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
  367. data/src/core/lib/iomgr/ev_epollex_linux.cc +52 -49
  368. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  369. data/src/core/lib/iomgr/ev_posix.cc +12 -11
  370. data/src/core/lib/iomgr/ev_posix.h +9 -9
  371. data/src/core/lib/iomgr/exec_ctx.cc +10 -6
  372. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  373. data/src/core/lib/iomgr/executor.cc +8 -8
  374. data/src/core/lib/iomgr/executor.h +2 -2
  375. data/src/core/lib/iomgr/iomgr.cc +1 -1
  376. data/src/core/lib/iomgr/iomgr.h +1 -1
  377. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  378. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  379. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  380. data/src/core/lib/iomgr/iomgr_posix.cc +1 -2
  381. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -3
  382. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  383. data/src/core/lib/iomgr/load_file.cc +4 -4
  384. data/src/core/lib/iomgr/load_file.h +2 -2
  385. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  386. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  387. data/src/core/lib/iomgr/pollset.cc +5 -5
  388. data/src/core/lib/iomgr/pollset.h +9 -9
  389. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  390. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  391. data/src/core/lib/iomgr/port.h +1 -1
  392. data/src/core/lib/iomgr/python_util.h +1 -1
  393. data/src/core/lib/iomgr/resolve_address.cc +3 -3
  394. data/src/core/lib/iomgr/resolve_address.h +6 -6
  395. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  396. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  397. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  398. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  399. data/src/core/lib/iomgr/resource_quota.cc +12 -11
  400. data/src/core/lib/iomgr/socket_utils_common_posix.cc +23 -20
  401. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  402. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  403. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  404. data/src/core/lib/iomgr/tcp_client_posix.cc +16 -18
  405. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  406. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  407. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  408. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  409. data/src/core/lib/iomgr/tcp_posix.cc +41 -42
  410. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  411. data/src/core/lib/iomgr/tcp_server.h +12 -11
  412. data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
  413. data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
  414. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  415. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
  416. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  417. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  418. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  419. data/src/core/lib/iomgr/tcp_uv.cc +27 -25
  420. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  421. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  422. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  423. data/src/core/lib/iomgr/timer_custom.h +1 -1
  424. data/src/core/lib/iomgr/timer_generic.cc +8 -8
  425. data/src/core/lib/iomgr/timer_manager.cc +1 -1
  426. data/src/core/lib/iomgr/udp_server.cc +21 -20
  427. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  428. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  429. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  430. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  431. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
  432. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  433. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  434. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  435. data/src/core/lib/iomgr/work_serializer.h +17 -1
  436. data/src/core/lib/json/json.h +1 -1
  437. data/src/core/lib/json/json_reader.cc +4 -4
  438. data/src/core/lib/matchers/matchers.cc +339 -0
  439. data/src/core/lib/matchers/matchers.h +160 -0
  440. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
  441. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  442. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  443. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  444. data/src/core/lib/security/credentials/credentials.h +4 -3
  445. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -14
  446. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  447. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  448. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  449. data/src/core/lib/security/credentials/external/external_account_credentials.cc +17 -14
  450. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  451. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +6 -5
  452. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  453. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +9 -9
  454. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  455. data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -3
  456. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  457. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +16 -15
  458. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  459. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  460. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  461. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -5
  462. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  463. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  464. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -8
  465. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
  466. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  467. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  468. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  469. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  470. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  471. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
  472. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  473. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  474. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  475. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  476. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  477. data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
  478. data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
  479. data/src/core/lib/security/credentials/xds/xds_credentials.cc +130 -61
  480. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  481. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  482. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  483. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
  484. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  485. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  486. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
  487. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  488. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  489. data/src/core/lib/security/security_connector/ssl_utils.cc +31 -8
  490. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  491. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +88 -74
  492. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  493. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  494. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  495. data/src/core/lib/security/transport/security_handshaker.cc +66 -37
  496. data/src/core/lib/security/transport/server_auth_filter.cc +24 -11
  497. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  498. data/src/core/lib/security/transport/tsi_error.h +2 -1
  499. data/src/core/lib/security/util/json_util.cc +2 -2
  500. data/src/core/lib/security/util/json_util.h +1 -1
  501. data/src/core/lib/slice/slice_intern.cc +5 -6
  502. data/src/core/lib/surface/call.cc +46 -45
  503. data/src/core/lib/surface/call.h +2 -2
  504. data/src/core/lib/surface/channel.cc +6 -6
  505. data/src/core/lib/surface/channel.h +6 -5
  506. data/src/core/lib/surface/channel_ping.cc +1 -1
  507. data/src/core/lib/surface/completion_queue.cc +46 -47
  508. data/src/core/lib/surface/completion_queue.h +2 -1
  509. data/src/core/lib/surface/init.cc +13 -15
  510. data/src/core/lib/surface/lame_client.cc +43 -24
  511. data/src/core/lib/surface/lame_client.h +4 -3
  512. data/src/core/lib/surface/server.cc +71 -58
  513. data/src/core/lib/surface/server.h +91 -28
  514. data/src/core/lib/surface/validate_metadata.cc +7 -7
  515. data/src/core/lib/surface/validate_metadata.h +3 -2
  516. data/src/core/lib/surface/version.cc +4 -2
  517. data/src/core/lib/transport/byte_stream.cc +5 -5
  518. data/src/core/lib/transport/byte_stream.h +8 -8
  519. data/src/core/lib/transport/connectivity_state.cc +1 -1
  520. data/src/core/lib/transport/error_utils.cc +19 -8
  521. data/src/core/lib/transport/error_utils.h +11 -5
  522. data/src/core/lib/transport/metadata.cc +6 -2
  523. data/src/core/lib/transport/metadata_batch.cc +64 -37
  524. data/src/core/lib/transport/metadata_batch.h +33 -18
  525. data/src/core/lib/transport/transport.cc +4 -3
  526. data/src/core/lib/transport/transport.h +4 -4
  527. data/src/core/lib/transport/transport_op_string.cc +5 -5
  528. data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -0
  529. data/src/core/tsi/alts/crypt/gsec.h +4 -0
  530. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -28
  531. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -27
  532. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  533. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  534. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
  535. data/src/core/tsi/fake_transport_security.cc +11 -2
  536. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
  537. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
  538. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
  539. data/src/core/tsi/ssl_transport_security.cc +32 -17
  540. data/src/core/tsi/ssl_transport_security.h +3 -7
  541. data/src/ruby/bin/math_services_pb.rb +1 -1
  542. data/src/ruby/ext/grpc/extconf.rb +9 -1
  543. data/src/ruby/ext/grpc/rb_channel.c +10 -1
  544. data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
  545. data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
  546. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  547. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  548. data/src/ruby/ext/grpc/rb_grpc.c +4 -0
  549. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  550. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
  551. data/src/ruby/ext/grpc/rb_server.c +13 -1
  552. data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
  553. data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
  554. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
  555. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
  556. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
  557. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
  558. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
  559. data/src/ruby/lib/grpc/version.rb +1 -1
  560. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  561. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
  562. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  563. data/src/ruby/spec/call_spec.rb +1 -1
  564. data/src/ruby/spec/channel_credentials_spec.rb +32 -0
  565. data/src/ruby/spec/channel_spec.rb +17 -6
  566. data/src/ruby/spec/client_auth_spec.rb +27 -1
  567. data/src/ruby/spec/errors_spec.rb +1 -1
  568. data/src/ruby/spec/generic/active_call_spec.rb +2 -2
  569. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  570. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  571. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  572. data/src/ruby/spec/server_spec.rb +22 -0
  573. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  574. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  575. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  576. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  577. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  578. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  579. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  580. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  581. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  582. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  583. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  584. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  585. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  586. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  587. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  588. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  589. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  590. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  591. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  592. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  593. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  594. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  595. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  596. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  597. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  598. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  599. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  600. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  601. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  602. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  603. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  604. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  605. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  606. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  607. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  608. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  609. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  610. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  611. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  612. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  613. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  614. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  615. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  616. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  617. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  618. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  619. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  620. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  621. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  622. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  623. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  624. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  625. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  626. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  627. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  628. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  629. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  630. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  631. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  632. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  633. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  634. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  635. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  636. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  637. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  638. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  639. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  640. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  641. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  642. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  643. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  644. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  645. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  646. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  647. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  648. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  649. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  650. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  651. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  652. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  653. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  654. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  655. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  656. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  657. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  658. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  659. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  660. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  661. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  662. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  663. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  664. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
  665. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  666. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  667. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  668. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  669. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  670. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  671. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  672. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  673. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  674. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  675. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  676. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  677. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  678. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  679. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  680. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  681. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  682. data/third_party/boringssl-with-bazel/err_data.c +742 -724
  683. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  684. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  685. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
  686. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
  687. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +4 -11
  688. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  689. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
  690. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
  691. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -16
  692. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +35 -0
  693. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
  694. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +40 -86
  695. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +6 -17
  696. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
  697. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
  698. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
  699. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  700. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
  701. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  702. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
  703. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
  704. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  705. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  706. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  707. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  708. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  709. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  710. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  711. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  712. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
  713. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
  714. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  715. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  716. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  717. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  718. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
  719. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +10 -2
  720. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
  721. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  722. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  723. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
  724. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  725. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
  726. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  727. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  728. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  729. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  730. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  731. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
  732. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
  733. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  734. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  735. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  736. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  737. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  738. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  739. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
  740. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +135 -43
  741. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -14
  742. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
  743. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  744. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +161 -9
  745. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
  746. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
  747. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
  748. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +121 -71
  749. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +71 -41
  750. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  751. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  752. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  753. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
  754. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  755. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
  756. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  757. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  758. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → rand_extra/passive.c} +16 -11
  759. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  760. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  761. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  762. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
  763. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  764. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  765. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  766. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +4 -31
  767. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
  768. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
  769. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
  770. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
  771. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
  772. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
  773. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  774. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  775. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +6 -2
  776. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  777. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  778. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  779. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -4
  780. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  781. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
  782. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
  783. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
  784. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
  785. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +4 -6
  786. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
  787. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
  788. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  789. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
  790. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  791. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  792. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -6
  793. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
  794. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
  795. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
  796. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +737 -551
  797. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
  798. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -5
  799. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  800. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
  801. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +15 -4
  802. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  803. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  804. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
  805. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
  806. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  807. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
  808. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  809. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +13 -40
  810. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  811. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  812. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
  813. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  814. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  815. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
  816. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +239 -37
  817. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +28 -8
  818. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +702 -219
  819. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +141 -36
  820. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
  821. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
  822. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
  823. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +47 -15
  824. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
  825. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +159 -13
  826. data/third_party/boringssl-with-bazel/src/ssl/internal.h +253 -58
  827. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
  828. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  829. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
  830. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  831. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  832. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +90 -25
  833. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
  834. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
  835. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
  836. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +450 -104
  837. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
  838. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
  839. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
  840. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +232 -85
  841. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  842. data/third_party/xxhash/xxhash.h +5443 -0
  843. metadata +167 -88
  844. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
  845. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
  846. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
  847. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
  848. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
  849. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
  850. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
  851. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
  852. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
  853. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
  854. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
  855. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
  856. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
  857. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
  858. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
  859. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
  860. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
  861. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
  862. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
  863. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
  864. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
  865. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
  866. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  867. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  868. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  869. data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
  870. data/src/core/lib/security/authorization/authorization_engine.h +0 -84
  871. data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
  872. data/src/core/lib/security/authorization/evaluate_args.h +0 -59
  873. data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
  874. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
  875. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
  876. data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
  877. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
  878. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
  879. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  880. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
  881. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  882. data/third_party/upb/upb/json_decode.c +0 -1443
  883. data/third_party/upb/upb/json_decode.h +0 -23
  884. data/third_party/upb/upb/json_encode.c +0 -713
  885. data/third_party/upb/upb/json_encode.h +0 -36
@@ -28,10 +28,19 @@
28
28
 
29
29
  namespace grpc_core {
30
30
 
31
+ // A function to modify channel args for a listening addr:port. Note that this
32
+ // is used to create a security connector for listeners when the servers are
33
+ // configured with a config fetcher. Not invoked if there is no config fetcher
34
+ // added to the server. Takes ownership of the args. Caller takes ownership of
35
+ // returned args. On failure, the error parameter will be set.
36
+ using Chttp2ServerArgsModifier =
37
+ std::function<grpc_channel_args*(grpc_channel_args*, grpc_error_handle*)>;
38
+
31
39
  /// Adds a port to \a server. Sets \a port_num to the port number.
32
40
  /// Takes ownership of \a args.
33
- grpc_error* Chttp2ServerAddPort(Server* server, const char* addr,
34
- grpc_channel_args* args, int* port_num);
41
+ grpc_error_handle Chttp2ServerAddPort(
42
+ Server* server, const char* addr, grpc_channel_args* args,
43
+ Chttp2ServerArgsModifier connection_args_modifier, int* port_num);
35
44
 
36
45
  } // namespace grpc_core
37
46
 
@@ -27,17 +27,26 @@
27
27
  #include "src/core/lib/surface/api_trace.h"
28
28
  #include "src/core/lib/surface/server.h"
29
29
 
30
+ namespace {
31
+
32
+ grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
33
+ grpc_error_handle* /*error*/) {
34
+ return args;
35
+ }
36
+
37
+ } // namespace
38
+
30
39
  int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) {
31
40
  grpc_core::ExecCtx exec_ctx;
32
41
  int port_num = 0;
33
42
  GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2,
34
43
  (server, addr));
35
- grpc_error* err = grpc_core::Chttp2ServerAddPort(
44
+ grpc_error_handle err = grpc_core::Chttp2ServerAddPort(
36
45
  server->core_server.get(), addr,
37
- grpc_channel_args_copy(server->core_server->channel_args()), &port_num);
46
+ grpc_channel_args_copy(server->core_server->channel_args()),
47
+ ModifyArgsForConnection, &port_num);
38
48
  if (err != GRPC_ERROR_NONE) {
39
- const char* msg = grpc_error_string(err);
40
- gpr_log(GPR_ERROR, "%s", msg);
49
+ gpr_log(GPR_ERROR, "%s", grpc_error_std_string(err).c_str());
41
50
 
42
51
  GRPC_ERROR_UNREF(err);
43
52
  }
@@ -51,16 +51,16 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
51
51
  grpc_transport* transport = grpc_create_chttp2_transport(
52
52
  server_args, server_endpoint, false /* is_client */);
53
53
 
54
- grpc_error* error =
54
+ grpc_error_handle error =
55
55
  core_server->SetupTransport(transport, nullptr, server_args, nullptr);
56
56
  if (error == GRPC_ERROR_NONE) {
57
57
  for (grpc_pollset* pollset : core_server->pollsets()) {
58
58
  grpc_endpoint_add_to_pollset(server_endpoint, pollset);
59
59
  }
60
- grpc_chttp2_transport_start_reading(transport, nullptr, nullptr);
60
+ grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr);
61
61
  } else {
62
62
  gpr_log(GPR_ERROR, "Failed to create channel: %s",
63
- grpc_error_string(error));
63
+ grpc_error_std_string(error).c_str());
64
64
  GRPC_ERROR_UNREF(error);
65
65
  grpc_transport_destroy(transport);
66
66
  }
@@ -18,12 +18,11 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include <grpc/grpc.h>
22
-
23
21
  #include <string.h>
24
22
 
25
23
  #include "absl/strings/str_cat.h"
26
24
 
25
+ #include <grpc/grpc.h>
27
26
  #include <grpc/support/alloc.h>
28
27
  #include <grpc/support/log.h>
29
28
 
@@ -38,10 +37,39 @@
38
37
  #include "src/core/lib/surface/api_trace.h"
39
38
  #include "src/core/lib/surface/server.h"
40
39
 
40
+ namespace {
41
+
42
+ grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
43
+ grpc_error_handle* error) {
44
+ grpc_server_credentials* server_credentials =
45
+ grpc_find_server_credentials_in_args(args);
46
+ if (server_credentials == nullptr) {
47
+ *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
48
+ "Could not find server credentials");
49
+ return args;
50
+ }
51
+ auto security_connector = server_credentials->create_security_connector(args);
52
+ if (security_connector == nullptr) {
53
+ *error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
54
+ absl::StrCat("Unable to create secure server with credentials of type ",
55
+ server_credentials->type())
56
+ .c_str());
57
+ return args;
58
+ }
59
+ grpc_arg arg_to_add =
60
+ grpc_security_connector_to_arg(security_connector.get());
61
+ grpc_channel_args* new_args =
62
+ grpc_channel_args_copy_and_add(args, &arg_to_add, 1);
63
+ grpc_channel_args_destroy(args);
64
+ return new_args;
65
+ }
66
+
67
+ } // namespace
68
+
41
69
  int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
42
70
  grpc_server_credentials* creds) {
43
71
  grpc_core::ExecCtx exec_ctx;
44
- grpc_error* err = GRPC_ERROR_NONE;
72
+ grpc_error_handle err = GRPC_ERROR_NONE;
45
73
  grpc_core::RefCountedPtr<grpc_server_security_connector> sc;
46
74
  int port_num = 0;
47
75
  grpc_channel_args* args = nullptr;
@@ -55,30 +83,45 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
55
83
  "No credentials specified for secure server port (creds==NULL)");
56
84
  goto done;
57
85
  }
58
- sc = creds->create_security_connector();
59
- if (sc == nullptr) {
60
- err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
61
- absl::StrCat("Unable to create secure server with credentials of type ",
62
- creds->type())
63
- .c_str());
64
- goto done;
86
+ // TODO(yashykt): Ideally, we would not want to have different behavior here
87
+ // based on whether a config fetcher is configured or not. Currently, we have
88
+ // a feature for SSL credentials reloading with an application callback that
89
+ // assumes that there is a single security connector. If we delay the creation
90
+ // of the security connector to after the creation of the listener(s), we
91
+ // would have potentially multiple security connectors which breaks the
92
+ // assumption for SSL creds reloading. When the API for SSL creds reloading is
93
+ // rewritten, we would be able to make this workaround go away by removing
94
+ // that assumption. As an immediate drawback of this workaround, config
95
+ // fetchers need to be registered before adding ports to the server.
96
+ if (server->core_server->config_fetcher() != nullptr) {
97
+ // Create channel args.
98
+ grpc_arg arg_to_add = grpc_server_credentials_to_arg(creds);
99
+ args = grpc_channel_args_copy_and_add(server->core_server->channel_args(),
100
+ &arg_to_add, 1);
101
+ } else {
102
+ sc = creds->create_security_connector(nullptr);
103
+ if (sc == nullptr) {
104
+ err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
105
+ absl::StrCat(
106
+ "Unable to create secure server with credentials of type ",
107
+ creds->type())
108
+ .c_str());
109
+ goto done;
110
+ }
111
+ grpc_arg args_to_add[2];
112
+ args_to_add[0] = grpc_server_credentials_to_arg(creds);
113
+ args_to_add[1] = grpc_security_connector_to_arg(sc.get());
114
+ args = grpc_channel_args_copy_and_add(server->core_server->channel_args(),
115
+ args_to_add,
116
+ GPR_ARRAY_SIZE(args_to_add));
65
117
  }
66
- // Create channel args.
67
- grpc_arg args_to_add[2];
68
- args_to_add[0] = grpc_server_credentials_to_arg(creds);
69
- args_to_add[1] = grpc_security_connector_to_arg(sc.get());
70
- args =
71
- grpc_channel_args_copy_and_add(server->core_server->channel_args(),
72
- args_to_add, GPR_ARRAY_SIZE(args_to_add));
73
118
  // Add server port.
74
119
  err = grpc_core::Chttp2ServerAddPort(server->core_server.get(), addr, args,
75
- &port_num);
120
+ ModifyArgsForConnection, &port_num);
76
121
  done:
77
122
  sc.reset(DEBUG_LOCATION, "server");
78
-
79
123
  if (err != GRPC_ERROR_NONE) {
80
- const char* msg = grpc_error_string(err);
81
- gpr_log(GPR_ERROR, "%s", msg);
124
+ gpr_log(GPR_ERROR, "%s", grpc_error_std_string(err).c_str());
82
125
 
83
126
  GRPC_ERROR_UNREF(err);
84
127
  }
@@ -100,23 +100,23 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
100
100
  "chttp2_refcount");
101
101
 
102
102
  // forward declarations of various callbacks that we'll build closures around
103
- static void write_action_begin_locked(void* t, grpc_error* error);
104
- static void write_action(void* t, grpc_error* error);
105
- static void write_action_end(void* t, grpc_error* error);
106
- static void write_action_end_locked(void* t, grpc_error* error);
103
+ static void write_action_begin_locked(void* t, grpc_error_handle error);
104
+ static void write_action(void* t, grpc_error_handle error);
105
+ static void write_action_end(void* t, grpc_error_handle error);
106
+ static void write_action_end_locked(void* t, grpc_error_handle error);
107
107
 
108
- static void read_action(void* t, grpc_error* error);
109
- static void read_action_locked(void* t, grpc_error* error);
108
+ static void read_action(void* t, grpc_error_handle error);
109
+ static void read_action_locked(void* t, grpc_error_handle error);
110
110
  static void continue_read_action_locked(grpc_chttp2_transport* t);
111
111
 
112
- static void complete_fetch(void* gs, grpc_error* error);
113
- static void complete_fetch_locked(void* gs, grpc_error* error);
112
+ static void complete_fetch(void* gs, grpc_error_handle error);
113
+ static void complete_fetch_locked(void* gs, grpc_error_handle error);
114
114
  // Set a transport level setting, and push it to our peer
115
115
  static void queue_setting_update(grpc_chttp2_transport* t,
116
116
  grpc_chttp2_setting_id id, uint32_t value);
117
117
 
118
118
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
119
- grpc_error* error);
119
+ grpc_error_handle error);
120
120
 
121
121
  // Start new streams that have been created if we can
122
122
  static void maybe_start_some_streams(grpc_chttp2_transport* t);
@@ -126,45 +126,68 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
126
126
  const absl::Status& status,
127
127
  const char* reason);
128
128
 
129
- static void benign_reclaimer(void* 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);
129
+ static void benign_reclaimer(void* arg, grpc_error_handle error);
130
+ static void destructive_reclaimer(void* arg, grpc_error_handle error);
131
+ static void benign_reclaimer_locked(void* arg, grpc_error_handle error);
132
+ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error);
133
133
 
134
134
  static void post_benign_reclaimer(grpc_chttp2_transport* t);
135
135
  static void post_destructive_reclaimer(grpc_chttp2_transport* t);
136
136
 
137
- static void close_transport_locked(grpc_chttp2_transport* t, grpc_error* error);
138
- static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error);
139
-
140
- static void start_bdp_ping(void* tp, grpc_error* error);
141
- static void finish_bdp_ping(void* tp, grpc_error* error);
142
- static void start_bdp_ping_locked(void* tp, grpc_error* error);
143
- static void finish_bdp_ping_locked(void* tp, grpc_error* error);
144
- static void next_bdp_ping_timer_expired(void* tp, grpc_error* error);
145
- static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error);
146
-
147
- static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error);
137
+ static void close_transport_locked(grpc_chttp2_transport* t,
138
+ grpc_error_handle error);
139
+ static void end_all_the_calls(grpc_chttp2_transport* t,
140
+ grpc_error_handle error);
141
+
142
+ static void start_bdp_ping(void* tp, grpc_error_handle error);
143
+ static void finish_bdp_ping(void* tp, grpc_error_handle error);
144
+ static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
145
+ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
146
+ static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error);
147
+ static void next_bdp_ping_timer_expired_locked(void* tp,
148
+ grpc_error_handle error);
149
+
150
+ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
148
151
  static void send_ping_locked(grpc_chttp2_transport* t,
149
152
  grpc_closure* on_initiate, grpc_closure* on_ack);
150
- static void retry_initiate_ping_locked(void* tp, grpc_error* error);
153
+ static void retry_initiate_ping_locked(void* tp, grpc_error_handle error);
151
154
 
152
155
  // keepalive-relevant functions
153
- static void init_keepalive_ping(void* arg, grpc_error* error);
154
- static void init_keepalive_ping_locked(void* arg, grpc_error* error);
155
- static void start_keepalive_ping(void* arg, grpc_error* error);
156
- static void finish_keepalive_ping(void* arg, grpc_error* error);
157
- static void start_keepalive_ping_locked(void* arg, grpc_error* error);
158
- static void finish_keepalive_ping_locked(void* arg, grpc_error* error);
159
- static void keepalive_watchdog_fired(void* arg, grpc_error* error);
160
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error);
156
+ static void init_keepalive_ping(void* arg, grpc_error_handle error);
157
+ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error);
158
+ static void start_keepalive_ping(void* arg, grpc_error_handle error);
159
+ static void finish_keepalive_ping(void* arg, grpc_error_handle error);
160
+ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
161
+ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
162
+ static void keepalive_watchdog_fired(void* arg, grpc_error_handle error);
163
+ static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error);
161
164
 
162
- static void reset_byte_stream(void* arg, grpc_error* error);
165
+ static void reset_byte_stream(void* arg, grpc_error_handle error);
163
166
 
164
167
  // Flow control default enabled. Can be disabled by setting
165
168
  // GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
166
169
  bool g_flow_control_enabled = true;
167
170
 
171
+ namespace grpc_core {
172
+
173
+ namespace {
174
+ TestOnlyGlobalHttp2TransportInitCallback test_only_init_callback = nullptr;
175
+ TestOnlyGlobalHttp2TransportDestructCallback test_only_destruct_callback =
176
+ nullptr;
177
+ } // namespace
178
+
179
+ void TestOnlySetGlobalHttp2TransportInitCallback(
180
+ TestOnlyGlobalHttp2TransportInitCallback callback) {
181
+ test_only_init_callback = callback;
182
+ }
183
+
184
+ void TestOnlySetGlobalHttp2TransportDestructCallback(
185
+ TestOnlyGlobalHttp2TransportDestructCallback callback) {
186
+ test_only_destruct_callback = callback;
187
+ }
188
+
189
+ } // namespace grpc_core
190
+
168
191
  //
169
192
  // CONSTRUCTION/DESTRUCTION/REFCOUNTING
170
193
  //
@@ -183,7 +206,7 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
183
206
  grpc_slice_buffer_destroy_internal(&outbuf);
184
207
  grpc_chttp2_hpack_compressor_destroy(&hpack_compressor);
185
208
 
186
- grpc_error* error =
209
+ grpc_error_handle error =
187
210
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
188
211
  // ContextList::Execute follows semantics of a callback function and does not
189
212
  // take a ref on error
@@ -221,6 +244,9 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
221
244
 
222
245
  GRPC_ERROR_UNREF(closed_with_error);
223
246
  gpr_free(ping_acks);
247
+ if (grpc_core::test_only_destruct_callback != nullptr) {
248
+ grpc_core::test_only_destruct_callback();
249
+ }
224
250
  }
225
251
 
226
252
  static const grpc_transport_vtable* get_vtable(void);
@@ -366,7 +392,9 @@ static bool read_channel_args(grpc_chttp2_transport* t,
366
392
  t->channelz_socket =
367
393
  grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
368
394
  std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
369
- absl::StrFormat("%s %s", get_vtable()->name, t->peer_string));
395
+ absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
396
+ grpc_core::channelz::SocketNode::Security::GetFromChannelArgs(
397
+ channel_args));
370
398
  }
371
399
  return enable_bdp;
372
400
  }
@@ -504,9 +532,12 @@ grpc_chttp2_transport::grpc_chttp2_transport(
504
532
 
505
533
  grpc_chttp2_initiate_write(this, GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE);
506
534
  post_benign_reclaimer(this);
535
+ if (grpc_core::test_only_init_callback != nullptr) {
536
+ grpc_core::test_only_init_callback();
537
+ }
507
538
  }
508
539
 
509
- static void destroy_transport_locked(void* tp, grpc_error* /*error*/) {
540
+ static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
510
541
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
511
542
  t->destroying = 1;
512
543
  close_transport_locked(
@@ -524,7 +555,7 @@ static void destroy_transport(grpc_transport* gt) {
524
555
  }
525
556
 
526
557
  static void close_transport_locked(grpc_chttp2_transport* t,
527
- grpc_error* error) {
558
+ grpc_error_handle error) {
528
559
  end_all_the_calls(t, GRPC_ERROR_REF(error));
529
560
  cancel_pings(t, GRPC_ERROR_REF(error));
530
561
  if (t->closed_with_error == GRPC_ERROR_NONE) {
@@ -579,6 +610,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
579
610
  GRPC_ERROR_REF(error));
580
611
  t->notify_on_receive_settings = nullptr;
581
612
  }
613
+ if (t->notify_on_close != nullptr) {
614
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
615
+ GRPC_ERROR_REF(error));
616
+ t->notify_on_close = nullptr;
617
+ }
582
618
  GRPC_ERROR_UNREF(error);
583
619
  }
584
620
 
@@ -698,7 +734,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs,
698
734
  return 0;
699
735
  }
700
736
 
701
- static void destroy_stream_locked(void* sp, grpc_error* /*error*/) {
737
+ static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
702
738
  GPR_TIMER_SCOPE("destroy_stream", 0);
703
739
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
704
740
  s->~grpc_chttp2_stream();
@@ -786,7 +822,7 @@ static void set_write_state(grpc_chttp2_transport* t,
786
822
  if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
787
823
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
788
824
  if (t->close_transport_on_writes_finished != nullptr) {
789
- grpc_error* err = t->close_transport_on_writes_finished;
825
+ grpc_error_handle err = t->close_transport_on_writes_finished;
790
826
  t->close_transport_on_writes_finished = nullptr;
791
827
  close_transport_locked(t, err);
792
828
  }
@@ -918,7 +954,8 @@ static const char* begin_writing_desc(bool partial) {
918
954
  }
919
955
  }
920
956
 
921
- static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
957
+ static void write_action_begin_locked(void* gt,
958
+ grpc_error_handle /*error_ignored*/) {
922
959
  GPR_TIMER_SCOPE("write_action_begin_locked", 0);
923
960
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
924
961
  GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
@@ -957,7 +994,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
957
994
  }
958
995
  }
959
996
 
960
- static void write_action(void* gt, grpc_error* /*error*/) {
997
+ static void write_action(void* gt, grpc_error_handle /*error*/) {
961
998
  GPR_TIMER_SCOPE("write_action", 0);
962
999
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
963
1000
  void* cl = t->cl;
@@ -969,7 +1006,7 @@ static void write_action(void* gt, grpc_error* /*error*/) {
969
1006
  cl);
970
1007
  }
971
1008
 
972
- static void write_action_end(void* tp, grpc_error* error) {
1009
+ static void write_action_end(void* tp, grpc_error_handle error) {
973
1010
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
974
1011
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
975
1012
  write_action_end_locked, t, nullptr),
@@ -978,7 +1015,7 @@ static void write_action_end(void* tp, grpc_error* error) {
978
1015
 
979
1016
  // Callback from the grpc_endpoint after bytes have been written by calling
980
1017
  // sendmsg
981
- static void write_action_end_locked(void* tp, grpc_error* error) {
1018
+ static void write_action_end_locked(void* tp, grpc_error_handle error) {
982
1019
  GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
983
1020
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
984
1021
 
@@ -1067,7 +1104,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1067
1104
  // received a GOAWAY with a non NO_ERROR code.
1068
1105
  if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1069
1106
  gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
1070
- goaway_error, grpc_error_string(t->goaway_error));
1107
+ goaway_error, grpc_error_std_string(t->goaway_error).c_str());
1071
1108
  }
1072
1109
  absl::Status status = grpc_error_to_absl_status(t->goaway_error);
1073
1110
  // When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
@@ -1173,7 +1210,8 @@ static void null_then_sched_closure(grpc_closure** closure) {
1173
1210
  void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1174
1211
  grpc_chttp2_stream* /*s*/,
1175
1212
  grpc_closure** pclosure,
1176
- grpc_error* error, const char* desc) {
1213
+ grpc_error_handle error,
1214
+ const char* desc) {
1177
1215
  grpc_closure* closure = *pclosure;
1178
1216
  *pclosure = nullptr;
1179
1217
  if (closure == nullptr) {
@@ -1182,7 +1220,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1182
1220
  }
1183
1221
  closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
1184
1222
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1185
- const char* errstr = grpc_error_string(error);
1186
1223
  gpr_log(
1187
1224
  GPR_INFO,
1188
1225
  "complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
@@ -1192,7 +1229,8 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1192
1229
  CLOSURE_BARRIER_FIRST_REF_BIT),
1193
1230
  static_cast<int>(closure->next_data.scratch %
1194
1231
  CLOSURE_BARRIER_FIRST_REF_BIT),
1195
- desc, errstr, write_state_name(t->write_state));
1232
+ desc, grpc_error_std_string(error).c_str(),
1233
+ write_state_name(t->write_state));
1196
1234
  }
1197
1235
  if (error != GRPC_ERROR_NONE) {
1198
1236
  if (closure->error_data.error == GRPC_ERROR_NONE) {
@@ -1281,7 +1319,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1281
1319
  UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
1282
1320
  ::complete_fetch, s,
1283
1321
  grpc_schedule_on_exec_ctx))) {
1284
- grpc_error* error = s->fetching_send_message->Pull(&s->fetching_slice);
1322
+ grpc_error_handle error =
1323
+ s->fetching_send_message->Pull(&s->fetching_slice);
1285
1324
  if (error != GRPC_ERROR_NONE) {
1286
1325
  s->fetching_send_message.reset();
1287
1326
  grpc_chttp2_cancel_stream(t, s, error);
@@ -1292,14 +1331,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
1292
1331
  }
1293
1332
  }
1294
1333
 
1295
- static void complete_fetch(void* gs, grpc_error* error) {
1334
+ static void complete_fetch(void* gs, grpc_error_handle error) {
1296
1335
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
1297
1336
  s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
1298
1337
  ::complete_fetch_locked, s, nullptr),
1299
1338
  GRPC_ERROR_REF(error));
1300
1339
  }
1301
1340
 
1302
- static void complete_fetch_locked(void* gs, grpc_error* error) {
1341
+ static void complete_fetch_locked(void* gs, grpc_error_handle error) {
1303
1342
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
1304
1343
  grpc_chttp2_transport* t = s->t;
1305
1344
  if (error == GRPC_ERROR_NONE) {
@@ -1329,7 +1368,7 @@ static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
1329
1368
  }
1330
1369
 
1331
1370
  static void perform_stream_op_locked(void* stream_op,
1332
- grpc_error* /*error_ignored*/) {
1371
+ grpc_error_handle /*error_ignored*/) {
1333
1372
  GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
1334
1373
 
1335
1374
  grpc_transport_stream_op_batch* op =
@@ -1613,7 +1652,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1613
1652
  GRPC_ERROR_NONE);
1614
1653
  }
1615
1654
 
1616
- static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) {
1655
+ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
1617
1656
  // callback remaining pings: they're not allowed to call into the transport,
1618
1657
  // and maybe they hold resources that need to be freed
1619
1658
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
@@ -1680,14 +1719,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1680
1719
  GRPC_ERROR_NONE);
1681
1720
  }
1682
1721
 
1683
- void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error* error) {
1722
+ void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
1684
1723
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1685
1724
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
1686
1725
  retry_initiate_ping_locked, t, nullptr),
1687
1726
  GRPC_ERROR_REF(error));
1688
1727
  }
1689
1728
 
1690
- static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
1729
+ static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
1691
1730
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1692
1731
  t->ping_state.is_delayed_ping_timer_set = false;
1693
1732
  if (error == GRPC_ERROR_NONE) {
@@ -1710,10 +1749,10 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1710
1749
  }
1711
1750
  }
1712
1751
 
1713
- static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) {
1752
+ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
1714
1753
  // We want to log this irrespective of whether http tracing is enabled
1715
1754
  gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1716
- grpc_error_string(error));
1755
+ grpc_error_std_string(error).c_str());
1717
1756
  t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
1718
1757
  grpc_http2_error_code http_error;
1719
1758
  grpc_slice slice;
@@ -1751,7 +1790,7 @@ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
1751
1790
  }
1752
1791
 
1753
1792
  static void perform_transport_op_locked(void* stream_op,
1754
- grpc_error* /*error_ignored*/) {
1793
+ grpc_error_handle /*error_ignored*/) {
1755
1794
  grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
1756
1795
  grpc_chttp2_transport* t =
1757
1796
  static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
@@ -1831,7 +1870,7 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
1831
1870
 
1832
1871
  void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
1833
1872
  grpc_chttp2_stream* s) {
1834
- grpc_error* error = GRPC_ERROR_NONE;
1873
+ grpc_error_handle error = GRPC_ERROR_NONE;
1835
1874
  if (s->recv_message_ready != nullptr) {
1836
1875
  *s->recv_message = nullptr;
1837
1876
  if (s->final_metadata_requested && s->seen_error) {
@@ -1981,7 +2020,7 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1981
2020
  }
1982
2021
 
1983
2022
  static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
1984
- grpc_error* error) {
2023
+ grpc_error_handle error) {
1985
2024
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
1986
2025
  grpc_chttp2_stream_map_delete(&t->stream_map, id));
1987
2026
  GPR_DEBUG_ASSERT(s);
@@ -2024,7 +2063,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2024
2063
  }
2025
2064
 
2026
2065
  void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2027
- grpc_error* due_to_error) {
2066
+ grpc_error_handle due_to_error) {
2028
2067
  if (!t->is_client && !s->sent_trailing_metadata &&
2029
2068
  grpc_error_has_clear_grpc_status(due_to_error)) {
2030
2069
  close_from_api(t, s, due_to_error);
@@ -2048,7 +2087,7 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2048
2087
  }
2049
2088
 
2050
2089
  void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2051
- grpc_error* error) {
2090
+ grpc_error_handle error) {
2052
2091
  grpc_status_code status;
2053
2092
  grpc_slice slice;
2054
2093
  grpc_error_get_status(error, s->deadline, &status, &slice, nullptr, nullptr);
@@ -2085,7 +2124,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2085
2124
  GRPC_ERROR_UNREF(error);
2086
2125
  }
2087
2126
 
2088
- static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
2127
+ static void add_error(grpc_error_handle error, grpc_error_handle* refs,
2128
+ size_t* nrefs) {
2089
2129
  if (error == GRPC_ERROR_NONE) return;
2090
2130
  for (size_t i = 0; i < *nrefs; i++) {
2091
2131
  if (error == refs[i]) {
@@ -2096,16 +2136,17 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
2096
2136
  ++*nrefs;
2097
2137
  }
2098
2138
 
2099
- static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
2100
- const char* master_error_msg) {
2101
- grpc_error* refs[3];
2139
+ static grpc_error_handle removal_error(grpc_error_handle extra_error,
2140
+ grpc_chttp2_stream* s,
2141
+ const char* main_error_msg) {
2142
+ grpc_error_handle refs[3];
2102
2143
  size_t nrefs = 0;
2103
2144
  add_error(s->read_closed_error, refs, &nrefs);
2104
2145
  add_error(s->write_closed_error, refs, &nrefs);
2105
2146
  add_error(extra_error, refs, &nrefs);
2106
- grpc_error* error = GRPC_ERROR_NONE;
2147
+ grpc_error_handle error = GRPC_ERROR_NONE;
2107
2148
  if (nrefs > 0) {
2108
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(master_error_msg,
2149
+ error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
2109
2150
  refs, nrefs);
2110
2151
  }
2111
2152
  GRPC_ERROR_UNREF(extra_error);
@@ -2113,7 +2154,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
2113
2154
  }
2114
2155
 
2115
2156
  static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2116
- grpc_chttp2_write_cb** list, grpc_error* error) {
2157
+ grpc_chttp2_write_cb** list,
2158
+ grpc_error_handle error) {
2117
2159
  while (*list) {
2118
2160
  grpc_chttp2_write_cb* cb = *list;
2119
2161
  *list = cb->next;
@@ -2126,7 +2168,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2126
2168
  }
2127
2169
 
2128
2170
  void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2129
- grpc_chttp2_stream* s, grpc_error* error) {
2171
+ grpc_chttp2_stream* s,
2172
+ grpc_error_handle error) {
2130
2173
  error =
2131
2174
  removal_error(error, s, "Pending writes failed due to stream closure");
2132
2175
  s->send_initial_metadata = nullptr;
@@ -2150,10 +2193,10 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2150
2193
 
2151
2194
  void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2152
2195
  grpc_chttp2_stream* s, int close_reads,
2153
- int close_writes, grpc_error* error) {
2196
+ int close_writes, grpc_error_handle error) {
2154
2197
  if (s->read_closed && s->write_closed) {
2155
2198
  // already closed, but we should still fake the status if needed.
2156
- grpc_error* overall_error = removal_error(error, s, "Stream removed");
2199
+ grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2157
2200
  if (overall_error != GRPC_ERROR_NONE) {
2158
2201
  grpc_chttp2_fake_status(t, s, overall_error);
2159
2202
  }
@@ -2174,7 +2217,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2174
2217
  }
2175
2218
  if (s->read_closed && s->write_closed) {
2176
2219
  became_closed = true;
2177
- grpc_error* overall_error =
2220
+ grpc_error_handle overall_error =
2178
2221
  removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
2179
2222
  if (s->id != 0) {
2180
2223
  remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
@@ -2203,7 +2246,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2203
2246
  }
2204
2247
 
2205
2248
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2206
- grpc_error* error) {
2249
+ grpc_error_handle error) {
2207
2250
  grpc_slice hdr;
2208
2251
  grpc_slice status_hdr;
2209
2252
  grpc_slice http_status_hdr;
@@ -2361,7 +2404,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2361
2404
  }
2362
2405
 
2363
2406
  struct cancel_stream_cb_args {
2364
- grpc_error* error;
2407
+ grpc_error_handle error;
2365
2408
  grpc_chttp2_transport* t;
2366
2409
  };
2367
2410
 
@@ -2371,7 +2414,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
2371
2414
  grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
2372
2415
  }
2373
2416
 
2374
- static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
2417
+ static void end_all_the_calls(grpc_chttp2_transport* t,
2418
+ grpc_error_handle error) {
2375
2419
  intptr_t http2_error;
2376
2420
  // If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
2377
2421
  if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
@@ -2425,15 +2469,15 @@ void grpc_chttp2_act_on_flowctl_action(
2425
2469
  });
2426
2470
  }
2427
2471
 
2428
- static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
2472
+ static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
2429
2473
  grpc_http_parser parser;
2430
2474
  size_t i = 0;
2431
- grpc_error* error = GRPC_ERROR_NONE;
2475
+ grpc_error_handle error = GRPC_ERROR_NONE;
2432
2476
  grpc_http_response response;
2433
2477
 
2434
2478
  grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
2435
2479
 
2436
- grpc_error* parse_error = GRPC_ERROR_NONE;
2480
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
2437
2481
  for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
2438
2482
  parse_error =
2439
2483
  grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
@@ -2454,34 +2498,34 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
2454
2498
  return error;
2455
2499
  }
2456
2500
 
2457
- static void read_action(void* tp, grpc_error* error) {
2501
+ static void read_action(void* tp, grpc_error_handle error) {
2458
2502
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2459
2503
  t->combiner->Run(
2460
2504
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
2461
2505
  GRPC_ERROR_REF(error));
2462
2506
  }
2463
2507
 
2464
- static void read_action_locked(void* tp, grpc_error* error) {
2508
+ static void read_action_locked(void* tp, grpc_error_handle error) {
2465
2509
  GPR_TIMER_SCOPE("reading_action_locked", 0);
2466
2510
 
2467
2511
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2468
2512
 
2469
2513
  GRPC_ERROR_REF(error);
2470
2514
 
2471
- grpc_error* err = error;
2515
+ grpc_error_handle err = error;
2472
2516
  if (err != GRPC_ERROR_NONE) {
2473
2517
  err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2474
2518
  "Endpoint read failed", &err, 1),
2475
2519
  GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
2476
2520
  t->write_state);
2477
2521
  }
2478
- GPR_SWAP(grpc_error*, err, error);
2522
+ GPR_SWAP(grpc_error_handle, err, error);
2479
2523
  GRPC_ERROR_UNREF(err);
2480
2524
  if (t->closed_with_error == GRPC_ERROR_NONE) {
2481
2525
  GPR_TIMER_SCOPE("reading_action.parse", 0);
2482
2526
  size_t i = 0;
2483
- grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2484
- GRPC_ERROR_NONE};
2527
+ grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2528
+ GRPC_ERROR_NONE};
2485
2529
  for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
2486
2530
  errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
2487
2531
  }
@@ -2569,23 +2613,21 @@ void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2569
2613
  grpc_schedule_on_exec_ctx),
2570
2614
  GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
2571
2615
  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);
2616
+ grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2575
2617
  }
2576
2618
 
2577
- static void start_bdp_ping(void* tp, grpc_error* error) {
2619
+ static void start_bdp_ping(void* tp, grpc_error_handle error) {
2578
2620
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2579
2621
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
2580
2622
  start_bdp_ping_locked, t, nullptr),
2581
2623
  GRPC_ERROR_REF(error));
2582
2624
  }
2583
2625
 
2584
- static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2626
+ static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2585
2627
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2586
2628
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2587
2629
  gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
2588
- grpc_error_string(error));
2630
+ grpc_error_std_string(error).c_str());
2589
2631
  }
2590
2632
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2591
2633
  return;
@@ -2598,18 +2640,18 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
2598
2640
  t->bdp_ping_started = true;
2599
2641
  }
2600
2642
 
2601
- static void finish_bdp_ping(void* tp, grpc_error* error) {
2643
+ static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2602
2644
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2603
2645
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2604
2646
  finish_bdp_ping_locked, t, nullptr),
2605
2647
  GRPC_ERROR_REF(error));
2606
2648
  }
2607
2649
 
2608
- static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2650
+ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2609
2651
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2610
2652
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2611
2653
  gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
2612
- grpc_error_string(error));
2654
+ grpc_error_std_string(error).c_str());
2613
2655
  }
2614
2656
  if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
2615
2657
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
@@ -2635,7 +2677,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
2635
2677
  &t->next_bdp_ping_timer_expired_locked);
2636
2678
  }
2637
2679
 
2638
- static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
2680
+ static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
2639
2681
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2640
2682
  t->combiner->Run(
2641
2683
  GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
@@ -2643,7 +2685,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
2643
2685
  GRPC_ERROR_REF(error));
2644
2686
  }
2645
2687
 
2646
- static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
2688
+ static void next_bdp_ping_timer_expired_locked(void* tp,
2689
+ grpc_error_handle error) {
2647
2690
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2648
2691
  GPR_ASSERT(t->have_next_bdp_ping_timer);
2649
2692
  t->have_next_bdp_ping_timer = false;
@@ -2719,14 +2762,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2719
2762
  }
2720
2763
  }
2721
2764
 
2722
- static void init_keepalive_ping(void* arg, grpc_error* error) {
2765
+ static void init_keepalive_ping(void* arg, grpc_error_handle error) {
2723
2766
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2724
2767
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
2725
2768
  init_keepalive_ping_locked, t, nullptr),
2726
2769
  GRPC_ERROR_REF(error));
2727
2770
  }
2728
2771
 
2729
- static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2772
+ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2730
2773
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2731
2774
  GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
2732
2775
  if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
@@ -2759,14 +2802,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
2759
2802
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
2760
2803
  }
2761
2804
 
2762
- static void start_keepalive_ping(void* arg, grpc_error* error) {
2805
+ static void start_keepalive_ping(void* arg, grpc_error_handle error) {
2763
2806
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2764
2807
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
2765
2808
  start_keepalive_ping_locked, t, nullptr),
2766
2809
  GRPC_ERROR_REF(error));
2767
2810
  }
2768
2811
 
2769
- static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2812
+ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2770
2813
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2771
2814
  if (error != GRPC_ERROR_NONE) {
2772
2815
  return;
@@ -2787,14 +2830,14 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
2787
2830
  t->keepalive_ping_started = true;
2788
2831
  }
2789
2832
 
2790
- static void finish_keepalive_ping(void* arg, grpc_error* error) {
2833
+ static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
2791
2834
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2792
2835
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2793
2836
  finish_keepalive_ping_locked, t, nullptr),
2794
2837
  GRPC_ERROR_REF(error));
2795
2838
  }
2796
2839
 
2797
- static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2840
+ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2798
2841
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2799
2842
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2800
2843
  if (error == GRPC_ERROR_NONE) {
@@ -2825,7 +2868,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
2825
2868
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
2826
2869
  }
2827
2870
 
2828
- static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
2871
+ static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
2829
2872
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2830
2873
  t->combiner->Run(
2831
2874
  GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
@@ -2833,7 +2876,8 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
2833
2876
  GRPC_ERROR_REF(error));
2834
2877
  }
2835
2878
 
2836
- static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2879
+ static void keepalive_watchdog_fired_locked(void* arg,
2880
+ grpc_error_handle error) {
2837
2881
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2838
2882
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2839
2883
  if (error == GRPC_ERROR_NONE) {
@@ -2890,7 +2934,7 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
2890
2934
  // BYTE STREAM
2891
2935
  //
2892
2936
 
2893
- static void reset_byte_stream(void* arg, grpc_error* error) {
2937
+ static void reset_byte_stream(void* arg, grpc_error_handle error) {
2894
2938
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
2895
2939
  s->pending_byte_stream = false;
2896
2940
  if (error == GRPC_ERROR_NONE) {
@@ -2921,8 +2965,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream(
2921
2965
  stream->byte_stream_error = GRPC_ERROR_NONE;
2922
2966
  }
2923
2967
 
2924
- void Chttp2IncomingByteStream::OrphanLocked(void* arg,
2925
- grpc_error* /*error_ignored*/) {
2968
+ void Chttp2IncomingByteStream::OrphanLocked(
2969
+ void* arg, grpc_error_handle /*error_ignored*/) {
2926
2970
  Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
2927
2971
  grpc_chttp2_stream* s = bs->stream_;
2928
2972
  grpc_chttp2_transport* t = s->t;
@@ -2941,7 +2985,7 @@ void Chttp2IncomingByteStream::Orphan() {
2941
2985
  }
2942
2986
 
2943
2987
  void Chttp2IncomingByteStream::NextLocked(void* arg,
2944
- grpc_error* /*error_ignored*/) {
2988
+ grpc_error_handle /*error_ignored*/) {
2945
2989
  Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
2946
2990
  grpc_chttp2_transport* t = bs->transport_;
2947
2991
  grpc_chttp2_stream* s = bs->stream_;
@@ -3011,9 +3055,9 @@ void Chttp2IncomingByteStream::MaybeCreateStreamDecompressionCtx() {
3011
3055
  }
3012
3056
  }
3013
3057
 
3014
- grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3058
+ grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3015
3059
  GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
3016
- grpc_error* error;
3060
+ grpc_error_handle error;
3017
3061
  if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
3018
3062
  if (!stream_->unprocessed_incoming_frames_decompressed &&
3019
3063
  stream_->stream_decompression_method !=
@@ -3056,7 +3100,7 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
3056
3100
  return GRPC_ERROR_NONE;
3057
3101
  }
3058
3102
 
3059
- void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
3103
+ void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
3060
3104
  GPR_ASSERT(error != GRPC_ERROR_NONE);
3061
3105
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, stream_->on_next,
3062
3106
  GRPC_ERROR_REF(error));
@@ -3066,10 +3110,10 @@ void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
3066
3110
  grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
3067
3111
  }
3068
3112
 
3069
- grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3070
- grpc_slice* slice_out) {
3113
+ grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3114
+ grpc_slice* slice_out) {
3071
3115
  if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
3072
- grpc_error* error =
3116
+ grpc_error_handle error =
3073
3117
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
3074
3118
  transport_->combiner->Run(&stream_->reset_byte_stream,
3075
3119
  GRPC_ERROR_REF(error));
@@ -3084,8 +3128,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
3084
3128
  }
3085
3129
  }
3086
3130
 
3087
- grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
3088
- bool reset_on_error) {
3131
+ grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
3132
+ bool reset_on_error) {
3089
3133
  if (error == GRPC_ERROR_NONE) {
3090
3134
  if (remaining_bytes_ != 0) {
3091
3135
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
@@ -3099,7 +3143,7 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
3099
3143
  return error;
3100
3144
  }
3101
3145
 
3102
- void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
3146
+ void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
3103
3147
  GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
3104
3148
  }
3105
3149
 
@@ -3131,14 +3175,14 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
3131
3175
  }
3132
3176
  }
3133
3177
 
3134
- static void benign_reclaimer(void* arg, grpc_error* error) {
3178
+ static void benign_reclaimer(void* arg, grpc_error_handle error) {
3135
3179
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3136
3180
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
3137
3181
  benign_reclaimer_locked, t, nullptr),
3138
3182
  GRPC_ERROR_REF(error));
3139
3183
  }
3140
3184
 
3141
- static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3185
+ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
3142
3186
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3143
3187
  if (error == GRPC_ERROR_NONE &&
3144
3188
  grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
@@ -3168,14 +3212,14 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
3168
3212
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3169
3213
  }
3170
3214
 
3171
- static void destructive_reclaimer(void* arg, grpc_error* error) {
3215
+ static void destructive_reclaimer(void* arg, grpc_error_handle error) {
3172
3216
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3173
3217
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
3174
3218
  destructive_reclaimer_locked, t, nullptr),
3175
3219
  GRPC_ERROR_REF(error));
3176
3220
  }
3177
3221
 
3178
- static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
3222
+ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
3179
3223
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3180
3224
  size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
3181
3225
  t->destructive_reclaimer_registered = false;
@@ -3293,7 +3337,7 @@ grpc_transport* grpc_create_chttp2_transport(
3293
3337
 
3294
3338
  void grpc_chttp2_transport_start_reading(
3295
3339
  grpc_transport* transport, grpc_slice_buffer* read_buffer,
3296
- grpc_closure* notify_on_receive_settings) {
3340
+ grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close) {
3297
3341
  grpc_chttp2_transport* t =
3298
3342
  reinterpret_cast<grpc_chttp2_transport*>(transport);
3299
3343
  GRPC_CHTTP2_REF_TRANSPORT(
@@ -3303,6 +3347,7 @@ void grpc_chttp2_transport_start_reading(
3303
3347
  gpr_free(read_buffer);
3304
3348
  }
3305
3349
  t->notify_on_receive_settings = notify_on_receive_settings;
3350
+ t->notify_on_close = notify_on_close;
3306
3351
  t->combiner->Run(
3307
3352
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
3308
3353
  GRPC_ERROR_NONE);