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
@@ -18,13 +18,16 @@
18
18
 
19
19
  #include <inttypes.h>
20
20
  #include <stdlib.h>
21
+ #include <string.h>
21
22
 
22
23
  #include <algorithm>
24
+ #include <atomic>
23
25
  #include <memory>
24
26
  #include <string>
25
27
  #include <utility>
26
28
  #include <vector>
27
29
 
30
+ #include "absl/random/random.h"
28
31
  #include "absl/status/status.h"
29
32
  #include "absl/status/statusor.h"
30
33
  #include "absl/strings/str_cat.h"
@@ -174,7 +177,7 @@ class RoundRobin : public LoadBalancingPolicy {
174
177
  // Using pointer value only, no ref held -- do not dereference!
175
178
  RoundRobin* parent_;
176
179
 
177
- size_t last_picked_index_;
180
+ std::atomic<size_t> last_picked_index_;
178
181
  std::vector<RefCountedPtr<SubchannelInterface>> subchannels_;
179
182
  };
180
183
 
@@ -189,6 +192,8 @@ class RoundRobin : public LoadBalancingPolicy {
189
192
  RefCountedPtr<RoundRobinSubchannelList> latest_pending_subchannel_list_;
190
193
 
191
194
  bool shutdown_ = false;
195
+
196
+ absl::BitGen bit_gen_;
192
197
  };
193
198
 
194
199
  //
@@ -207,27 +212,26 @@ RoundRobin::Picker::Picker(RoundRobin* parent,
207
212
  }
208
213
  // For discussion on why we generate a random starting index for
209
214
  // the picker, see https://github.com/grpc/grpc-go/issues/2580.
210
- // TODO(roth): rand(3) is not thread-safe. This should be replaced with
211
- // something better as part of https://github.com/grpc/grpc/issues/17891.
212
- last_picked_index_ = rand() % subchannels_.size();
215
+ size_t index =
216
+ absl::Uniform<size_t>(parent->bit_gen_, 0, subchannels_.size());
217
+ last_picked_index_.store(index, std::memory_order_relaxed);
213
218
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
214
219
  gpr_log(GPR_INFO,
215
220
  "[RR %p picker %p] created picker from subchannel_list=%p "
216
221
  "with %" PRIuPTR " READY subchannels; last_picked_index_=%" PRIuPTR,
217
- parent_, this, subchannel_list, subchannels_.size(),
218
- last_picked_index_);
222
+ parent_, this, subchannel_list, subchannels_.size(), index);
219
223
  }
220
224
  }
221
225
 
222
226
  RoundRobin::PickResult RoundRobin::Picker::Pick(PickArgs /*args*/) {
223
- last_picked_index_ = (last_picked_index_ + 1) % subchannels_.size();
227
+ size_t index = last_picked_index_.fetch_add(1, std::memory_order_relaxed) %
228
+ subchannels_.size();
224
229
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
225
230
  gpr_log(GPR_INFO,
226
231
  "[RR %p picker %p] returning index %" PRIuPTR ", subchannel=%p",
227
- parent_, this, last_picked_index_,
228
- subchannels_[last_picked_index_].get());
232
+ parent_, this, index, subchannels_[index].get());
229
233
  }
230
- return PickResult::Complete(subchannels_[last_picked_index_]);
234
+ return PickResult::Complete(subchannels_[index]);
231
235
  }
232
236
 
233
237
  //
@@ -99,6 +99,7 @@ class WeightedRoundRobinConfig : public LoadBalancingPolicy::Config {
99
99
  Duration weight_expiration_period() const {
100
100
  return weight_expiration_period_;
101
101
  }
102
+ float error_utilization_penalty() const { return error_utilization_penalty_; }
102
103
 
103
104
  static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
104
105
  static const auto* loader =
@@ -113,14 +114,21 @@ class WeightedRoundRobinConfig : public LoadBalancingPolicy::Config {
113
114
  &WeightedRoundRobinConfig::weight_update_period_)
114
115
  .OptionalField("weightExpirationPeriod",
115
116
  &WeightedRoundRobinConfig::weight_expiration_period_)
117
+ .OptionalField(
118
+ "errorUtilizationPenalty",
119
+ &WeightedRoundRobinConfig::error_utilization_penalty_)
116
120
  .Finish();
117
121
  return loader;
118
122
  }
