grpc 1.53.2 → 1.54.0

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

Potentially problematic release.


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

Files changed (693) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +78 -66
  3. data/include/grpc/event_engine/event_engine.h +30 -14
  4. data/include/grpc/grpc_security.h +4 -0
  5. data/include/grpc/support/port_platform.h +4 -4
  6. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
  7. data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
  8. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
  9. data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
  10. data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
  11. data/src/core/ext/filters/client_channel/client_channel.h +131 -173
  12. data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
  13. data/src/core/ext/filters/client_channel/config_selector.h +4 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
  16. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
  17. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
  18. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
  19. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
  20. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
  21. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
  26. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
  27. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
  28. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
  29. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
  30. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  31. data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
  32. data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
  33. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
  34. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
  35. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
  36. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
  37. data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
  38. data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
  39. data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
  40. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
  41. data/src/core/ext/gcp/metadata_query.cc +142 -0
  42. data/src/core/ext/gcp/metadata_query.h +82 -0
  43. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
  44. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -12
  45. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -5
  46. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +116 -58
  47. data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
  48. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
  49. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
  50. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +222 -118
  51. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +113 -295
  52. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -2
  53. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -2
  54. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +277 -451
  55. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
  56. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -14
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -9
  58. data/src/core/ext/transport/chttp2/transport/internal.h +16 -3
  59. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  60. data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
  61. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
  62. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
  63. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
  64. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
  65. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
  66. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
  67. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
  68. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
  69. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
  70. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
  71. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
  72. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
  73. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
  74. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
  75. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
  76. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
  77. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
  78. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
  79. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
  80. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
  81. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
  82. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
  83. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
  84. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
  85. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
  86. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
  87. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
  92. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
  94. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
  95. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
  97. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
  98. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
  99. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
  100. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
  101. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
  102. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
  103. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
  104. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
  105. data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
  106. data/src/core/ext/xds/xds_client_stats.cc +29 -15
  107. data/src/core/ext/xds/xds_client_stats.h +24 -20
  108. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  109. data/src/core/ext/xds/xds_endpoint.h +9 -1
  110. data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
  111. data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
  112. data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
  113. data/src/core/lib/channel/call_finalization.h +1 -1
  114. data/src/core/lib/channel/call_tracer.cc +51 -0
  115. data/src/core/lib/channel/call_tracer.h +101 -38
  116. data/src/core/lib/channel/connected_channel.cc +483 -1050
  117. data/src/core/lib/channel/context.h +8 -1
  118. data/src/core/lib/channel/promise_based_filter.cc +106 -42
  119. data/src/core/lib/channel/promise_based_filter.h +27 -13
  120. data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
  121. data/src/core/lib/config/config_vars.cc +151 -0
  122. data/src/core/lib/config/config_vars.h +127 -0
  123. data/src/core/lib/config/config_vars_non_generated.cc +51 -0
  124. data/src/core/lib/config/load_config.cc +66 -0
  125. data/src/core/lib/config/load_config.h +49 -0
  126. data/src/core/lib/debug/trace.cc +5 -6
  127. data/src/core/lib/debug/trace.h +0 -5
  128. data/src/core/lib/event_engine/event_engine.cc +37 -2
  129. data/src/core/lib/event_engine/handle_containers.h +7 -22
  130. data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
  131. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
  132. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
  133. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
  134. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
  135. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
  136. data/src/core/lib/event_engine/posix_engine/posix_engine.h +0 -1
  137. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -32
  138. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +0 -3
  139. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
  140. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
  141. data/src/core/lib/event_engine/resolved_address.cc +2 -1
  142. data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
  143. data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
  144. data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
  145. data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
  146. data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
  147. data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
  148. data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
  149. data/src/core/lib/experiments/config.cc +3 -10
  150. data/src/core/lib/experiments/experiments.cc +7 -0
  151. data/src/core/lib/experiments/experiments.h +9 -1
  152. data/src/core/lib/gpr/log.cc +15 -28
  153. data/src/core/lib/gprpp/fork.cc +8 -14
  154. data/src/core/lib/gprpp/orphanable.h +4 -3
  155. data/src/core/lib/gprpp/per_cpu.h +9 -3
  156. data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
  157. data/src/core/lib/gprpp/ref_counted.h +33 -34
  158. data/src/core/lib/gprpp/thd.h +16 -0
  159. data/src/core/lib/gprpp/time.cc +1 -0
  160. data/src/core/lib/gprpp/time.h +4 -4
  161. data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
  162. data/src/core/lib/iomgr/call_combiner.h +2 -2
  163. data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
  164. data/src/core/lib/iomgr/ev_posix.cc +13 -53
  165. data/src/core/lib/iomgr/ev_posix.h +0 -3
  166. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
  167. data/src/core/lib/iomgr/iomgr.cc +4 -8
  168. data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
  169. data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
  170. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  171. data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
  172. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
  173. data/src/core/lib/iomgr/tcp_posix.cc +0 -1
  174. data/src/core/lib/iomgr/tcp_server_posix.cc +19 -55
  175. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -12
  176. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
  177. data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
  178. data/src/core/lib/iomgr/tcp_windows.cc +12 -8
  179. data/src/core/lib/load_balancing/lb_policy.cc +9 -13
  180. data/src/core/lib/load_balancing/lb_policy.h +4 -2
  181. data/src/core/lib/promise/activity.cc +22 -6
  182. data/src/core/lib/promise/activity.h +61 -24
  183. data/src/core/lib/promise/cancel_callback.h +77 -0
  184. data/src/core/lib/promise/detail/basic_seq.h +1 -1
  185. data/src/core/lib/promise/detail/promise_factory.h +4 -0
  186. data/src/core/lib/promise/for_each.h +176 -0
  187. data/src/core/lib/promise/if.h +9 -0
  188. data/src/core/lib/promise/interceptor_list.h +23 -2
  189. data/src/core/lib/promise/latch.h +89 -3
  190. data/src/core/lib/promise/loop.h +13 -9
  191. data/src/core/lib/promise/map.h +7 -0
  192. data/src/core/lib/promise/party.cc +286 -0
  193. data/src/core/lib/promise/party.h +499 -0
  194. data/src/core/lib/promise/pipe.h +197 -57
  195. data/src/core/lib/promise/poll.h +48 -0
  196. data/src/core/lib/promise/promise.h +2 -2
  197. data/src/core/lib/resource_quota/arena.cc +19 -3
  198. data/src/core/lib/resource_quota/arena.h +119 -5
  199. data/src/core/lib/resource_quota/memory_quota.cc +1 -1
  200. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
  201. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  202. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
  203. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
  204. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  205. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
  206. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
  207. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
  208. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
  209. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
  210. data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
  211. data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
  212. data/src/core/lib/slice/slice.cc +1 -1
  213. data/src/core/lib/surface/builtins.cc +2 -0
  214. data/src/core/lib/surface/call.cc +926 -1024
  215. data/src/core/lib/surface/call.h +10 -0
  216. data/src/core/lib/surface/lame_client.cc +1 -0
  217. data/src/core/lib/surface/validate_metadata.cc +42 -43
  218. data/src/core/lib/surface/validate_metadata.h +0 -9
  219. data/src/core/lib/surface/version.cc +2 -2
  220. data/src/core/lib/transport/batch_builder.cc +179 -0
  221. data/src/core/lib/transport/batch_builder.h +468 -0
  222. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  223. data/src/core/lib/transport/bdp_estimator.h +10 -6
  224. data/src/core/lib/transport/custom_metadata.h +30 -0
  225. data/src/core/lib/transport/metadata_batch.cc +5 -2
  226. data/src/core/lib/transport/metadata_batch.h +17 -113
  227. data/src/core/lib/transport/parsed_metadata.h +6 -16
  228. data/src/core/lib/transport/timeout_encoding.cc +6 -1
  229. data/src/core/lib/transport/transport.cc +30 -2
  230. data/src/core/lib/transport/transport.h +70 -14
  231. data/src/core/lib/transport/transport_impl.h +7 -0
  232. data/src/core/lib/transport/transport_op_string.cc +52 -42
  233. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
  234. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
  235. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
  236. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
  237. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  238. data/src/core/tsi/ssl_transport_security.cc +4 -2
  239. data/src/ruby/lib/grpc/version.rb +1 -1
  240. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  241. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  242. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  243. data/third_party/abseil-cpp/absl/flags/config.h +68 -0
  244. data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
  245. data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
  246. data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
  247. data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
  248. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  249. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  250. data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
  251. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  252. data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  253. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  254. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  255. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  256. data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  257. data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
  258. data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  259. data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
  260. data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
  261. data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
  262. data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  263. data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
  264. data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  265. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
  266. data/third_party/boringssl-with-bazel/err_data.c +728 -712
  267. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
  268. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
  269. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
  270. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
  271. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
  272. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
  273. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
  274. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
  275. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
  276. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
  277. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
  278. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
  279. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
  280. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
  281. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
  282. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
  283. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
  284. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
  285. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
  286. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
  287. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
  288. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
  289. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
  290. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
  291. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
  292. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
  293. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
  294. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
  295. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
  296. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
  297. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
  298. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
  299. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
  300. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
  301. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
  302. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
  303. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
  304. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
  305. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
  306. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
  307. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
  308. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
  309. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
  310. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
  311. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
  312. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
  313. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
  314. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
  315. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
  316. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
  317. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
  318. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
  319. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
  320. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
  321. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
  322. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
  323. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
  324. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
  325. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
  326. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
  327. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
  328. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
  329. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
  330. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
  331. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
  332. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
  333. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
  334. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
  335. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
  336. data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
  337. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
  338. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
  339. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
  340. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
  341. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
  342. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
  343. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
  344. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
  345. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
  346. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
  347. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  348. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
  349. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
  350. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
  351. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
  352. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
  353. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
  354. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
  355. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
  356. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
  358. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
  359. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
  360. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
  361. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
  362. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
  363. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
  364. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
  365. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
  366. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
  367. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
  368. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
  369. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
  370. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
  371. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
  372. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
  373. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
  374. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
  375. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
  376. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
  377. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
  378. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
  379. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
  380. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
  381. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
  382. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  383. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
  384. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
  385. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
  386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
  387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
  388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
  389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
  390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
  391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
  392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
  393. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
  394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
  395. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
  396. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
  397. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
  398. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
  400. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
  402. data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
  403. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
  404. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
  405. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
  406. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
  407. data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
  410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
  437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
  438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
  439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
  440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
  441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
  442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
  443. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
  444. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
  445. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
  446. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  447. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
  448. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
  449. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
  450. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
  451. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
  452. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
  453. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
  454. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
  455. data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
  456. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
  457. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
  458. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
  459. data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
  460. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
  461. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
  462. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
  463. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
  464. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
  465. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
  466. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
  467. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
  468. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
  469. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
  470. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
  471. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
  472. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
  473. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
  474. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
  475. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
  476. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  477. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
  478. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
  479. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
  480. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
  481. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
  482. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
  483. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
  484. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
  485. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
  486. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
  487. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
  488. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
  489. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
  490. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
  491. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
  504. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
  505. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
  506. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
  507. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
  508. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
  509. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
  510. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
  511. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
  512. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
  513. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
  514. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
  515. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
  516. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
  517. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
  518. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
  519. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
  520. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
  521. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
  522. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
  523. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
  524. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
  525. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
  526. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
  527. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
  528. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
  529. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
  530. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
  531. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
  532. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
  533. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
  534. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
  535. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
  536. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
  537. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
  538. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
  539. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
  540. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
  541. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
  542. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
  543. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
  544. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
  545. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
  546. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
  547. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
  548. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
  549. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
  550. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
  551. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
  552. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
  553. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
  554. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
  555. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
  556. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
  557. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
  558. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
  559. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
  560. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
  561. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
  562. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
  563. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
  564. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
  565. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
  566. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
  567. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
  568. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
  569. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
  570. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
  571. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
  572. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
  573. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
  574. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
  575. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
  576. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
  577. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
  578. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
  579. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  580. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
  581. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
  582. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
  583. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
  584. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
  585. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  586. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
  587. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
  588. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
  589. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
  590. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
  591. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
  592. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
  593. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
  594. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
  595. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
  596. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
  597. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
  598. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
  599. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
  600. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
  601. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
  602. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
  603. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
  604. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
  605. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
  606. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
  607. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
  608. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
  609. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
  610. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
  611. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
  612. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
  613. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
  614. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
  615. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
  616. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
  617. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
  618. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
  619. data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
  620. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
  621. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  622. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
  623. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
  624. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
  625. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
  626. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
  627. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
  628. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
  629. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
  630. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
  631. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
  632. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
  633. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
  634. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
  635. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
  636. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
  637. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
  638. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
  639. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
  640. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
  641. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
  642. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
  643. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
  644. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
  645. metadata +103 -70
  646. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
  647. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
  648. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -29
  649. data/src/core/lib/gprpp/global_config.h +0 -93
  650. data/src/core/lib/gprpp/global_config_env.cc +0 -140
  651. data/src/core/lib/gprpp/global_config_env.h +0 -133
  652. data/src/core/lib/gprpp/global_config_generic.h +0 -40
  653. data/src/core/lib/promise/intra_activity_waiter.h +0 -55
  654. data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
  655. data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
  656. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
  657. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
  658. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
  659. data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
  660. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
  661. data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
  662. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
  663. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
  664. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
  665. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
  666. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
  667. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
  668. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
  669. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
  670. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
  671. /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
  672. /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
  673. /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
  674. /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
  675. /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
  676. /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
  677. /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
  678. /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
  679. /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
  680. /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
  681. /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
  682. /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
  683. /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
  684. /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
  685. /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
  686. /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
  687. /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
  688. /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
  689. /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
  690. /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
  691. /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
  692. /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
  693. /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -35,13 +35,14 @@
