grpc 1.53.0.pre2 → 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 (685) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +80 -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/impl/grpc_types.h +11 -2
  6. data/include/grpc/support/port_platform.h +4 -4
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
  9. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
  10. data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
  11. data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
  12. data/src/core/ext/filters/client_channel/client_channel.h +131 -173
  13. data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
  14. data/src/core/ext/filters/client_channel/config_selector.h +4 -3
  15. data/src/core/ext/filters/client_channel/http_proxy.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
  18. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
  19. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -15
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
  21. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
  22. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +13 -5
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
  27. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
  28. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
  29. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
  30. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
  31. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
  32. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  33. data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
  34. data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
  35. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
  36. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
  37. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
  38. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
  39. data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
  40. data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
  41. data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
  42. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
  43. data/src/core/ext/gcp/metadata_query.cc +142 -0
  44. data/src/core/ext/gcp/metadata_query.h +82 -0
  45. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
  46. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +149 -60
  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_parser.cc +42 -23
  51. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +5 -3
  52. data/src/core/ext/transport/chttp2/transport/internal.h +18 -3
  53. data/src/core/ext/transport/chttp2/transport/parsing.cc +9 -2
  54. data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
  55. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
  56. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
  57. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
  58. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
  59. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
  60. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
  61. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
  62. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
  63. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
  64. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
  65. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
  66. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
  67. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
  68. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
  69. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
  70. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
  71. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
  72. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
  73. 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
  74. 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
  75. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
  76. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
  77. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
  78. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
  79. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
  80. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
  81. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  82. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
  83. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
  84. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
  85. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
  86. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
  87. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
  88. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
  89. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  90. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
  91. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
  92. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
  93. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
  94. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
  95. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
  96. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
  97. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
  98. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
  99. data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
  100. data/src/core/ext/xds/xds_client_stats.cc +29 -15
  101. data/src/core/ext/xds/xds_client_stats.h +24 -20
  102. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  103. data/src/core/ext/xds/xds_endpoint.h +9 -1
  104. data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
  105. data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
  106. data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
  107. data/src/core/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.h → lib/backoff/random_early_detection.cc} +14 -12
  108. data/src/core/lib/backoff/random_early_detection.h +59 -0
  109. data/src/core/lib/channel/call_finalization.h +1 -1
  110. data/src/core/lib/channel/call_tracer.cc +51 -0
  111. data/src/core/lib/channel/call_tracer.h +101 -38
  112. data/src/core/lib/channel/connected_channel.cc +483 -1050
  113. data/src/core/lib/channel/context.h +8 -1
  114. data/src/core/lib/channel/promise_based_filter.cc +106 -42
  115. data/src/core/lib/channel/promise_based_filter.h +27 -13
  116. data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
  117. data/src/core/lib/config/config_vars.cc +151 -0
  118. data/src/core/lib/config/config_vars.h +127 -0
  119. data/src/core/lib/config/config_vars_non_generated.cc +51 -0
  120. data/src/core/lib/config/load_config.cc +66 -0
  121. data/src/core/lib/config/load_config.h +49 -0
  122. data/src/core/lib/debug/trace.cc +5 -6
  123. data/src/core/lib/debug/trace.h +0 -5
  124. data/src/core/lib/event_engine/event_engine.cc +37 -2
  125. data/src/core/lib/event_engine/handle_containers.h +7 -22
  126. data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
  127. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
  128. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
  129. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
  130. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
  131. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
  132. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
  133. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
  134. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
  135. data/src/core/lib/event_engine/resolved_address.cc +2 -1
  136. data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
  137. data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
  138. data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
  139. data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
  140. data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
  141. data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
  142. data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
  143. data/src/core/lib/experiments/config.cc +3 -10
  144. data/src/core/lib/experiments/experiments.cc +7 -0
  145. data/src/core/lib/experiments/experiments.h +9 -1
  146. data/src/core/lib/gpr/log.cc +15 -28
  147. data/src/core/lib/gprpp/fork.cc +8 -14
  148. data/src/core/lib/gprpp/orphanable.h +4 -3
  149. data/src/core/lib/gprpp/per_cpu.h +9 -3
  150. data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
  151. data/src/core/lib/gprpp/ref_counted.h +33 -34
  152. data/src/core/lib/gprpp/thd.h +16 -0
  153. data/src/core/lib/gprpp/time.cc +1 -0
  154. data/src/core/lib/gprpp/time.h +4 -4
  155. data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
  156. data/src/core/lib/iomgr/call_combiner.h +2 -2
  157. data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
  158. data/src/core/lib/iomgr/endpoint_pair.h +2 -2
  159. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  160. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  161. data/src/core/lib/iomgr/ev_posix.cc +13 -53
  162. data/src/core/lib/iomgr/ev_posix.h +0 -3
  163. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
  164. data/src/core/lib/iomgr/iomgr.cc +4 -8
  165. data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
  166. data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
  167. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  168. data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
  169. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
  170. data/src/core/lib/iomgr/tcp_posix.cc +0 -1
  171. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
  172. data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
  173. data/src/core/lib/iomgr/tcp_windows.cc +12 -8
  174. data/src/core/lib/load_balancing/lb_policy.cc +9 -13
  175. data/src/core/lib/load_balancing/lb_policy.h +4 -2
  176. data/src/core/lib/promise/activity.cc +22 -6
  177. data/src/core/lib/promise/activity.h +61 -24
  178. data/src/core/lib/promise/cancel_callback.h +77 -0
  179. data/src/core/lib/promise/detail/basic_seq.h +1 -1
  180. data/src/core/lib/promise/detail/promise_factory.h +4 -0
  181. data/src/core/lib/promise/for_each.h +176 -0
  182. data/src/core/lib/promise/if.h +9 -0
  183. data/src/core/lib/promise/interceptor_list.h +23 -2
  184. data/src/core/lib/promise/latch.h +89 -3
  185. data/src/core/lib/promise/loop.h +13 -9
  186. data/src/core/lib/promise/map.h +7 -0
  187. data/src/core/lib/promise/party.cc +286 -0
  188. data/src/core/lib/promise/party.h +499 -0
  189. data/src/core/lib/promise/pipe.h +197 -57
  190. data/src/core/lib/promise/poll.h +48 -0
  191. data/src/core/lib/promise/promise.h +2 -2
  192. data/src/core/lib/resource_quota/arena.cc +19 -3
  193. data/src/core/lib/resource_quota/arena.h +119 -5
  194. data/src/core/lib/resource_quota/memory_quota.cc +1 -1
  195. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
  196. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  197. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
  198. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
  199. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  200. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
  201. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
  202. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
  203. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
  204. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
  205. data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
  206. data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
  207. data/src/core/lib/slice/slice.cc +1 -1
  208. data/src/core/lib/surface/builtins.cc +2 -0
  209. data/src/core/lib/surface/call.cc +926 -1024
  210. data/src/core/lib/surface/call.h +10 -0
  211. data/src/core/lib/surface/lame_client.cc +1 -0
  212. data/src/core/lib/surface/version.cc +2 -2
  213. data/src/core/lib/transport/batch_builder.cc +179 -0
  214. data/src/core/lib/transport/batch_builder.h +468 -0
  215. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  216. data/src/core/lib/transport/bdp_estimator.h +10 -6
  217. data/src/core/lib/transport/custom_metadata.h +30 -0
  218. data/src/core/lib/transport/metadata_batch.cc +9 -6
  219. data/src/core/lib/transport/metadata_batch.h +58 -16
  220. data/src/core/lib/transport/parsed_metadata.h +3 -3
  221. data/src/core/lib/transport/timeout_encoding.cc +6 -1
  222. data/src/core/lib/transport/transport.cc +30 -2
  223. data/src/core/lib/transport/transport.h +70 -14
  224. data/src/core/lib/transport/transport_impl.h +7 -0
  225. data/src/core/lib/transport/transport_op_string.cc +52 -42
  226. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
  227. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
  228. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
  229. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
  230. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  231. data/src/core/tsi/ssl_transport_security.cc +4 -2
  232. data/src/ruby/lib/grpc/version.rb +1 -1
  233. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  234. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  235. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  236. data/third_party/abseil-cpp/absl/flags/config.h +68 -0
  237. data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
  238. data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
  239. data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
  240. data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
  241. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  242. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  243. data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
  244. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  245. data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  246. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  247. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  248. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  249. data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  250. data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
  251. data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  252. data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
  253. data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
  254. data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
  255. data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  256. data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
  257. data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  258. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
  259. data/third_party/boringssl-with-bazel/err_data.c +728 -712
  260. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
  261. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
  262. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
  263. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
  264. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
  265. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
  266. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
  267. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
  268. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
  269. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
  270. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
  271. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
  272. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
  273. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
  274. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
  275. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
  276. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
  277. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
  278. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
  279. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
  280. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
  281. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
  282. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
  283. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
  284. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
  285. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
  286. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
  287. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
  288. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
  289. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
  290. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
  291. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
  292. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
  293. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
  294. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
  295. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
  296. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
  297. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
  298. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
  299. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
  300. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
  301. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
  302. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
  303. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
  304. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
  305. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
  306. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
  307. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
  308. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
  309. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
  310. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
  311. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
  312. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
  313. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
  314. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
  315. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
  316. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
  317. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
  318. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
  319. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
  320. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
  321. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
  322. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
  323. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
  324. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
  325. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
  326. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
  327. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
  328. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
  329. data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
  330. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
  331. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
  332. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
  333. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
  334. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
  335. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
  336. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
  337. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
  338. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
  339. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
  340. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  341. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
  342. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
  343. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
  344. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
  345. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
  346. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
  347. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
  348. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
  349. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
  350. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
  351. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
  352. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
  353. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
  354. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
  355. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
  356. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
  358. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
  359. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
  360. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
  361. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
  362. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
  363. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
  364. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
  365. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
  366. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
  367. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
  368. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
  369. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
  370. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
  371. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
  372. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
  373. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
  374. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
  375. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  376. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
  377. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
  378. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
  379. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
  380. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
  381. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
  382. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
  383. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
  384. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
  385. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
  386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
  387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
  388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
  389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
  390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
  391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
  392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
  393. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
  394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
  395. data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
  396. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
  397. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
  398. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
  400. data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
  402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
  403. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
  404. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
  405. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
  406. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
  407. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
  410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
  437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
  438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
  439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
  441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
  442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
  443. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
  444. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
  445. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
  446. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
  447. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
  448. data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
  449. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
  450. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
  451. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
  452. data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
  453. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
  454. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
  455. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
  456. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
  457. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
  458. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
  459. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
  460. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
  461. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
  462. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
  463. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
  464. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
  465. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
  466. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
  467. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
  468. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
  469. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  470. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
  471. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
  472. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
  473. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
  474. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
  475. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
  476. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
  477. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
  478. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
  479. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
  480. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
  481. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
  482. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
  483. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
  484. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
  485. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
  486. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
  487. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
  488. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
  489. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
  490. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
  491. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
  504. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
  505. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
  506. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
  507. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
  508. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
  509. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
  510. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
  511. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
  512. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
  513. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
  514. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
  515. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
  516. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
  517. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
  518. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
  519. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
  520. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
  521. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
  522. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
  523. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
  524. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
  525. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
  526. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
  527. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
  528. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
  529. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
  530. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
  531. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
  532. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
  533. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
  534. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
  535. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
  536. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
  537. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
  538. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
  539. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
  540. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
  541. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
  542. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
  543. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
  544. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
  545. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
  546. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
  547. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
  548. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
  549. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
  550. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
  551. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
  552. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
  553. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
  554. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
  555. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
  556. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
  557. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
  558. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
  559. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
  560. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
  561. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
  562. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
  563. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
  564. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
  565. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
  566. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
  567. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
  568. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
  569. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
  570. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
  571. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
  572. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  573. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
  574. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
  575. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
  576. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
  577. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
  578. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  579. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
  580. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
  581. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
  582. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
  583. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
  584. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
  585. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
  586. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
  587. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
  588. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
  589. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
  590. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
  591. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
  592. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
  593. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
  594. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
  595. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
  596. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
  597. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
  598. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
  599. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
  600. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
  601. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
  602. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
  603. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
  604. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
  605. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
  606. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
  607. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
  608. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
  609. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
  610. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
  611. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
  612. data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
  613. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
  614. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  615. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
  616. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
  617. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
  618. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
  619. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
  620. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
  621. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
  622. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
  623. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
  624. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
  625. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
  626. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
  627. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
  628. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
  629. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
  630. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
  631. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
  632. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
  633. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
  634. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
  635. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
  636. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
  637. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
  638. metadata +107 -72
  639. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
  640. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
  641. data/src/core/lib/gprpp/global_config.h +0 -93
  642. data/src/core/lib/gprpp/global_config_env.cc +0 -140
  643. data/src/core/lib/gprpp/global_config_env.h +0 -133
  644. data/src/core/lib/gprpp/global_config_generic.h +0 -40
  645. data/src/core/lib/promise/intra_activity_waiter.h +0 -55
  646. data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
  647. data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
  648. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
  649. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
  650. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
  651. data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
  652. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
  653. data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
  654. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
  655. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
  656. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
  657. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
  658. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
  659. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
  660. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
  661. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
  662. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
  663. /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
  664. /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
  665. /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
  666. /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
  667. /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
  668. /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
  669. /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
  670. /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
  671. /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
  672. /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
  673. /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
  674. /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
  675. /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
  676. /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
  677. /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
  678. /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
  679. /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
  680. /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
  681. /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
  682. /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
  683. /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
  684. /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
  685. /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -30,6 +30,8 @@