119
123
 
120
- void JsonPostLoad(const Json&, const JsonArgs&, ValidationErrors*) {
124
+ void JsonPostLoad(const Json&, const JsonArgs&, ValidationErrors* errors) {
121
125
  // Impose lower bound of 100ms on weightUpdatePeriod.
122
126
  weight_update_period_ =
123
127
  std::max(weight_update_period_, Duration::Milliseconds(100));
128
+ if (error_utilization_penalty_ < 0) {
129
+ ValidationErrors::ScopedField field(errors, ".errorUtilizationPenalty");
130
+ errors->AddError("must be non-negative");
131
+ }
124
132
  }
125
133
 
126
134
  private:
@@ -129,6 +137,7 @@ class WeightedRoundRobinConfig : public LoadBalancingPolicy::Config {
129
137
  Duration blackout_period_ = Duration::Seconds(10);
130
138
  Duration weight_update_period_ = Duration::Seconds(1);
131
139
  Duration weight_expiration_period_ = Duration::Minutes(3);
140
+ float error_utilization_penalty_ = 1.0;
132
141
  };
133
142
 
134
143
  // WRR LB policy.
@@ -149,7 +158,8 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
149
158
  : wrr_(std::move(wrr)), key_(std::move(key)) {}
150
159
  ~AddressWeight() override;
151
160
 
152
- void MaybeUpdateWeight(double qps, double cpu_utilization);
161
+ void MaybeUpdateWeight(double qps, double eps, double cpu_utilization,
162
+ float error_utilization_penalty);
153
163
 
154
164
  float GetWeight(Timestamp now, Duration weight_expiration_period,
155
165
  Duration blackout_period);
@@ -191,14 +201,17 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
191
201
  private:
192
202
  class OobWatcher : public OobBackendMetricWatcher {
193
203
  public:
194
- explicit OobWatcher(RefCountedPtr<AddressWeight> weight)
195
- : weight_(std::move(weight)) {}
204
+ OobWatcher(RefCountedPtr<AddressWeight> weight,
205
+ float error_utilization_penalty)
206
+ : weight_(std::move(weight)),
207
+ error_utilization_penalty_(error_utilization_penalty) {}
196
208
 
197
209
  void OnBackendMetricReport(
198
210
  const BackendMetricData& backend_metric_data) override;
199
211
 
200
212
  private:
201
213
  RefCountedPtr<AddressWeight> weight_;
214
+ const float error_utilization_penalty_;
202
215
  };
203
216
 
204
217
  // Performs connectivity state updates that need to be done only
@@ -290,8 +303,10 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
290
303
  // A call tracker that collects per-call endpoint utilization reports.
291
304
  class SubchannelCallTracker : public SubchannelCallTrackerInterface {
292
305
  public:
293
- explicit SubchannelCallTracker(RefCountedPtr<AddressWeight> weight)
294
- : weight_(std::move(weight)) {}
306
+ SubchannelCallTracker(RefCountedPtr<AddressWeight> weight,
307
+ float error_utilization_penalty)
308
+ : weight_(std::move(weight)),
309
+ error_utilization_penalty_(error_utilization_penalty) {}
295
310
 
296
311
  void Start() override {}
297
312
 
@@ -299,6 +314,7 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
299
314
 
300
315
  private:
301
316
  RefCountedPtr<AddressWeight> weight_;
317
+ const float error_utilization_penalty_;
302
318
  };
303
319
 
304
320
  // Info stored about each subchannel.
@@ -324,6 +340,7 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
324
340
  const Duration weight_update_period_;
325
341
  const Duration weight_expiration_period_;
326
342
  const Duration blackout_period_;
343
+ const float error_utilization_penalty_;
327
344
  std::vector<SubchannelInfo> subchannels_;
328
345
 
329
346
  Mutex scheduler_mu_;
@@ -381,16 +398,24 @@ WeightedRoundRobin::AddressWeight::~AddressWeight() {
381
398
  }
382
399
 
383
400
  void WeightedRoundRobin::AddressWeight::MaybeUpdateWeight(
384
- double qps, double cpu_utilization) {
401
+ double qps, double eps, double cpu_utilization,
402
+ float error_utilization_penalty) {
385
403
  // Compute weight.
386
404
  float weight = 0;
387
- if (qps > 0 && cpu_utilization > 0) weight = qps / cpu_utilization;
405
+ if (qps > 0 && cpu_utilization > 0) {
406
+ double penalty = 0.0;
407
+ if (eps > 0 && error_utilization_penalty > 0) {
408
+ penalty = eps / qps * error_utilization_penalty;
409
+ }
410
+ weight = qps / (cpu_utilization + penalty);
411
+ }
388
412
  if (weight == 0) {
389
413
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
390
414
  gpr_log(GPR_INFO,
391
- "[WRR %p] subchannel %s: qps=%f, cpu_utilization=%f: weight=%f "
392
- "(not updating)",
393
- wrr_.get(), key_.c_str(), qps, cpu_utilization, weight);
415
+ "[WRR %p] subchannel %s: qps=%f, eps=%f, cpu_utilization=%f: "
416
+ "error_util_penalty=%f, weight=%f (not updating)",
417
+ wrr_.get(), key_.c_str(), qps, eps, cpu_utilization,
418
+ error_utilization_penalty, weight);
394
419
  }
395
420
  return;
396
421
  }