35
35
  #include "absl/strings/strip.h"
36
36
  #include "absl/types/optional.h"
37
37
 
38
+ #include <grpc/event_engine/event_engine.h>
38
39
  #include <grpc/grpc.h>
39
40
  #include <grpc/slice.h>
40
41
  #include <grpc/status.h>
41
- #include <grpc/support/atm.h>
42
42
  #include <grpc/support/log.h>
43
43
 
44
44
  #include "src/core/ext/filters/client_channel/client_channel.h"
45
+ #include "src/core/ext/filters/client_channel/client_channel_internal.h"
45
46
  #include "src/core/ext/filters/client_channel/config_selector.h"
46
47
  #include "src/core/ext/filters/client_channel/retry_service_config.h"
47
48
  #include "src/core/ext/filters/client_channel/retry_throttle.h"
@@ -64,7 +65,6 @@
64
65
  #include "src/core/lib/iomgr/error.h"
65
66
  #include "src/core/lib/iomgr/exec_ctx.h"
66
67
  #include "src/core/lib/iomgr/polling_entity.h"
67
- #include "src/core/lib/iomgr/timer.h"
68
68
  #include "src/core/lib/resource_quota/arena.h"
69
69
  #include "src/core/lib/service_config/service_config.h"
70
70
  #include "src/core/lib/service_config/service_config_call_data.h"