30
30
  #include "absl/strings/str_cat.h"
31
31
 
32
32
  #include <grpc/event_engine/endpoint_config.h>
33
+ #include <grpc/event_engine/event_engine.h>
34
+ #include <grpc/event_engine/memory_allocator.h>
33
35
  #include <grpc/support/alloc.h>
34
36
  #include <grpc/support/log.h>
35
37
  #include <grpc/support/log_windows.h>
@@ -38,7 +40,15 @@
38
40
  #include <grpc/support/time.h>
39
41
 
40
42
  #include "src/core/lib/address_utils/sockaddr_utils.h"
43
+ #include "src/core/lib/event_engine/memory_allocator_factory.h"
44
+ #include "src/core/lib/event_engine/resolved_address_internal.h"
45
+ #include "src/core/lib/event_engine/tcp_socket_utils.h"
46
+ #include "src/core/lib/event_engine/windows/windows_engine.h"
47
+ #include "src/core/lib/event_engine/windows/windows_listener.h"
41
48
  #include "src/core/lib/gprpp/crash.h"
49
+ #include "src/core/lib/iomgr/closure.h"
50
+ #include "src/core/lib/iomgr/event_engine_shims/closure.h"
51
+ #include "src/core/lib/iomgr/event_engine_shims/endpoint.h"
42
52
  #include "src/core/lib/iomgr/iocp_windows.h"