@@ -399,11 +424,12 @@ void WeightedRoundRobin::AddressWeight::MaybeUpdateWeight(
399
424
  MutexLock lock(&mu_);
400
425
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
401
426
  gpr_log(GPR_INFO,
402
- "[WRR %p] subchannel %s: qps=%f, cpu_utilization=%f: setting "
403
- "weight=%f weight_=%f now=%s last_update_time_=%s "
404
- "non_empty_since_=%s",
405
- wrr_.get(), key_.c_str(), qps, cpu_utilization, weight, weight_,
406
- now.ToString().c_str(), last_update_time_.ToString().c_str(),
427
+ "[WRR %p] subchannel %s: qps=%f, eps=%f, cpu_utilization=%f "
428
+ "error_util_penalty=%f : setting weight=%f weight_=%f now=%s "
429
+ "last_update_time_=%s non_empty_since_=%s",
430
+ wrr_.get(), key_.c_str(), qps, eps, cpu_utilization,
431
+ error_utilization_penalty, weight, weight_, now.ToString().c_str(),
432
+ last_update_time_.ToString().c_str(),
407
433
  non_empty_since_.ToString().c_str());
408
434
  }
409
435
  if (non_empty_since_ == Timestamp::InfFuture()) non_empty_since_ = now;
@@ -456,12 +482,15 @@ void WeightedRoundRobin::Picker::SubchannelCallTracker::Finish(
456
482
  auto* backend_metric_data =
457
483
  args.backend_metric_accessor->GetBackendMetricData();
458
484
  double qps = 0;
485
+ double eps = 0;
459
486
  double cpu_utilization = 0;
460
487
  if (backend_metric_data != nullptr) {
461
488
  qps = backend_metric_data->qps;
489
+ eps = backend_metric_data->eps;
462
490
  cpu_utilization = backend_metric_data->cpu_utilization;
463
491
  }
464
- weight_->MaybeUpdateWeight(qps, cpu_utilization);
492
+ weight_->MaybeUpdateWeight(qps, eps, cpu_utilization,
493
+ error_utilization_penalty_);
465
494
  }
466
495
 
467
496
  //