@@ -132,6 +132,7 @@ namespace grpc_core {
132
132
 
133
133
  namespace {
134
134
 
135
+ using grpc_event_engine::experimental::EventEngine;
135
136
  using internal::RetryGlobalConfig;
136
137
  using internal::RetryMethodConfig;
137
138
  using internal::RetryServiceConfigParser;
@@ -176,6 +177,7 @@ class RetryFilter {
176
177
 
177
178
  RetryFilter(const ChannelArgs& args, grpc_error_handle* error)
178
179
  : client_channel_(args.GetObject<ClientChannel>()),
180
+ event_engine_(args.GetObject<EventEngine>()),
179
181
  per_rpc_retry_buffer_size_(GetMaxPerRpcRetryBufferSize(args)),
180
182
  service_config_parser_index_(
181
183
  internal::RetryServiceConfigParser::ParserIndex()) {
@@ -212,6 +214,7 @@ class RetryFilter {
212
214
  const grpc_call_context_element* context);
213
215
 
214
216
  ClientChannel* client_channel_;
217
+ EventEngine* const event_engine_;
215
218
  size_t per_rpc_retry_buffer_size_;
216
219
  RefCountedPtr<ServerRetryThrottleData> retry_throttle_data_;
217
220
  const size_t service_config_parser_index_;
@@ -269,7 +272,7 @@ class RetryFilter::CallData {
269
272
  // We allocate one struct on the arena for each attempt at starting a
270
273
  // batch on a given LB call.
271
274
  class BatchData
272
- : public RefCounted<BatchData, PolymorphicRefCount, kUnrefCallDtor> {
275
+ : public RefCounted<BatchData, PolymorphicRefCount, UnrefCallDtor> {
273
276
  public:
274
277
  BatchData(RefCountedPtr<CallAttempt> call_attempt, int refcount,
275
278
  bool set_on_complete);
@@ -442,18 +445,17 @@ class RetryFilter::CallData {
442
445
  // Abandons the call attempt. Unrefs any deferred batches.
443
446
  void Abandon();
444
447
 
445
- static void OnPerAttemptRecvTimer(void* arg, grpc_error_handle error);
448
+ void OnPerAttemptRecvTimer();
446
449
  static void OnPerAttemptRecvTimerLocked(void* arg, grpc_error_handle error);
447
450
  void MaybeCancelPerAttemptRecvTimer();
448
451
 
449
452
  CallData* calld_;
450
453
  AttemptDispatchController attempt_dispatch_controller_;
451
- OrphanablePtr<ClientChannel::LoadBalancedCall> lb_call_;
454
+ OrphanablePtr<ClientChannel::FilterBasedLoadBalancedCall> lb_call_;
452
455
  bool lb_call_committed_ = false;
453
456
 
454
- grpc_timer per_attempt_recv_timer_;
455
457
  grpc_closure on_per_attempt_recv_timer_;
456
- bool per_attempt_recv_timer_pending_ = false;
458
+ absl::optional<EventEngine::TaskHandle> per_attempt_recv_timer_handle_;
457
459
 
458
460
  // BatchData.batch.payload points to this.
459
461
  grpc_transport_stream_op_batch_payload batch_payload_;
@@ -548,14 +550,15 @@ class RetryFilter::CallData {
548
550
  // If server_pushback is nullopt, retry_backoff_ is used.
549
551
  void StartRetryTimer(absl::optional<Duration> server_pushback);
550
552
 
551
- static void OnRetryTimer(void* arg, grpc_error_handle error);
552
- static void OnRetryTimerLocked(void* arg, grpc_error_handle error);
553
+ void OnRetryTimer();
554
+ static void OnRetryTimerLocked(void* arg, grpc_error_handle /*error*/);
553
555
 
554
556
  // Adds a closure to closures to start a transparent retry.
555
557
  void AddClosureToStartTransparentRetry(CallCombinerClosureList* closures);
556
558
  static void StartTransparentRetry(void* arg, grpc_error_handle error);
557
559
 
558
- OrphanablePtr<ClientChannel::LoadBalancedCall> CreateLoadBalancedCall(
560
+ OrphanablePtr<ClientChannel::FilterBasedLoadBalancedCall>
561
+ CreateLoadBalancedCall(
559
562
  ConfigSelector::CallDispatchController* call_dispatch_controller,
560
563
  bool is_transparent_retry);
561
564
 
@@ -586,7 +589,7 @@ class RetryFilter::CallData {
586
589
  // LB call used when we've committed to a call attempt and the retry
587
590
  // state for that attempt is no longer needed. This provides a fast
588
591
  // path for long-running streaming calls that minimizes overhead.
589
- OrphanablePtr<ClientChannel::LoadBalancedCall> committed_call_;
592
+ OrphanablePtr<ClientChannel::FilterBasedLoadBalancedCall> committed_call_;
590
593
 
591
594
  // When are are not yet fully committed to a particular call (i.e.,
592
595
  // either we might still retry or we have committed to the call but
@@ -601,26 +604,16 @@ class RetryFilter::CallData {
601
604
 
602
605
  // Retry state.
603
606
  bool retry_committed_ : 1;
604
- bool retry_timer_pending_ : 1;
605
607
  bool retry_codepath_started_ : 1;
606
608
  bool sent_transparent_retry_not_seen_by_server_ : 1;
607
609
  int num_attempts_completed_ = 0;
608
- grpc_timer retry_timer_;
610
+ absl::optional<EventEngine::TaskHandle> retry_timer_handle_;
609
611
  grpc_closure retry_closure_;
610
612
 
611
613
  // Cached data for retrying send ops.
612
614
  // send_initial_metadata
613
615
  bool seen_send_initial_metadata_ = false;
614
616
  grpc_metadata_batch send_initial_metadata_{arena_};
615
- // TODO(roth): As part of implementing hedging, we'll probably need to
616
- // have the LB call set a value in CallAttempt and then propagate it
617
- // from CallAttempt to the parent call when we commit. Otherwise, we
618
- // may leave this with a value for a peer other than the one we
619
- // actually commit to. Alternatively, maybe see if there's a way to
620
- // change the surface API such that the peer isn't available until
621
- // after initial metadata is received? (Could even change the
622
- // transport API to return this with the recv_initial_metadata op.)
623
- gpr_atm* peer_string_;
624
617
  // send_message
625
618
  // When we get a send_message op, we replace the original byte stream
626
619
  // with a CachingByteStream that caches the slices to a local buffer for
@@ -656,7 +649,7 @@ class RetryFilter::CallData {
656
649
  // on_call_stack_destruction closure from the surface.
657
650
  class RetryFilter::CallData::CallStackDestructionBarrier
658
651
  : public RefCounted<CallStackDestructionBarrier, PolymorphicRefCount,
659
- kUnrefCallDtor> {
652
+ UnrefCallDtor> {
660
653
  public:
661
654
  CallStackDestructionBarrier() {}
662
655
 
@@ -723,23 +716,23 @@ RetryFilter::CallData::CallAttempt::CallAttempt(CallData* calld,
723
716
  // If per_attempt_recv_timeout is set, start a timer.
724
717
  if (calld->retry_policy_ != nullptr &&
725
718
  calld->retry_policy_->per_attempt_recv_timeout().has_value()) {
726
- Timestamp per_attempt_recv_deadline =
727
- Timestamp::Now() + *calld->retry_policy_->per_attempt_recv_timeout();
719
+ const Duration per_attempt_recv_timeout =
720
+ *calld->retry_policy_->per_attempt_recv_timeout();
728
721
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
729
722
  gpr_log(GPR_INFO,
730
723
  "chand=%p calld=%p attempt=%p: per-attempt timeout in %" PRId64
731
724
  " ms",
732
- calld->chand_, calld, this,
733
- calld->retry_policy_->per_attempt_recv_timeout()->millis());
725
+ calld->chand_, calld, this, per_attempt_recv_timeout.millis());
734
726
  }
735
727
  // Schedule retry after computed delay.
736
- GRPC_CLOSURE_INIT(&on_per_attempt_recv_timer_, OnPerAttemptRecvTimer, this,
737
- nullptr);
738
728
  GRPC_CALL_STACK_REF(calld->owning_call_, "OnPerAttemptRecvTimer");
739
729
  Ref(DEBUG_LOCATION, "OnPerAttemptRecvTimer").release();
740
- per_attempt_recv_timer_pending_ = true;
741
- grpc_timer_init(&per_attempt_recv_timer_, per_attempt_recv_deadline,
742
- &on_per_attempt_recv_timer_);
730
+ per_attempt_recv_timer_handle_ = calld_->chand_->event_engine_->RunAfter(
731
+ per_attempt_recv_timeout, [this] {
732
+ ApplicationCallbackExecCtx callback_exec_ctx;
733
+ ExecCtx exec_ctx;
734
+ OnPerAttemptRecvTimer();
735
+ });
743
736
  }
744
737
  }
745
738
 
@@ -803,7 +796,7 @@ void RetryFilter::CallData::CallAttempt::MaybeSwitchToFastPath() {
803
796
  // If we've already switched to fast path, there's nothing to do here.
804
797
  if (calld_->committed_call_ != nullptr) return;
805
798
  // If the perAttemptRecvTimeout timer is pending, we can't switch yet.
806
- if (per_attempt_recv_timer_pending_) return;
799
+ if (per_attempt_recv_timer_handle_.has_value()) return;
807
800
  // If there are still send ops to replay, we can't switch yet.
808
801
  if (HaveSendOpsToReplay()) return;
809
802
  // If we started an internal batch for recv_trailing_metadata but have not
@@ -881,7 +874,7 @@ namespace {
881
874
  void StartBatchInCallCombiner(void* arg, grpc_error_handle /*ignored*/) {
882
875
  grpc_transport_stream_op_batch* batch =
883
876
  static_cast<grpc_transport_stream_op_batch*>(arg);
884
- auto* lb_call = static_cast<ClientChannel::LoadBalancedCall*>(
877
+ auto* lb_call = static_cast<ClientChannel::FilterBasedLoadBalancedCall*>(
885
878
  batch->handler_private.extra_arg);
886
879
  // Note: This will release the call combiner.
887
880
  lb_call->StartTransportStreamOpBatch(batch);
@@ -895,7 +888,7 @@ void RetryFilter::CallData::CallAttempt::AddClosureForBatch(
895
888
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
896
889
  gpr_log(GPR_INFO, "chand=%p calld=%p attempt=%p: adding batch (%s): %s",
897
890
  calld_->chand_, calld_, this, reason,
898
- grpc_transport_stream_op_batch_string(batch).c_str());
891
+ grpc_transport_stream_op_batch_string(batch, false).c_str());
899
892
  }
900
893
  batch->handler_private.extra_arg = lb_call_.get();
901
894
  GRPC_CLOSURE_INIT(&batch->handler_private.closure, StartBatchInCallCombiner,
@@ -1249,14 +1242,11 @@ void RetryFilter::CallData::CallAttempt::Abandon() {
1249
1242
  on_complete_deferred_batches_.clear();
1250
1243
  }
1251
1244
 
1252
- void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimer(
1253
- void* arg, grpc_error_handle error) {
1254
- auto* call_attempt = static_cast<CallAttempt*>(arg);
1255
- GRPC_CLOSURE_INIT(&call_attempt->on_per_attempt_recv_timer_,
1256
- OnPerAttemptRecvTimerLocked, call_attempt, nullptr);
1257
- GRPC_CALL_COMBINER_START(call_attempt->calld_->call_combiner_,
1258
- &call_attempt->on_per_attempt_recv_timer_, error,
1259
- "per-attempt timer fired");
1245
+ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimer() {
1246
+ GRPC_CLOSURE_INIT(&on_per_attempt_recv_timer_, OnPerAttemptRecvTimerLocked,
1247
+ this, nullptr);
1248
+ GRPC_CALL_COMBINER_START(calld_->call_combiner_, &on_per_attempt_recv_timer_,
1249
+ absl::OkStatus(), "per-attempt timer fired");
1260
1250
  }
1261
1251
 
1262
1252
  void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
@@ -1266,35 +1256,33 @@ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
1266
1256
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
1267
1257
  gpr_log(GPR_INFO,
1268
1258
  "chand=%p calld=%p attempt=%p: perAttemptRecvTimeout timer fired: "
1269
- "error=%s, per_attempt_recv_timer_pending_=%d",
1259
+ "error=%s, per_attempt_recv_timer_handle_.has_value()=%d",
1270
1260
  calld->chand_, calld, call_attempt, StatusToString(error).c_str(),
1271
- call_attempt->per_attempt_recv_timer_pending_);
1261
+ call_attempt->per_attempt_recv_timer_handle_.has_value());
1272
1262
  }
1273
1263
  CallCombinerClosureList closures;
1274
- if (error.ok() && call_attempt->per_attempt_recv_timer_pending_) {
1275
- call_attempt->per_attempt_recv_timer_pending_ = false;
1276
- // Cancel this attempt.
1277
- // TODO(roth): When implementing hedging, we should not cancel the
1278
- // current attempt.
1279
- call_attempt->MaybeAddBatchForCancelOp(
1280
- grpc_error_set_int(
1281
- GRPC_ERROR_CREATE("retry perAttemptRecvTimeout exceeded"),
1282
- StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED),
1283
- &closures);
1284
- // Check whether we should retry.
1285
- if (call_attempt->ShouldRetry(/*status=*/absl::nullopt,
1286
- /*server_pushback_ms=*/absl::nullopt)) {
1287
- // Mark current attempt as abandoned.
1288
- call_attempt->Abandon();
1289
- // We are retrying. Start backoff timer.
1290
- calld->StartRetryTimer(/*server_pushback=*/absl::nullopt);
1291
- } else {
1292
- // Not retrying, so commit the call.
1293
- calld->RetryCommit(call_attempt);
1294
- // If retry state is no longer needed, switch to fast path for
1295
- // subsequent batches.
1296
- call_attempt->MaybeSwitchToFastPath();
1297
- }
1264
+ call_attempt->per_attempt_recv_timer_handle_.reset();
1265
+ // Cancel this attempt.
1266
+ // TODO(roth): When implementing hedging, we should not cancel the
1267
+ // current attempt.
1268
+ call_attempt->MaybeAddBatchForCancelOp(
1269
+ grpc_error_set_int(
1270
+ GRPC_ERROR_CREATE("retry perAttemptRecvTimeout exceeded"),
1271
+ StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED),
1272
+ &closures);
1273
+ // Check whether we should retry.
1274
+ if (call_attempt->ShouldRetry(/*status=*/absl::nullopt,
1275
+ /*server_pushback_ms=*/absl::nullopt)) {
1276
+ // Mark current attempt as abandoned.
1277
+ call_attempt->Abandon();
1278
+ // We are retrying. Start backoff timer.
1279
+ calld->StartRetryTimer(/*server_pushback=*/absl::nullopt);
1280
+ } else {
1281
+ // Not retrying, so commit the call.
1282
+ calld->RetryCommit(call_attempt);
1283
+ // If retry state is no longer needed, switch to fast path for
1284
+ // subsequent batches.
1285
+ call_attempt->MaybeSwitchToFastPath();
1298
1286
  }
1299
1287
  closures.RunClosures(calld->call_combiner_);
1300
1288
  call_attempt->Unref(DEBUG_LOCATION, "OnPerAttemptRecvTimer");
@@ -1302,15 +1290,19 @@ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
1302
1290
  }
1303
1291
 
1304
1292
  void RetryFilter::CallData::CallAttempt::MaybeCancelPerAttemptRecvTimer() {
1305
- if (per_attempt_recv_timer_pending_) {
1293
+ if (per_attempt_recv_timer_handle_.has_value()) {
1306
1294
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
1307
1295
  gpr_log(GPR_INFO,
1308
1296
  "chand=%p calld=%p attempt=%p: cancelling "
1309
1297
  "perAttemptRecvTimeout timer",
1310
1298
  calld_->chand_, calld_, this);
1311
1299
  }
1312
- per_attempt_recv_timer_pending_ = false;
1313
- grpc_timer_cancel(&per_attempt_recv_timer_);
1300
+ if (calld_->chand_->event_engine_->Cancel(
1301
+ *per_attempt_recv_timer_handle_)) {
1302
+ Unref(DEBUG_LOCATION, "OnPerAttemptRecvTimer");
1303
+ GRPC_CALL_STACK_UNREF(calld_->owning_call_, "OnPerAttemptRecvTimer");
1304
+ }
1305
+ per_attempt_recv_timer_handle_.reset();
1314
1306
  }
1315
1307
  }
1316
1308
 
@@ -1351,8 +1343,9 @@ RetryFilter::CallData::CallAttempt::BatchData::~BatchData() {
1351
1343
  this);
1352
1344
  }
1353
1345
  CallAttempt* call_attempt = std::exchange(call_attempt_, nullptr);
1354
- GRPC_CALL_STACK_UNREF(call_attempt->calld_->owning_call_, "Retry BatchData");
1346
+ grpc_call_stack* owning_call = call_attempt->calld_->owning_call_;
1355
1347
  call_attempt->Unref(DEBUG_LOCATION, "~BatchData");
1348
+ GRPC_CALL_STACK_UNREF(owning_call, "Retry BatchData");
1356
1349
  }
1357
1350
 
1358
1351
  void RetryFilter::CallData::CallAttempt::BatchData::
@@ -1879,7 +1872,8 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
1879
1872
  "got on_complete, error=%s, batch=%s",
1880
1873
  calld->chand_, calld, call_attempt, batch_data.get(),
1881
1874
  StatusToString(error).c_str(),
1882
- grpc_transport_stream_op_batch_string(&batch_data->batch_).c_str());
1875
+ grpc_transport_stream_op_batch_string(&batch_data->batch_, false)
1876
+ .c_str());
1883
1877
  }
1884
1878
  // If this attempt has been abandoned, then we're not going to propagate
1885
1879
  // the completion of this batch, so do nothing.
@@ -1954,7 +1948,8 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnCompleteForCancelOp(
1954
1948
  "got on_complete for cancel_stream batch, error=%s, batch=%s",
1955
1949
  calld->chand_, calld, call_attempt, batch_data.get(),
1956
1950
  StatusToString(error).c_str(),
1957
- grpc_transport_stream_op_batch_string(&batch_data->batch_).c_str());
1951
+ grpc_transport_stream_op_batch_string(&batch_data->batch_, false)
1952
+ .c_str());
1958
1953
  }
1959
1954
  GRPC_CALL_COMBINER_STOP(
1960
1955
  calld->call_combiner_,
@@ -1986,7 +1981,6 @@ void RetryFilter::CallData::CallAttempt::BatchData::
1986
1981
  batch_.send_initial_metadata = true;
1987
1982
  batch_.payload->send_initial_metadata.send_initial_metadata =
1988
1983
  &call_attempt_->send_initial_metadata_;
1989
- batch_.payload->send_initial_metadata.peer_string = calld->peer_string_;
1990
1984
  }
1991
1985
 
1992
1986
  void RetryFilter::CallData::CallAttempt::BatchData::
@@ -2160,7 +2154,6 @@ RetryFilter::CallData::CallData(RetryFilter* chand,
2160
2154
  pending_send_message_(false),
2161
2155
  pending_send_trailing_metadata_(false),
2162
2156
  retry_committed_(false),
2163
- retry_timer_pending_(false),
2164
2157
  retry_codepath_started_(false),
2165
2158
  sent_transparent_retry_not_seen_by_server_(false) {}
2166
2159
 
@@ -2178,7 +2171,8 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
2178
2171
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace) &&
2179
2172
  !GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
2180
2173
  gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from surface: %s",
2181
- chand_, this, grpc_transport_stream_op_batch_string(batch).c_str());
2174
+ chand_, this,
2175
+ grpc_transport_stream_op_batch_string(batch, false).c_str());
2182
2176
  }
2183
2177
  // If we have an LB call, delegate to the LB call.
2184
2178
  if (committed_call_ != nullptr) {
@@ -2220,13 +2214,15 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
2220
2214
  return;
2221
2215
  }
2222
2216
  // Cancel retry timer if needed.
2223
- if (retry_timer_pending_) {
2217
+ if (retry_timer_handle_.has_value()) {
2224
2218
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
2225
2219
  gpr_log(GPR_INFO, "chand=%p calld=%p: cancelling retry timer", chand_,
2226
2220
  this);
2227
2221
  }
2228
- retry_timer_pending_ = false; // Lame timer callback.
2229
- grpc_timer_cancel(&retry_timer_);
2222
+ if (chand_->event_engine_->Cancel(*retry_timer_handle_)) {
2223
+ GRPC_CALL_STACK_UNREF(owning_call_, "OnRetryTimer");
2224
+ }
2225
+ retry_timer_handle_.reset();
2230
2226
  FreeAllCachedSendOpData();
2231
2227
  }
2232
2228
  // We have no call attempt, so there's nowhere to send the cancellation
@@ -2240,7 +2236,7 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
2240
2236
  PendingBatch* pending = PendingBatchesAdd(batch);
2241
2237
  // If the timer is pending, yield the call combiner and wait for it to
2242
2238
  // run, since we don't want to start another call attempt until it does.
2243
- if (retry_timer_pending_) {
2239
+ if (retry_timer_handle_.has_value()) {
2244
2240
  GRPC_CALL_COMBINER_STOP(call_combiner_,
2245
2241
  "added pending batch while retry timer pending");
2246
2242
  return;
@@ -2300,7 +2296,7 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
2300
2296
  call_attempt_->StartRetriableBatches();
2301
2297
  }
2302
2298
 
2303
- OrphanablePtr<ClientChannel::LoadBalancedCall>
2299
+ OrphanablePtr<ClientChannel::FilterBasedLoadBalancedCall>
2304
2300
  RetryFilter::CallData::CreateLoadBalancedCall(
2305
2301
  ConfigSelector::CallDispatchController* call_dispatch_controller,
2306
2302
  bool is_transparent_retry) {
@@ -2334,7 +2330,6 @@ void RetryFilter::CallData::MaybeCacheSendOpsForBatch(PendingBatch* pending) {
2334
2330
  grpc_metadata_batch* send_initial_metadata =
2335
2331
  batch->payload->send_initial_metadata.send_initial_metadata;
2336
2332
  send_initial_metadata_ = send_initial_metadata->Copy();
2337
- peer_string_ = batch->payload->send_initial_metadata.peer_string;
2338
2333
  }
2339
2334
  // Set up cache for send_message ops.
2340
2335
  if (batch->send_message) {
@@ -2575,42 +2570,40 @@ void RetryFilter::CallData::StartRetryTimer(
2575
2570
  // Reset call attempt.
2576
2571
  call_attempt_.reset(DEBUG_LOCATION, "StartRetryTimer");
2577
2572
  // Compute backoff delay.
2578
- Timestamp next_attempt_time;
2573
+ Duration next_attempt_timeout;
2579
2574
  if (server_pushback.has_value()) {
2580
2575
  GPR_ASSERT(*server_pushback >= Duration::Zero());
2581
- next_attempt_time = Timestamp::Now() + *server_pushback;
2576
+ next_attempt_timeout = *server_pushback;
2582
2577
  retry_backoff_.Reset();
2583
2578
  } else {
2584
- next_attempt_time = retry_backoff_.NextAttemptTime();
2579
+ next_attempt_timeout = retry_backoff_.NextAttemptTime() - Timestamp::Now();
2585
2580
  }
2586
2581
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
2587
2582
  gpr_log(GPR_INFO,
2588
2583
  "chand=%p calld=%p: retrying failed call in %" PRId64 " ms", chand_,
2589
- this, (next_attempt_time - Timestamp::Now()).millis());
2584
+ this, next_attempt_timeout.millis());
2590
2585
  }
2591
2586
  // Schedule retry after computed delay.
2592
- GRPC_CLOSURE_INIT(&retry_closure_, OnRetryTimer, this, nullptr);
2593
2587
  GRPC_CALL_STACK_REF(owning_call_, "OnRetryTimer");
2594
- retry_timer_pending_ = true;
2595
- grpc_timer_init(&retry_timer_, next_attempt_time, &retry_closure_);
2588
+ retry_timer_handle_ =
2589
+ chand_->event_engine_->RunAfter(next_attempt_timeout, [this] {
2590
+ ApplicationCallbackExecCtx callback_exec_ctx;
2591
+ ExecCtx exec_ctx;
2592
+ OnRetryTimer();
2593
+ });
2596
2594
  }
2597
2595
 
2598
- void RetryFilter::CallData::OnRetryTimer(void* arg, grpc_error_handle error) {
2599
- auto* calld = static_cast<CallData*>(arg);
2600
- GRPC_CLOSURE_INIT(&calld->retry_closure_, OnRetryTimerLocked, calld, nullptr);
2601
- GRPC_CALL_COMBINER_START(calld->call_combiner_, &calld->retry_closure_, error,
2596
+ void RetryFilter::CallData::OnRetryTimer() {
2597
+ GRPC_CLOSURE_INIT(&retry_closure_, OnRetryTimerLocked, this, nullptr);
2598
+ GRPC_CALL_COMBINER_START(call_combiner_, &retry_closure_, absl::OkStatus(),
2602
2599
  "retry timer fired");
2603
2600
  }
2604
2601
 
2605
2602
  void RetryFilter::CallData::OnRetryTimerLocked(void* arg,
2606
- grpc_error_handle error) {
2603
+ grpc_error_handle /*error*/) {
2607
2604
  auto* calld = static_cast<CallData*>(arg);
2608
- if (error.ok() && calld->retry_timer_pending_) {
2609
- calld->retry_timer_pending_ = false;
2610
- calld->CreateCallAttempt(/*is_transparent_retry=*/false);
2611
- } else {
2612
- GRPC_CALL_COMBINER_STOP(calld->call_combiner_, "retry timer cancelled");
2613
- }
2605
+ calld->retry_timer_handle_.reset();
2606
+ calld->CreateCallAttempt(/*is_transparent_retry=*/false);
2614
2607
  GRPC_CALL_STACK_UNREF(calld->owning_call_, "OnRetryTimer");
2615
2608
  }
2616
2609
 
@@ -920,7 +920,8 @@ bool Subchannel::PublishTransportLocked() {
920
920
  // Construct channel stack.
921
921
  ChannelStackBuilderImpl builder("subchannel", GRPC_CLIENT_SUBCHANNEL,
922
922
  connecting_result_.channel_args);
923
- builder.SetTransport(connecting_result_.transport);
923
+ // Builder takes ownership of transport.
924
+ builder.SetTransport(std::exchange(connecting_result_.transport, nullptr));
924
925
  if (!CoreConfiguration::Get().channel_init().CreateStack(&builder)) {
925
926
  return false;
926
927
  }
@@ -933,9 +934,6 @@ bool Subchannel::PublishTransportLocked() {
933
934
  key_.ToString().c_str(), StatusToString(error).c_str());
934
935
  return false;
935
936
  }
936
- // Release the ownership since it is now owned by the connected filter in the
937
- // channel stack (published).
938
- connecting_result_.transport = nullptr;
939
937
  RefCountedPtr<channelz::SocketNode> socket =
940
938
  std::move(connecting_result_.socket_node);
941
939
  connecting_result_.Reset();
@@ -33,6 +33,7 @@
33
33
  #include "src/core/lib/gprpp/status_helper.h"
34
34
  #include "src/core/lib/gprpp/sync.h"
35
35
  #include "src/core/lib/gprpp/time.h"
36
+ #include "src/core/lib/iomgr/exec_ctx.h"
36
37
  #include "src/core/lib/resource_quota/resource_quota.h"
37
38
  #include "src/core/lib/transport/error_utils.h"
38
39
 
@@ -43,6 +44,8 @@
43
44
 
44
45
  namespace grpc_core {
45
46
 
47
+ using ::grpc_event_engine::experimental::EventEngine;
48
+
46
49
  //
47
50
  // SubchannelStreamClient
48
51
  //
@@ -69,12 +72,11 @@ SubchannelStreamClient::SubchannelStreamClient(
69
72
  .set_multiplier(SUBCHANNEL_STREAM_RECONNECT_BACKOFF_MULTIPLIER)
70
73
  .set_jitter(SUBCHANNEL_STREAM_RECONNECT_JITTER)
71
74
  .set_max_backoff(Duration::Seconds(
72
- SUBCHANNEL_STREAM_RECONNECT_MAX_BACKOFF_SECONDS))) {
75
+ SUBCHANNEL_STREAM_RECONNECT_MAX_BACKOFF_SECONDS))),
76
+ event_engine_(connected_subchannel_->args().GetObject<EventEngine>()) {
73
77
  if (GPR_UNLIKELY(tracer_ != nullptr)) {
74
78
  gpr_log(GPR_INFO, "%s %p: created SubchannelStreamClient", tracer_, this);
75
79
  }
76
- GRPC_CLOSURE_INIT(&retry_timer_callback_, OnRetryTimer, this,
77
- grpc_schedule_on_exec_ctx);
78
80
  StartCall();
79
81
  }
80
82
 
@@ -94,8 +96,9 @@ void SubchannelStreamClient::Orphan() {
94
96
  MutexLock lock(&mu_);
95
97
  event_handler_.reset();
96
98
  call_state_.reset();
97
- if (retry_timer_callback_pending_) {
98
- grpc_timer_cancel(&retry_timer_);
99
+ if (retry_timer_handle_.has_value()) {
100
+ event_engine_->Cancel(*retry_timer_handle_);
101
+ retry_timer_handle_.reset();
99
102
  }
100
103
  }
101
104
  Unref(DEBUG_LOCATION, "orphan");
@@ -124,11 +127,10 @@ void SubchannelStreamClient::StartRetryTimerLocked() {
124
127
  if (event_handler_ != nullptr) {
125
128
  event_handler_->OnRetryTimerStartLocked(this);
126
129
  }
127
- Timestamp next_try = retry_backoff_.NextAttemptTime();
130
+ const Duration timeout = retry_backoff_.NextAttemptTime() - Timestamp::Now();
128
131
  if (GPR_UNLIKELY(tracer_ != nullptr)) {
129
132
  gpr_log(GPR_INFO, "%s %p: SubchannelStreamClient health check call lost...",
130
133
  tracer_, this);
131
- Duration timeout = next_try - Timestamp::Now();
132
134
  if (timeout > Duration::Zero()) {
133
135
  gpr_log(GPR_INFO, "%s %p: ... will retry in %" PRId64 "ms.", tracer_,
134
136
  this, timeout.millis());
@@ -136,28 +138,27 @@ void SubchannelStreamClient::StartRetryTimerLocked() {
136
138
  gpr_log(GPR_INFO, "%s %p: ... retrying immediately.", tracer_, this);
137
139
  }
138
140
  }
139
- // Ref for callback, tracked manually.
140
- Ref(DEBUG_LOCATION, "health_retry_timer").release();
141
- retry_timer_callback_pending_ = true;
142
- grpc_timer_init(&retry_timer_, next_try, &retry_timer_callback_);
141
+ retry_timer_handle_ = event_engine_->RunAfter(
142
+ timeout, [self = Ref(DEBUG_LOCATION, "health_retry_timer")]() mutable {
143
+ ApplicationCallbackExecCtx callback_exec_ctx;
144
+ ExecCtx exec_ctx;
145
+ self->OnRetryTimer();
146
+ self.reset(DEBUG_LOCATION, "health_retry_timer");
147
+ });
143
148
  }
144
149
 
145
- void SubchannelStreamClient::OnRetryTimer(void* arg, grpc_error_handle error) {
146
- auto* self = static_cast<SubchannelStreamClient*>(arg);
147
- {
148
- MutexLock lock(&self->mu_);
149
- self->retry_timer_callback_pending_ = false;
150
- if (self->event_handler_ != nullptr && error.ok() &&
151
- self->call_state_ == nullptr) {
152
- if (GPR_UNLIKELY(self->tracer_ != nullptr)) {
153
- gpr_log(GPR_INFO,
154
- "%s %p: SubchannelStreamClient restarting health check call",
155
- self->tracer_, self);
156
- }
157
- self->StartCallLocked();
150
+ void SubchannelStreamClient::OnRetryTimer() {
151
+ MutexLock lock(&mu_);
152
+ if (event_handler_ != nullptr && retry_timer_handle_.has_value() &&
153
+ call_state_ == nullptr) {
154
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
155
+ gpr_log(GPR_INFO,
156
+ "%s %p: SubchannelStreamClient restarting health check call",
157
+ tracer_, this);
158
158
  }
159
+ StartCallLocked();
159
160
  }
160
- self->Unref(DEBUG_LOCATION, "health_retry_timer");
161
+ retry_timer_handle_.reset();
161
162
  }
162
163
 
163
164
  //
@@ -242,7 +243,6 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
242
243
  GPR_ASSERT(error.ok());
243
244
  payload_.send_initial_metadata.send_initial_metadata =
244
245
  &send_initial_metadata_;
245
- payload_.send_initial_metadata.peer_string = nullptr;
246
246
  batch_.send_initial_metadata = true;
247
247
  // Add send_message op.
248
248
  send_message_.Append(Slice(
@@ -257,7 +257,6 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
257
257
  payload_.recv_initial_metadata.recv_initial_metadata =
258
258
  &recv_initial_metadata_;
259
259
  payload_.recv_initial_metadata.trailing_metadata_available = nullptr;
260
- payload_.recv_initial_metadata.peer_string = nullptr;
261
260
  // recv_initial_metadata_ready callback takes ref, handled manually.
262
261
  call_->Ref(DEBUG_LOCATION, "recv_initial_metadata_ready").release();
263
262
  payload_.recv_initial_metadata.recv_initial_metadata_ready =
@@ -27,6 +27,7 @@
27
27
  #include "absl/strings/string_view.h"
28
28
  #include "absl/types/optional.h"
29
29
 
30
+ #include <grpc/event_engine/event_engine.h>
30
31
  #include <grpc/event_engine/memory_allocator.h>
31
32
  #include <grpc/slice.h>
32
33
  #include <grpc/status.h>
@@ -42,7 +43,6 @@
42
43
  #include "src/core/lib/iomgr/error.h"
43
44
  #include "src/core/lib/iomgr/iomgr_fwd.h"
44
45
  #include "src/core/lib/iomgr/polling_entity.h"
45
- #include "src/core/lib/iomgr/timer.h"
46
46
  #include "src/core/lib/resource_quota/arena.h"
47
47
  #include "src/core/lib/resource_quota/memory_quota.h"
48
48
  #include "src/core/lib/slice/slice.h"
@@ -196,7 +196,7 @@ class SubchannelStreamClient
196
196
  void StartCallLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
197
197
 
198
198
  void StartRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
199
- static void OnRetryTimer(void* arg, grpc_error_handle error);
199
+ void OnRetryTimer() ABSL_LOCKS_EXCLUDED(mu_);
200
200
 
201
201
  RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
202
202
  grpc_pollset_set* interested_parties_; // Do not own.
@@ -212,9 +212,12 @@ class SubchannelStreamClient
212
212
 
213
213
  // Call retry state.
214
214
  BackOff retry_backoff_ ABSL_GUARDED_BY(mu_);
215
- grpc_timer retry_timer_ ABSL_GUARDED_BY(mu_);
216
- grpc_closure retry_timer_callback_ ABSL_GUARDED_BY(mu_);
217
- bool retry_timer_callback_pending_ ABSL_GUARDED_BY(mu_) = false;
215
+ absl::optional<grpc_event_engine::experimental::EventEngine::TaskHandle>
216
+ retry_timer_handle_ ABSL_GUARDED_BY(mu_);
217
+ // A raw pointer will suffice since connected_subchannel_ holds a copy of the
218
+ // ChannelArgs which holds an std::shared_ptr of the EventEngine.
219
+ grpc_event_engine::experimental::EventEngine* event_engine_
220
+ ABSL_GUARDED_BY(mu_);
218
221
  };
219
222
 
220
223
  } // namespace grpc_core
@@ -133,13 +133,13 @@ ArenaPromise<ServerMetadataHandle> HttpClientFilter::MakeCallPromise(
133
133
  return std::move(md);
134
134
  });
135
135
 
136
- return Race(Map(next_promise_factory(std::move(call_args)),
136
+ return Race(initial_metadata_err->Wait(),
137
+ Map(next_promise_factory(std::move(call_args)),
137
138
  [](ServerMetadataHandle md) -> ServerMetadataHandle {
138
139
  auto r = CheckServerMetadata(md.get());
139
140
  if (!r.ok()) return ServerMetadataFromStatus(r);
140
141
  return md;
141
- }),
142
- initial_metadata_err->Wait());
142
+ }));
143
143
  }
144
144
 
145
145
  HttpClientFilter::HttpClientFilter(HttpSchemeMetadata::ValueType scheme,