43
53
  #include "src/core/lib/iomgr/pollset_windows.h"
44
54
  #include "src/core/lib/iomgr/resolve_address.h"
@@ -47,11 +57,23 @@
47
57
  #include "src/core/lib/iomgr/tcp_server.h"
48
58
  #include "src/core/lib/iomgr/tcp_windows.h"
49
59
  #include "src/core/lib/resource_quota/api.h"
60
+ #include "src/core/lib/resource_quota/resource_quota.h"
50
61
  #include "src/core/lib/slice/slice_internal.h"
51
62
 
52
63
  #define MIN_SAFE_ACCEPT_QUEUE_SIZE 100
53
64
 
65
+ namespace {
66
+ using ::grpc_event_engine::experimental::CreateResolvedAddress;
54
67
  using ::grpc_event_engine::experimental::EndpointConfig;
68
+ using ::grpc_event_engine::experimental::EventEngine;
69
+ using ::grpc_event_engine::experimental::grpc_event_engine_endpoint_create;
70
+ using ::grpc_event_engine::experimental::MemoryAllocator;
71
+ using ::grpc_event_engine::experimental::MemoryQuotaBasedMemoryAllocatorFactory;
72
+ using ::grpc_event_engine::experimental::ResolvedAddressSetPort;
73
+ using ::grpc_event_engine::experimental::RunEventEngineClosure;
74
+ using ::grpc_event_engine::experimental::WindowsEventEngine;
75
+ using ::grpc_event_engine::experimental::WindowsEventEngineListener;
76
+ } // namespace
55
77
 
56
78
  // one listening port
57
79
  typedef struct grpc_tcp_listener grpc_tcp_listener;
@@ -98,12 +120,15 @@ struct grpc_tcp_server {
98
120
 
99
121
  // shutdown callback
100
122
  grpc_closure* shutdown_complete;
123
+
124
+ // used for the EventEngine shim
125
+ WindowsEventEngineListener* ee_listener;
101
126
  };
102
127
 
103
128
  // Public function. Allocates the proper data structures to hold a
104
129
  // grpc_tcp_server.
105
130
  static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
106
- const EndpointConfig& config,
131
+ const EndpointConfig& /* config */,
107
132
  grpc_tcp_server_cb on_accept_cb,
108
133
  void* on_accept_cb_arg,
109
134
  grpc_tcp_server** server) {
@@ -122,7 +147,7 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
122
147
  return absl::OkStatus();
123
148
  }