@@ -476,6 +505,7 @@ WeightedRoundRobin::Picker::Picker(
476
505
  weight_update_period_(wrr_->config_->weight_update_period()),
477
506
  weight_expiration_period_(wrr_->config_->weight_expiration_period()),
478
507
  blackout_period_(wrr_->config_->blackout_period()),
508
+ error_utilization_penalty_(wrr_->config_->error_utilization_penalty()),
479
509
  last_picked_index_(absl::Uniform<size_t>(wrr_->bit_gen_)) {
480
510
  for (size_t i = 0; i < subchannel_list->num_subchannels(); ++i) {
481
511
  WeightedRoundRobinSubchannelData* sd = subchannel_list->subchannel(i);
@@ -515,8 +545,8 @@ WeightedRoundRobin::PickResult WeightedRoundRobin::Picker::Pick(
515
545
  // Collect per-call utilization data if needed.
516
546
  std::unique_ptr<SubchannelCallTrackerInterface> subchannel_call_tracker;
517
547
  if (use_per_rpc_utilization_) {
518
- subchannel_call_tracker =
519
- std::make_unique<SubchannelCallTracker>(subchannel_info.weight);
548
+ subchannel_call_tracker = std::make_unique<SubchannelCallTracker>(
549
+ subchannel_info.weight, error_utilization_penalty_);
520
550
  }
521
551
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
522
552
  gpr_log(GPR_INFO,
@@ -560,6 +590,13 @@ void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
560
590
  if (scheduler_or.has_value()) {
561
591
  scheduler =
562
592
  std::make_shared<StaticStrideScheduler>(std::move(*scheduler_or));
593
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
594
+ gpr_log(GPR_INFO, "[WRR %p picker %p] new scheduler: %p", wrr_.get(),
595
+ this, scheduler.get());
596
+ }
597
+ } else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
598
+ gpr_log(GPR_INFO, "[WRR %p picker %p] no scheduler, falling back to RR",
599
+ wrr_.get(), this);
563
600
  }
564
601
  {
565
602
  MutexLock lock(&scheduler_mu_);
@@ -817,8 +854,9 @@ void WeightedRoundRobin::WeightedRoundRobinSubchannelList::
817
854
 
818
855
  void WeightedRoundRobin::WeightedRoundRobinSubchannelData::OobWatcher::
819
856
  OnBackendMetricReport(const BackendMetricData& backend_metric_data) {
820
- weight_->MaybeUpdateWeight(backend_metric_data.qps,
821
- backend_metric_data.cpu_utilization);
857
+ weight_->MaybeUpdateWeight(backend_metric_data.qps, backend_metric_data.eps,
858
+ backend_metric_data.cpu_utilization,
859
+ error_utilization_penalty_);
822
860
  }
823
861
 
824
862
  //
@@ -837,9 +875,10 @@ WeightedRoundRobin::WeightedRoundRobinSubchannelData::
837
875
  WeightedRoundRobin* p =
838
876
  static_cast<WeightedRoundRobin*>(subchannel_list->policy());
839
877
  if (p->config_->enable_oob_load_report()) {
840
- subchannel()->AddDataWatcher(
841
- MakeOobBackendMetricWatcher(p->config_->oob_reporting_period(),
842
- std::make_unique<OobWatcher>(weight_)));
878
+ subchannel()->AddDataWatcher(MakeOobBackendMetricWatcher(
879
+ p->config_->oob_reporting_period(),
880
+ std::make_unique<OobWatcher>(weight_,
881
+ p->config_->error_utilization_penalty())));
843
882
  }
844
883
  }
845
884
 
@@ -950,15 +989,14 @@ class WeightedRoundRobinFactory : public LoadBalancingPolicyFactory {
950
989
  absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
951
990
  ParseLoadBalancingConfig(const Json& json) const override {
952
991
  if (json.type() == Json::Type::JSON_NULL) {
953
- // priority was mentioned as a policy in the deprecated
954
- // loadBalancingPolicy field or in the client API.
955
992
  return absl::InvalidArgumentError(
956
- "field:loadBalancingPolicy error:priority policy requires "
957
- "configuration. Please use loadBalancingConfig field of service "
958
- "config instead.");
993
+ "field:loadBalancingPolicy error:weighted_round_robin policy "
994
+ "requires configuration. Please use loadBalancingConfig field of "
995
+ "service config instead.");
959
996
  }
960
997
  return LoadRefCountedFromJson<WeightedRoundRobinConfig>(
961
- json, JsonArgs(), "errors validating priority LB policy config");
998
+ json, JsonArgs(),
999
+ "errors validating weighted_round_robin LB policy config");
962
1000
  }
963
1001
  };
964
1002
 
@@ -26,6 +26,7 @@
26
26
  #include <utility>
27
27
  #include <vector>
28
28
 
29
+ #include "absl/base/thread_annotations.h"
29
30
  #include "absl/random/random.h"
30
31
  #include "absl/status/status.h"
31
32
  #include "absl/status/statusor.h"
@@ -46,6 +47,7 @@
46
47
  #include "src/core/lib/gprpp/debug_location.h"
47
48
  #include "src/core/lib/gprpp/orphanable.h"
48
49
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
50
+ #include "src/core/lib/gprpp/sync.h"
49
51
  #include "src/core/lib/gprpp/time.h"
50
52
  #include "src/core/lib/gprpp/validation_errors.h"
51
53
  #include "src/core/lib/gprpp/work_serializer.h"
@@ -138,7 +140,11 @@ class WeightedTargetLb : public LoadBalancingPolicy {
138
140
 
139
141
  private:
140
142
  PickerList pickers_;
141
- absl::BitGen bit_gen_;
143
+
144
+ // TODO(roth): Consider using a separate thread-local BitGen for each CPU
145
+ // to avoid the need for this mutex.
146
+ Mutex mu_;
147
+ absl::BitGen bit_gen_ ABSL_GUARDED_BY(&mu_);
142
148
  };
143
149
 
144
150
  // Each WeightedChild holds a ref to its parent WeightedTargetLb.
@@ -247,8 +253,10 @@ class WeightedTargetLb : public LoadBalancingPolicy {
247
253
  WeightedTargetLb::PickResult WeightedTargetLb::WeightedPicker::Pick(
248
254
  PickArgs args) {
249
255
  // Generate a random number in [0, total weight).
250
- const uint64_t key =
251
- absl::Uniform<uint64_t>(bit_gen_, 0, pickers_.back().first);
256
+ const uint64_t key = [&]() {
257
+ MutexLock lock(&mu_);
258
+ return absl::Uniform<uint64_t>(bit_gen_, 0, pickers_.back().first);
259
+ }();
252
260
  // Find the index in pickers_ corresponding to key.
253
261
  size_t mid = 0;
254
262
  size_t start_index = 0;
@@ -641,8 +649,8 @@ void WeightedTargetLb::WeightedChild::OnConnectivityStateUpdateLocked(
641
649
  state == GRPC_CHANNEL_READY) {
642
650
  connectivity_state_ = state;
643
651
  }
644
- // Notify the LB policy.
645
- weighted_target_policy_->UpdateStateLocked();
652
+ // Update the LB policy's state if this child is not deactivated.
653
+ if (weight_ != 0) weighted_target_policy_->UpdateStateLocked();
646
654
  }
647
655
 
648
656
  void WeightedTargetLb::WeightedChild::DeactivateLocked() {
@@ -38,6 +38,7 @@
38
38
  #include <grpc/impl/connectivity_state.h>
39
39
  #include <grpc/support/log.h>
40
40
 
41
+ #include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
41
42
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
42
43
  #include "src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h"
43
44
  #include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
@@ -332,7 +333,13 @@ class XdsClusterImplLb::Picker::SubchannelCallTracker
332
333
  }
333
334
  // Record call completion for load reporting.
334
335
  if (locality_stats_ != nullptr) {
335
- locality_stats_->AddCallFinished(!args.status.ok());
336
+ auto* backend_metric_data =
337
+ args.backend_metric_accessor->GetBackendMetricData();
338
+ const std::map<absl::string_view, double>* named_metrics = nullptr;
339
+ if (backend_metric_data != nullptr) {
340
+ named_metrics = &backend_metric_data->named_metrics;
341
+ }
342
+ locality_stats_->AddCallFinished(named_metrics, !args.status.ok());
336
343
  }
337
344
  // Decrement number of calls in flight.
338
345
  call_counter_->Decrement();
@@ -37,7 +37,7 @@
37
37
  #include <grpc/impl/connectivity_state.h>
38
38
  #include <grpc/support/log.h>
39
39
 
40
- #include "src/core/ext/filters/client_channel/client_channel.h"
40
+ #include "src/core/ext/filters/client_channel/client_channel_internal.h"
41
41
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
42
42
  #include "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h"
43
43
  #include "src/core/lib/channel/channel_args.h"
@@ -229,8 +229,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
229
229
 
230
230
  XdsClusterManagerLb::PickResult XdsClusterManagerLb::ClusterPicker::Pick(
231
231
  PickArgs args) {
232
- auto* call_state = static_cast<ClientChannel::LoadBalancedCall::LbCallState*>(
233
- args.call_state);
232
+ auto* call_state = static_cast<ClientChannelLbCallState*>(args.call_state);
234
233
  auto cluster_name =
235
234
  call_state->GetCallAttribute(XdsClusterAttributeTypeName());
236
235
  auto it = cluster_map_.find(std::string(cluster_name));
@@ -328,7 +327,6 @@ void XdsClusterManagerLb::UpdateStateLocked() {
328
327
  size_t num_ready = 0;
329
328
  size_t num_connecting = 0;
330
329
  size_t num_idle = 0;
331
- size_t num_transient_failures = 0;
332
330
  for (const auto& p : children_) {
333
331
  const auto& child_name = p.first;
334
332
  const ClusterChild* child = p.second.get();
@@ -351,7 +349,6 @@ void XdsClusterManagerLb::UpdateStateLocked() {
351
349
  break;
352
350
  }
353
351
  case GRPC_CHANNEL_TRANSIENT_FAILURE: {
354
- ++num_transient_failures;
355
352
  break;
356
353
  }
357
354
  default:
@@ -43,7 +43,7 @@
43
43
  #include <grpc/impl/connectivity_state.h>
44
44
  #include <grpc/support/log.h>
45
45
 
46
- #include "src/core/ext/filters/client_channel/lb_call_state_internal.h"
46
+ #include "src/core/ext/filters/client_channel/client_channel_internal.h"
47
47
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
48
48
  #include "src/core/ext/filters/stateful_session/stateful_session_filter.h"
49
49
  #include "src/core/ext/xds/xds_health_status.h"
@@ -369,7 +369,7 @@ XdsOverrideHostLb::Picker::PickOverridenHost(absl::string_view override_host) {
369
369
 
370
370
  LoadBalancingPolicy::PickResult XdsOverrideHostLb::Picker::Pick(
371
371
  LoadBalancingPolicy::PickArgs args) {
372
- auto* call_state = static_cast<LbCallStateInternal*>(args.call_state);
372
+ auto* call_state = static_cast<ClientChannelLbCallState*>(args.call_state);
373
373
  auto override_host = call_state->GetCallAttribute(XdsOverrideHostTypeName());
374
374
  auto overridden_host_pick = PickOverridenHost(override_host);
375
375
  if (overridden_host_pick.has_value()) {
@@ -30,10 +30,12 @@
30
30
  #include "absl/base/thread_annotations.h"
31
31
  #include "absl/status/status.h"
32
32
  #include "absl/status/statusor.h"
33
+ #include "absl/strings/match.h"
33
34
  #include "absl/strings/string_view.h"
34
35
  #include "absl/strings/strip.h"
35
36
  #include "absl/types/optional.h"
36
37
 
38
+ #include <grpc/event_engine/event_engine.h>
37
39
  #include <grpc/grpc.h>
38
40
  #include <grpc/support/alloc.h>
39
41
  #include <grpc/support/log.h>
@@ -41,8 +43,6 @@
41
43
  #include "src/core/lib/config/core_configuration.h"
42
44
  #include "src/core/lib/debug/trace.h"
43
45
  #include "src/core/lib/gprpp/debug_location.h"
44
- #include "src/core/lib/gprpp/global_config_generic.h"
45
- #include "src/core/lib/gprpp/memory.h"
46
46
  #include "src/core/lib/gprpp/orphanable.h"
47
47
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
48
48
  #include "src/core/lib/gprpp/status_helper.h"
@@ -61,7 +61,6 @@
61
61
  #if GRPC_ARES == 1
62
62
 
63
63
  #include <stdio.h>
64
- #include <string.h>
65
64
 
66
65
  #include <address_sorting/address_sorting.h>
67
66
 
@@ -70,12 +69,11 @@
70
69
 
71
70
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
72
71
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
73
- #include "src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h"
74
72
  #include "src/core/ext/filters/client_channel/resolver/polling_resolver.h"
75
73
  #include "src/core/lib/backoff/backoff.h"
76
74
  #include "src/core/lib/channel/channel_args.h"
75
+ #include "src/core/lib/config/config_vars.h"
77
76
  #include "src/core/lib/event_engine/handle_containers.h"
78
- #include "src/core/lib/gpr/string.h"
79
77
  #include "src/core/lib/iomgr/gethostname.h"
80
78
  #include "src/core/lib/iomgr/resolve_address.h"
81
79
  #include "src/core/lib/json/json.h"
@@ -95,7 +93,7 @@ namespace {
95
93
  class AresClientChannelDNSResolver : public PollingResolver {
96
94
  public:
97
95
  AresClientChannelDNSResolver(ResolverArgs args,
98
- const ChannelArgs& channel_args);
96
+ Duration min_time_between_resolutions);
99
97
 
100
98
  OrphanablePtr<Orphanable> StartRequest() override;
101
99
 
@@ -205,29 +203,26 @@ class AresClientChannelDNSResolver : public PollingResolver {
205
203
  };
206
204
 
207
205
  AresClientChannelDNSResolver::AresClientChannelDNSResolver(
208
- ResolverArgs args, const ChannelArgs& channel_args)
209
- : PollingResolver(
210
- std::move(args), channel_args,
211
- std::max(Duration::Zero(),
212
- channel_args
213
- .GetDurationFromIntMillis(
214
- GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS)
215
- .value_or(Duration::Seconds(30))),
216
- BackOff::Options()
217
- .set_initial_backoff(Duration::Milliseconds(
218
- GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS * 1000))
219
- .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
220
- .set_jitter(GRPC_DNS_RECONNECT_JITTER)
221
- .set_max_backoff(Duration::Milliseconds(
222
- GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)),
223
- &grpc_trace_cares_resolver),
206
+ ResolverArgs args, Duration min_time_between_resolutions)
207
+ : PollingResolver(std::move(args), min_time_between_resolutions,
208
+ BackOff::Options()
209
+ .set_initial_backoff(Duration::Milliseconds(
210
+ GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS * 1000))
211
+ .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
212
+ .set_jitter(GRPC_DNS_RECONNECT_JITTER)
213
+ .set_max_backoff(Duration::Milliseconds(
214
+ GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)),
215
+ &grpc_trace_cares_resolver),
224
216
  request_service_config_(
225
- !channel_args.GetBool(GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION)
217
+ !channel_args()
218
+ .GetBool(GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION)
226
219
  .value_or(true)),
227
- enable_srv_queries_(channel_args.GetBool(GRPC_ARG_DNS_ENABLE_SRV_QUERIES)
220
+ enable_srv_queries_(channel_args()
221
+ .GetBool(GRPC_ARG_DNS_ENABLE_SRV_QUERIES)
228
222
  .value_or(false)),
229
223
  query_timeout_ms_(
230
- std::max(0, channel_args.GetInt(GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS)
224
+ std::max(0, channel_args()
225
+ .GetInt(GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS)
231
226
  .value_or(GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS))) {}
232
227
 
233
228
  AresClientChannelDNSResolver::~AresClientChannelDNSResolver() {
@@ -460,9 +455,13 @@ class AresClientChannelDNSResolverFactory : public ResolverFactory {
460
455
  }
461
456
 
462
457
  OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
463
- ChannelArgs channel_args = args.args;
464
- return MakeOrphanable<AresClientChannelDNSResolver>(std::move(args),
465
- channel_args);
458
+ Duration min_time_between_resolutions = std::max(
459
+ Duration::Zero(), args.args
460
+ .GetDurationFromIntMillis(
461
+ GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS)
462
+ .value_or(Duration::Seconds(30)));
463
+ return MakeOrphanable<AresClientChannelDNSResolver>(
464
+ std::move(args), min_time_between_resolutions);
466
465
  }
467
466
  };
468
467
 
@@ -810,19 +809,12 @@ class AresDNSResolver : public DNSResolver {
810
809
  intptr_t aba_token_ ABSL_GUARDED_BY(mu_) = 0;
811
810
  };
812
811
 
813
- bool ShouldUseAres(const char* resolver_env) {
814
- return resolver_env == nullptr || strlen(resolver_env) == 0 ||
815
- gpr_stricmp(resolver_env, "ares") == 0;
812
+ bool ShouldUseAres(absl::string_view resolver_env) {
813
+ return resolver_env.empty() || absl::EqualsIgnoreCase(resolver_env, "ares");
816
814
  }
817
815
 
818
816
  bool UseAresDnsResolver() {
819
- static const bool result = []() {
820
- UniquePtr<char> resolver = GPR_GLOBAL_CONFIG_GET(grpc_dns_resolver);
821
- bool result = ShouldUseAres(resolver.get());
822
- if (result) gpr_log(GPR_DEBUG, "Using ares dns resolver");
823
- return result;
824
- }();
825
- return result;
817
+ return ShouldUseAres(ConfigVars::Get().DnsResolver());
826
818
  }
827
819
 
828
820
  } // namespace
@@ -252,7 +252,7 @@ class GrpcPolledFdWindows {
252
252
 
253
253
  bool IsFdStillReadableLocked() { return read_buf_has_data_; }
254
254
 
255
- void ShutdownLocked(grpc_error_handle error) {
255
+ void ShutdownLocked(grpc_error_handle /* error */) {
256
256
  grpc_winsocket_shutdown(winsocket_);
257
257
  }
258
258
 
@@ -263,7 +263,7 @@ class GrpcPolledFdWindows {
263
263
  const char* GetName() const { return name_.c_str(); }
264
264
 
265
265
  ares_ssize_t RecvFrom(WSAErrorContext* wsa_error_ctx, void* data,
266
- ares_socket_t data_len, int flags,
266
+ ares_socket_t data_len, int /* flags */,
267
267
  struct sockaddr* from, ares_socklen_t* from_len) {
268
268
  GRPC_CARES_TRACE_LOG(
269
269
  "fd:|%s| RecvFrom called read_buf_has_data:%d Current read buf "
@@ -301,7 +301,7 @@ class GrpcPolledFdWindows {
301
301
  grpc_slice out = GRPC_SLICE_MALLOC(total);
302
302
  size_t cur = 0;
303
303
  for (int i = 0; i < iov_count; i++) {
304
- for (int k = 0; k < iov[i].iov_len; k++) {
304
+ for (size_t k = 0; k < iov[i].iov_len; k++) {
305
305
  GRPC_SLICE_START_PTR(out)[cur++] = ((char*)iov[i].iov_base)[k];
306
306
  }
307
307
  }
@@ -862,7 +862,7 @@ class GrpcPolledFdFactoryWindows : public GrpcPolledFdFactory {
862
862
  explicit GrpcPolledFdFactoryWindows(Mutex* mu) : sock_to_polled_fd_map_(mu) {}
863
863
 
864
864
  GrpcPolledFd* NewGrpcPolledFdLocked(
865
- ares_socket_t as, grpc_pollset_set* driver_pollset_set) override {
865
+ ares_socket_t as, grpc_pollset_set* /* driver_pollset_set */) override {
866
866
  GrpcPolledFdWindows* polled_fd = sock_to_polled_fd_map_.LookupPolledFd(as);
867
867
  // Set a flag so that the virtual socket "close" method knows it
868
868
  // doesn't need to call ShutdownLocked, since now the driver will.