124
149
 
125
- static void destroy_server(void* arg, grpc_error_handle error) {
150
+ static void destroy_server(void* arg, grpc_error_handle /* error */) {
126
151
  grpc_tcp_server* s = (grpc_tcp_server*)arg;
127
152
 
128
153
  // Now that the accepts have been aborted, we can destroy the sockets.
@@ -533,27 +558,169 @@ static void tcp_server_start(grpc_tcp_server* s,
533
558
  gpr_mu_unlock(&s->mu);
534
559
  }
535
560
 
536
- static unsigned tcp_server_port_fd_count(grpc_tcp_server* s,
537
- unsigned port_index) {
561
+ static unsigned tcp_server_port_fd_count(grpc_tcp_server* /* s */,
562
+ unsigned /* port_index */) {
538
563
  return 0;
539
564
  }
540
565
 
541
- static int tcp_server_port_fd(grpc_tcp_server* s, unsigned port_index,
542
- unsigned fd_index) {
566
+ static int tcp_server_port_fd(grpc_tcp_server* /* s */,
567
+ unsigned /* port_index */,
568
+ unsigned /* fd_index */) {
543
569
  return -1;
544
570
  }
545
571
 
546
572
  static grpc_core::TcpServerFdHandler* tcp_server_create_fd_handler(
547
- grpc_tcp_server* s) {
573
+ grpc_tcp_server* /* s */) {
548
574
  return nullptr;
549
575
  }
550
576
 
551
- static void tcp_server_shutdown_listeners(grpc_tcp_server* s) {}
577
+ static void tcp_server_shutdown_listeners(grpc_tcp_server* /* s */) {}
578
+
579
+ static int tcp_pre_allocated_fd(grpc_tcp_server* /* s */) { return -1; }
580
+
581
+ static void tcp_set_pre_allocated_fd(grpc_tcp_server* /* s */, int /* fd */) {}
552
582
 
553
583
  grpc_tcp_server_vtable grpc_windows_tcp_server_vtable = {
554
584
  tcp_server_create, tcp_server_start,
555
585
  tcp_server_add_port, tcp_server_create_fd_handler,
556
586
  tcp_server_port_fd_count, tcp_server_port_fd,
557
587
  tcp_server_ref, tcp_server_shutdown_starting_add,
558
- tcp_server_unref, tcp_server_shutdown_listeners};
588
+ tcp_server_unref, tcp_server_shutdown_listeners,
589
+ tcp_pre_allocated_fd, tcp_set_pre_allocated_fd};
590
+
591
+ // ---- EventEngine shim ------------------------------------------------------
592
+
593
+ namespace {
594
+
595
+ static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete,
596
+ const EndpointConfig& config,
597
+ grpc_tcp_server_cb on_accept_cb,
598
+ void* on_accept_cb_arg,
599
+ grpc_tcp_server** server) {
600
+ // On Windows, the event_engine_listener experiment only supports the
601
+ // default engine
602
+ WindowsEventEngine* engine_ptr = reinterpret_cast<WindowsEventEngine*>(
603
+ config.GetVoidPointer(GRPC_INTERNAL_ARG_EVENT_ENGINE));
604
+ grpc_tcp_server* s = (grpc_tcp_server*)gpr_malloc(sizeof(grpc_tcp_server));
605
+ GPR_ASSERT(on_accept_cb != nullptr);
606
+ auto accept_cb = [s, on_accept_cb, on_accept_cb_arg](
607
+ std::unique_ptr<EventEngine::Endpoint> endpoint,
608
+ MemoryAllocator memory_allocator) {
609
+ grpc_core::ApplicationCallbackExecCtx app_ctx;
610
+ grpc_core::ExecCtx exec_ctx;
611
+ grpc_tcp_server_acceptor* acceptor =
612
+ static_cast<grpc_tcp_server_acceptor*>(gpr_malloc(sizeof(*acceptor)));
613
+ acceptor->from_server = s;
614
+ acceptor->port_index = -1;
615
+ acceptor->fd_index = -1;
616
+ acceptor->external_connection = false;
617
+ on_accept_cb(on_accept_cb_arg,
618
+ grpc_event_engine_endpoint_create(std::move(endpoint)),
619
+ nullptr, acceptor);
620
+ };
621
+ auto on_shutdown = [shutdown_complete](absl::Status status) {
622
+ RunEventEngineClosure(shutdown_complete, status);
623
+ };
624
+ grpc_core::RefCountedPtr<grpc_core::ResourceQuota> resource_quota;
625
+ {
626
+ void* tmp_quota = config.GetVoidPointer(GRPC_ARG_RESOURCE_QUOTA);
627
+ GPR_ASSERT(tmp_quota != nullptr);
628
+ resource_quota =
629
+ reinterpret_cast<grpc_core::ResourceQuota*>(tmp_quota)->Ref();
630
+ }
631
+ gpr_ref_init(&s->refs, 1);
632
+ gpr_mu_init(&s->mu);
633
+ s->ee_listener = new WindowsEventEngineListener(
634
+ engine_ptr->poller(), std::move(accept_cb), std::move(on_shutdown),
635
+ std::make_unique<MemoryQuotaBasedMemoryAllocatorFactory>(
636
+ resource_quota->memory_quota()),
637
+ engine_ptr->shared_from_this(), engine_ptr->executor(), config);
638
+ s->active_ports = -1;
639
+ s->on_accept_cb = [](void* /* arg */, grpc_endpoint* /* ep */,
640
+ grpc_pollset* /* accepting_pollset */,
641
+ grpc_tcp_server_acceptor* /* acceptor */) {
642
+ grpc_core::Crash("iomgr on_accept_cb callback should be unused");
643
+ };
644
+ s->on_accept_cb_arg = nullptr;
645
+ s->head = nullptr;
646
+ s->tail = nullptr;
647
+ s->shutdown_starting.head = nullptr;
648
+ s->shutdown_starting.tail = nullptr;
649
+ s->shutdown_complete = grpc_core::NewClosure([](absl::Status) {
650
+ grpc_core::Crash("iomgr shutdown_complete callback should be unused");
651
+ });
652
+ *server = s;
653
+ return absl::OkStatus();
654
+ }
655
+
656
+ static void event_engine_start(grpc_tcp_server* s,
657
+ const std::vector<grpc_pollset*>* /*pollsets*/) {
658
+ GPR_ASSERT(s->ee_listener->Start().ok());
659
+ }
660
+
661
+ static grpc_error_handle event_engine_add_port(
662
+ grpc_tcp_server* s, const grpc_resolved_address* addr, int* port) {
663
+ GPR_ASSERT(addr != nullptr);
664
+ GPR_ASSERT(port != nullptr);
665
+ auto ee_addr = CreateResolvedAddress(*addr);
666
+ auto out_port = s->ee_listener->Bind(ee_addr);
667
+ *port = out_port.ok() ? *out_port : -1;
668
+ return out_port.status();
669
+ }
670
+
671
+ static grpc_core::TcpServerFdHandler* event_engine_create_fd_handler(
672
+ grpc_tcp_server* /* s */) {
673
+ return nullptr;
674
+ }
675
+
676
+ static unsigned event_engine_port_fd_count(grpc_tcp_server* /* s */,
677
+ unsigned /* port_index */) {
678
+ return 0;
679
+ }
680
+
681
+ static int event_engine_port_fd(grpc_tcp_server* /* s */,
682
+ unsigned /* port_index */,
683
+ unsigned /* fd_index */) {
684
+ return -1;
685
+ }
686
+
687
+ static grpc_tcp_server* event_engine_ref(grpc_tcp_server* s) {
688
+ gpr_ref_non_zero(&s->refs);
689
+ return s;
690
+ }
691
+
692
+ static void event_engine_shutdown_listeners(grpc_tcp_server* s) {
693
+ s->ee_listener->ShutdownListeners();
694
+ }
695
+
696
+ static void event_engine_unref(grpc_tcp_server* s) {
697
+ if (gpr_unref(&s->refs)) {
698
+ event_engine_shutdown_listeners(s);
699
+ gpr_mu_lock(&s->mu);
700
+ grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_starting);
701
+ gpr_mu_unlock(&s->mu);
702
+ gpr_mu_destroy(&s->mu);
703
+ delete s->ee_listener;
704
+ gpr_free(s);
705
+ }
706
+ }
707
+
708
+ static void event_engine_shutdown_starting_add(
709
+ grpc_tcp_server* s, grpc_closure* shutdown_starting) {
710
+ gpr_mu_lock(&s->mu);
711
+ grpc_closure_list_append(&s->shutdown_starting, shutdown_starting,
712
+ absl::OkStatus());
713
+ gpr_mu_unlock(&s->mu);
714
+ }
715
+
716
+ } // namespace
717
+
718
+ grpc_tcp_server_vtable grpc_windows_event_engine_tcp_server_vtable = {
719
+ event_engine_create, event_engine_start,
720
+ event_engine_add_port, event_engine_create_fd_handler,
721
+ event_engine_port_fd_count, event_engine_port_fd,
722
+ event_engine_ref, event_engine_shutdown_starting_add,
723
+ event_engine_unref, event_engine_shutdown_listeners,
724
+ tcp_pre_allocated_fd, tcp_set_pre_allocated_fd};
725
+
559
726
  #endif // GRPC_WINSOCK_SOCKET
@@ -203,7 +203,8 @@ static void on_read(void* tcpp, grpc_error_handle error) {
203
203
  }
204
204
  GPR_ASSERT((size_t)info->bytes_transferred == tcp->read_slices->length);
205
205
 
206
- if (grpc_tcp_trace.enabled()) {
206
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) &&
207
+ gpr_should_log(GPR_LOG_SEVERITY_INFO)) {
207
208
  size_t i;
208
209
  for (i = 0; i < tcp->read_slices->count; i++) {
209
210
  char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
@@ -236,7 +237,8 @@ static void on_read(void* tcpp, grpc_error_handle error) {
236
237
  #define DEFAULT_TARGET_READ_SIZE 8192
237
238
  #define MAX_WSABUF_COUNT 16
238
239
  static void win_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
239
- grpc_closure* cb, bool urgent, int /*min_progress_size*/) {
240
+ grpc_closure* cb, bool /* urgent */,
241
+ int /* min_progress_size */) {
240
242
  grpc_tcp* tcp = (grpc_tcp*)ep;
241
243
  grpc_winsocket* handle = tcp->socket;
242
244
  grpc_winsocket_callback_info* info = &handle->read_info;
@@ -341,7 +343,8 @@ static void on_write(void* tcpp, grpc_error_handle error) {
341
343
 
342
344
  // Initiates a write.
343
345
  static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
344
- grpc_closure* cb, void* arg, int /*max_frame_size*/) {
346
+ grpc_closure* cb, void* /* arg */,
347
+ int /* max_frame_size */) {
345
348
  grpc_tcp* tcp = (grpc_tcp*)ep;
346
349
  grpc_winsocket* socket = tcp->socket;
347
350
  grpc_winsocket_callback_info* info = &socket->write_info;
@@ -353,7 +356,8 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
353
356
  WSABUF* buffers = local_buffers;
354
357
  size_t len, async_buffers_offset = 0;
355
358
 
356
- if (grpc_tcp_trace.enabled()) {
359
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) &&
360
+ gpr_should_log(GPR_LOG_SEVERITY_INFO)) {
357
361
  size_t i;
358
362
  for (i = 0; i < slices->count; i++) {
359
363
  char* data =
@@ -466,8 +470,8 @@ static void win_add_to_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pss) {
466
470
  grpc_iocp_add_socket(tcp->socket);
467
471
  }
468
472
 
469
- static void win_delete_from_pollset_set(grpc_endpoint* ep,
470
- grpc_pollset_set* pss) {}
473
+ static void win_delete_from_pollset_set(grpc_endpoint* /* ep */,
474
+ grpc_pollset_set* /* pss */) {}
471
475
 
472
476
  // Initiates a shutdown of the TCP endpoint. This will queue abort callbacks
473
477
  // for the potential read and write operations. It is up to the caller to
@@ -504,9 +508,9 @@ static absl::string_view win_get_local_address(grpc_endpoint* ep) {
504
508
  return tcp->local_address;
505
509
  }
506
510
 
507
- static int win_get_fd(grpc_endpoint* ep) { return -1; }
511
+ static int win_get_fd(grpc_endpoint* /* ep */) { return -1; }
508
512
 
509
- static bool win_can_track_err(grpc_endpoint* ep) { return false; }
513
+ static bool win_can_track_err(grpc_endpoint* /* ep */) { return false; }
510
514
 
511
515
  static grpc_endpoint_vtable vtable = {win_read,
512
516
  win_write,
@@ -69,19 +69,15 @@ LoadBalancingPolicy::SubchannelPicker::SubchannelPicker()
69
69
  LoadBalancingPolicy::PickResult LoadBalancingPolicy::QueuePicker::Pick(
70
70
  PickArgs /*args*/) {
71
71
  // We invoke the parent's ExitIdleLocked() via a closure instead
72
- // of doing it directly here, for two reasons:
73
- // 1. ExitIdleLocked() may cause the policy's state to change and
74
- // a new picker to be delivered to the channel. If that new
75
- // picker is delivered before ExitIdleLocked() returns, then by
76
- // the time this function returns, the pick will already have
77
- // been processed, and we'll be trying to re-process the same
78
- // pick again, leading to a crash.
79
- // 2. We are currently running in the data plane mutex, but we
80
- // need to bounce into the control plane work_serializer to call
81
- // ExitIdleLocked().
82
- if (!exit_idle_called_ && parent_ != nullptr) {
83
- exit_idle_called_ = true;
84
- auto* parent = parent_->Ref().release(); // ref held by lambda.
72
+ // of doing it directly here because ExitIdleLocked() may cause the
73
+ // policy's state to change and a new picker to be delivered to the
74
+ // channel. If that new picker is delivered before ExitIdleLocked()
75
+ // returns, then by the time this function returns, the pick will already
76
+ // have been processed, and we'll be trying to re-process the same pick
77
+ // again, leading to a crash.
78
+ MutexLock lock(&mu_);
79
+ if (parent_ != nullptr) {
80
+ auto* parent = parent_.release(); // ref held by lambda.
85
81
  ExecCtx::Run(DEBUG_LOCATION,
86
82
  GRPC_CLOSURE_CREATE(
87
83
  [](void* arg, grpc_error_handle /*error*/) {
@@ -27,6 +27,7 @@
27
27
  #include <utility>
28
28
  #include <vector>
29
29
 
30
+ #include "absl/base/thread_annotations.h"
30
31
  #include "absl/status/status.h"
31
32
  #include "absl/status/statusor.h"
32
33
  #include "absl/strings/string_view.h"
@@ -44,6 +45,7 @@
44
45
  #include "src/core/lib/gprpp/orphanable.h"
45
46
  #include "src/core/lib/gprpp/ref_counted.h"
46
47
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
48
+ #include "src/core/lib/gprpp/sync.h"
47
49
  #include "src/core/lib/gprpp/work_serializer.h"
48
50
  #include "src/core/lib/iomgr/iomgr_fwd.h"
49
51
  #include "src/core/lib/load_balancing/subchannel_interface.h"
@@ -392,8 +394,8 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
392
394
  PickResult Pick(PickArgs args) override;
393
395
 
394
396
  private:
395
- RefCountedPtr<LoadBalancingPolicy> parent_;
396
- bool exit_idle_called_ = false;
397
+ Mutex mu_;
398
+ RefCountedPtr<LoadBalancingPolicy> parent_ ABSL_GUARDED_BY(&mu_);
397
399
  };
398
400
 
399
401
  // A picker that returns PickResult::Fail for all picks.
@@ -19,8 +19,11 @@
19
19
  #include <stddef.h>
20
20
 
21
21
  #include <initializer_list>
22
+ #include <vector>
22
23
 
24
+ #include "absl/strings/str_cat.h"
23
25
  #include "absl/strings/str_format.h"
26
+ #include "absl/strings/str_join.h"
24
27
 
25
28
  #include "src/core/lib/gprpp/atomic_utils.h"
26
29
 
@@ -36,7 +39,9 @@ namespace promise_detail {
36
39
  ///////////////////////////////////////////////////////////////////////////////
37
40
  // HELPER TYPES
38
41
 
39
- std::string Unwakeable::ActivityDebugTag(void*) const { return "<unknown>"; }
42
+ std::string Unwakeable::ActivityDebugTag(WakeupMask) const {
43
+ return "<unknown>";
44
+ }
40
45
 
41
46
  // Weak handle to an Activity.
42
47
  // Handle can persist while Activity goes away.
@@ -58,7 +63,7 @@ class FreestandingActivity::Handle final : public Wakeable {
58
63
 
59
64
  // Activity needs to wake up (if it still exists!) - wake it up, and drop the
60
65
  // ref that was kept for this handle.
61
- void Wakeup(void*) override ABSL_LOCKS_EXCLUDED(mu_) {
66
+ void Wakeup(WakeupMask) override ABSL_LOCKS_EXCLUDED(mu_) {
62
67
  mu_.Lock();
63
68
  // Note that activity refcount can drop to zero, but we could win the lock
64
69
  // against DropActivity, so we need to only increase activities refcount if
@@ -68,7 +73,7 @@ class FreestandingActivity::Handle final : public Wakeable {
68
73
  mu_.Unlock();
69
74
  // Activity still exists and we have a reference: wake it up, which will
70
75
  // drop the ref.
71
- activity->Wakeup(nullptr);
76
+ activity->Wakeup(0);
72
77
  } else {
73
78
  // Could not get the activity - it's either gone or going. No need to wake
74
79
  // it up!
@@ -78,9 +83,9 @@ class FreestandingActivity::Handle final : public Wakeable {
78
83
  Unref();
79
84
  }
80
85
 
81
- void Drop(void*) override { Unref(); }
86
+ void Drop(WakeupMask) override { Unref(); }
82
87
 
83
- std::string ActivityDebugTag(void*) const override {
88
+ std::string ActivityDebugTag(WakeupMask) const override {
84
89
  MutexLock lock(&mu_);
85
90
  return activity_ == nullptr ? "<unknown>" : activity_->DebugTag();
86
91
  }
@@ -124,7 +129,7 @@ void FreestandingActivity::DropHandle() {
124
129
 
125
130
  Waker FreestandingActivity::MakeNonOwningWaker() {
126
131
  mu_.AssertHeld();
127
- return Waker(RefHandle(), nullptr);
132
+ return Waker(RefHandle(), 0);
128
133
  }
129
134
 
130
135
  } // namespace promise_detail
@@ -133,4 +138,15 @@ std::string Activity::DebugTag() const {
133
138
  return absl::StrFormat("ACTIVITY[%p]", this);
134
139
  }
135
140
 
141
+ ///////////////////////////////////////////////////////////////////////////////
142
+ // INTRA ACTIVITY WAKER IMPLEMENTATION
143
+
144
+ std::string IntraActivityWaiter::DebugString() const {
145
+ std::vector<int> bits;
146
+ for (size_t i = 0; i < 8 * sizeof(WakeupMask); i++) {
147
+ if (wakeups_ & (1 << i)) bits.push_back(i);
148
+ }
149
+ return absl::StrCat("{", absl::StrJoin(bits, ","), "}");
150
+ }
151
+
136
152
  } // namespace grpc_core
@@ -38,24 +38,29 @@
38
38
  #include "src/core/lib/promise/context.h"
39
39
  #include "src/core/lib/promise/detail/promise_factory.h"
40
40
  #include "src/core/lib/promise/detail/status.h"
41
+ #include "src/core/lib/promise/poll.h"
41
42
 
42
43
  namespace grpc_core {
43
44
 
44
45
  class Activity;
45
46
 
47
+ // WakeupMask is a bitfield representing which parts of an activity should be
48
+ // woken up.
49
+ using WakeupMask = uint16_t;
50
+
46
51
  // A Wakeable object is used by queues to wake activities.
47
52
  class Wakeable {
48
53
  public:
49
54
  // Wake up the underlying activity.
50
55
  // After calling, this Wakeable cannot be used again.
51
- // arg comes from the Waker object and allows one Wakeable instance to be used
52
- // for multiple disjoint subparts of an Activity.
53
- virtual void Wakeup(void* arg) = 0;
56
+ // WakeupMask comes from the activity that created this Wakeable and specifies
57
+ // the set of promises that should be awoken.
58
+ virtual void Wakeup(WakeupMask wakeup_mask) = 0;
54
59
  // Drop this wakeable without waking up the underlying activity.
55
- virtual void Drop(void* arg) = 0;
60
+ virtual void Drop(WakeupMask wakeup_mask) = 0;
56
61
 
57
62
  // Return the underlying activity debug tag, or "<unknown>" if not available.
58
- virtual std::string ActivityDebugTag(void* arg) const = 0;
63
+ virtual std::string ActivityDebugTag(WakeupMask wakeup_mask) const = 0;
59
64
 
60
65
  protected:
61
66
  inline ~Wakeable() {}
@@ -63,9 +68,9 @@ class Wakeable {
63
68
 
64
69
  namespace promise_detail {
65
70
  struct Unwakeable final : public Wakeable {
66
- void Wakeup(void*) override {}
67
- void Drop(void*) override {}
68
- std::string ActivityDebugTag(void*) const override;
71
+ void Wakeup(WakeupMask) override {}
72
+ void Drop(WakeupMask) override {}
73
+ std::string ActivityDebugTag(WakeupMask) const override;
69
74
  };
70
75
  static Unwakeable* unwakeable() {
71
76
  return NoDestructSingleton<Unwakeable>::Get();
@@ -76,8 +81,9 @@ static Unwakeable* unwakeable() {
76
81
  // This type is non-copyable but movable.
77
82
  class Waker {
78
83
  public:
79
- Waker(Wakeable* wakeable, void* arg) : wakeable_and_arg_{wakeable, arg} {}
80
- Waker() : Waker(promise_detail::unwakeable(), nullptr) {}
84
+ Waker(Wakeable* wakeable, WakeupMask wakeup_mask)
85
+ : wakeable_and_arg_{wakeable, wakeup_mask} {}
86
+ Waker() : Waker(promise_detail::unwakeable(), 0) {}
81
87
  ~Waker() { wakeable_and_arg_.Drop(); }
82
88
  Waker(const Waker&) = delete;
83
89
  Waker& operator=(const Waker&) = delete;
@@ -93,7 +99,7 @@ class Waker {
93
99
  template <typename H>
94
100
  friend H AbslHashValue(H h, const Waker& w) {
95
101
  return H::combine(H::combine(std::move(h), w.wakeable_and_arg_.wakeable),
96
- w.wakeable_and_arg_.arg);
102
+ w.wakeable_and_arg_.wakeup_mask);
97
103
  }
98
104
 
99
105
  bool operator==(const Waker& other) const noexcept {
@@ -116,27 +122,42 @@ class Waker {
116
122
  private:
117
123
  struct WakeableAndArg {
118
124
  Wakeable* wakeable;
119
- void* arg;
125
+ WakeupMask wakeup_mask;
120
126
 
121
- void Wakeup() { wakeable->Wakeup(arg); }
122
- void Drop() { wakeable->Drop(arg); }
127
+ void Wakeup() { wakeable->Wakeup(wakeup_mask); }
128
+ void Drop() { wakeable->Drop(wakeup_mask); }
123
129
  std::string ActivityDebugTag() const {
124
130
  return wakeable == nullptr ? "<unknown>"
125
- : wakeable->ActivityDebugTag(arg);
131
+ : wakeable->ActivityDebugTag(wakeup_mask);
126
132
  }
127
133
  bool operator==(const WakeableAndArg& other) const noexcept {
128
- return wakeable == other.wakeable && arg == other.arg;
134
+ return wakeable == other.wakeable && wakeup_mask == other.wakeup_mask;
129
135
  }
130
136
  };
131
137
 
132
138
  WakeableAndArg Take() {
133
- return std::exchange(wakeable_and_arg_,
134
- {promise_detail::unwakeable(), nullptr});
139
+ return std::exchange(wakeable_and_arg_, {promise_detail::unwakeable(), 0});
135
140
  }
136
141
 
137
142
  WakeableAndArg wakeable_and_arg_;
138
143
  };
139
144
 
145
+ // Helper type to track wakeups between objects in the same activity.
146
+ // Can be fairly fast as no ref counting or locking needs to occur.
147
+ class IntraActivityWaiter {
148
+ public:
149
+ // Register for wakeup, return Pending(). If state is not ready to proceed,
150
+ // Promises should bottom out here.
151
+ Pending pending();
152
+ // Wake the activity
153
+ void Wake();
154
+
155
+ std::string DebugString() const;
156
+
157
+ private:
158
+ WakeupMask wakeups_ = 0;
159
+ };
160
+
140
161
  // An Activity tracks execution of a single promise.
141
162
  // It executes the promise under a mutex.
142
163
  // When the promise stalls, it registers the containing activity to be woken up
@@ -156,7 +177,13 @@ class Activity : public Orphanable {
156
177
  void ForceWakeup() { MakeOwningWaker().Wakeup(); }
157
178
 
158
179
  // Force the current activity to immediately repoll if it doesn't complete.
159
- virtual void ForceImmediateRepoll() = 0;
180
+ virtual void ForceImmediateRepoll(WakeupMask mask) = 0;
181
+ // Legacy version of ForceImmediateRepoll() that uses the current participant.
182
+ // Will go away once Party gets merged with Activity. New usage is banned.
183
+ void ForceImmediateRepoll() { ForceImmediateRepoll(CurrentParticipant()); }
184
+
185
+ // Return the current part of the activity as a bitmask
186
+ virtual WakeupMask CurrentParticipant() const { return 1; }
160
187
 
161
188
  // Return the current activity.
162
189
  // Additionally:
@@ -284,7 +311,7 @@ class FreestandingActivity : public Activity, private Wakeable {
284
311
  public:
285
312
  Waker MakeOwningWaker() final {
286
313
  Ref();
287
- return Waker(this, nullptr);
314
+ return Waker(this, 0);
288
315
  }
289
316
  Waker MakeNonOwningWaker() final;
290
317
 
@@ -293,7 +320,7 @@ class FreestandingActivity : public Activity, private Wakeable {
293
320
  Unref();
294
321
  }
295
322
 
296
- void ForceImmediateRepoll() final {
323
+ void ForceImmediateRepoll(WakeupMask) final {
297
324
  mu_.AssertHeld();
298
325
  SetActionDuringRun(ActionDuringRun::kWakeup);
299
326
  }
@@ -333,7 +360,7 @@ class FreestandingActivity : public Activity, private Wakeable {
333
360
 
334
361
  Mutex* mu() ABSL_LOCK_RETURNED(mu_) { return &mu_; }
335
362
 
336
- std::string ActivityDebugTag(void*) const override { return DebugTag(); }
363
+ std::string ActivityDebugTag(WakeupMask) const override { return DebugTag(); }
337
364
 
338
365
  private:
339
366
  class Handle;
@@ -467,7 +494,7 @@ class PromiseActivity final
467
494
  // the activity to an external threadpool to run. If the activity is already
468
495
  // running on this thread, a note is taken of such and the activity is
469
496
  // repolled if it doesn't complete.
470
- void Wakeup(void*) final {
497
+ void Wakeup(WakeupMask) final {
471
498
  // If there is an active activity, but hey it's us, flag that and we'll loop
472
499
  // in RunLoop (that's calling from above here!).
473
500
  if (Activity::is_current()) {
@@ -486,7 +513,7 @@ class PromiseActivity final
486
513
  }
487
514
 
488
515
  // Drop a wakeup
489
- void Drop(void*) final { this->WakeupComplete(); }
516
+ void Drop(WakeupMask) final { this->WakeupComplete(); }
490
517
 
491
518
  // Notification that we're no longer executing - it's ok to destruct the
492
519
  // promise.
@@ -593,6 +620,16 @@ ActivityPtr MakeActivity(Factory promise_factory,
593
620
  std::move(on_done), std::forward<Contexts>(contexts)...));
594
621
  }
595
622
 
623
+ inline Pending IntraActivityWaiter::pending() {
624
+ wakeups_ |= Activity::current()->CurrentParticipant();
625
+ return Pending();
626
+ }
627
+
628
+ inline void IntraActivityWaiter::Wake() {
629
+ if (wakeups_ == 0) return;
630
+ Activity::current()->ForceImmediateRepoll(std::exchange(wakeups_, 0));
631
+ }
632
+
596
633
  } // namespace grpc_core
597
634
 
598
635
  #endif // GRPC_SRC_CORE_LIB_PROMISE_ACTIVITY_H