grpc 1.24.0 → 1.25.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 (505) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +306 -243
  3. data/etc/roots.pem +0 -100
  4. data/include/grpc/grpc_security.h +44 -18
  5. data/include/grpc/impl/codegen/grpc_types.h +15 -0
  6. data/include/grpc/impl/codegen/port_platform.h +27 -11
  7. data/include/grpc/impl/codegen/sync_generic.h +1 -1
  8. data/src/boringssl/err_data.c +695 -650
  9. data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
  10. data/src/core/ext/filters/client_channel/client_channel.h +24 -0
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
  12. data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
  13. data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
  14. data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
  15. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
  17. data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
  20. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
  21. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
  22. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
  25. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
  26. data/src/core/ext/filters/client_channel/resolver.cc +1 -2
  27. data/src/core/ext/filters/client_channel/resolver.h +8 -16
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
  29. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
  32. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  33. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
  34. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
  35. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  36. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
  37. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
  38. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
  39. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
  40. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
  41. data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
  42. data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
  43. data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
  45. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
  46. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
  47. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
  48. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
  49. data/src/core/ext/filters/client_channel/service_config.h +8 -8
  50. data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
  51. data/src/core/ext/filters/client_channel/subchannel.h +7 -9
  52. data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
  53. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
  54. data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
  55. data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
  56. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
  57. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
  58. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
  59. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
  60. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
  61. data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
  62. data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
  63. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
  64. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
  65. data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
  66. data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
  67. data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
  68. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
  69. data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
  70. data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
  71. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
  73. data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
  74. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
  75. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
  76. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
  77. data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
  78. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
  79. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
  80. data/src/core/lib/channel/channel_args.cc +16 -0
  81. data/src/core/lib/channel/channel_args.h +22 -0
  82. data/src/core/lib/channel/channelz.cc +5 -6
  83. data/src/core/lib/channel/channelz.h +1 -1
  84. data/src/core/lib/channel/connected_channel.cc +20 -20
  85. data/src/core/lib/channel/handshaker.h +3 -4
  86. data/src/core/lib/channel/handshaker_factory.h +1 -3
  87. data/src/core/lib/debug/trace.h +3 -2
  88. data/src/core/lib/gprpp/arena.cc +3 -3
  89. data/src/core/lib/gprpp/arena.h +2 -3
  90. data/src/core/lib/gprpp/inlined_vector.h +9 -0
  91. data/src/core/lib/gprpp/map.h +3 -501
  92. data/src/core/lib/gprpp/memory.h +45 -41
  93. data/src/core/lib/gprpp/mpscq.cc +108 -0
  94. data/src/core/lib/gprpp/mpscq.h +98 -0
  95. data/src/core/lib/gprpp/orphanable.h +6 -11
  96. data/src/core/lib/gprpp/ref_counted.h +25 -19
  97. data/src/core/lib/gprpp/set.h +33 -0
  98. data/src/core/lib/gprpp/thd.h +2 -4
  99. data/src/core/lib/http/httpcli.cc +1 -1
  100. data/src/core/lib/http/httpcli_security_connector.cc +15 -11
  101. data/src/core/lib/http/parser.cc +1 -1
  102. data/src/core/lib/iomgr/buffer_list.cc +4 -5
  103. data/src/core/lib/iomgr/buffer_list.h +5 -6
  104. data/src/core/lib/iomgr/call_combiner.cc +4 -5
  105. data/src/core/lib/iomgr/call_combiner.h +2 -2
  106. data/src/core/lib/iomgr/cfstream_handle.h +3 -5
  107. data/src/core/lib/iomgr/closure.h +8 -3
  108. data/src/core/lib/iomgr/combiner.cc +45 -82
  109. data/src/core/lib/iomgr/combiner.h +32 -8
  110. data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
  111. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
  112. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -1
  113. data/src/core/lib/iomgr/exec_ctx.h +4 -3
  114. data/src/core/lib/iomgr/executor.cc +4 -2
  115. data/src/core/lib/iomgr/executor.h +3 -0
  116. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
  117. data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
  118. data/src/core/lib/iomgr/executor/threadpool.h +7 -11
  119. data/src/core/lib/iomgr/resource_quota.cc +55 -51
  120. data/src/core/lib/iomgr/resource_quota.h +13 -9
  121. data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
  122. data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
  123. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
  124. data/src/core/lib/iomgr/tcp_custom.cc +9 -7
  125. data/src/core/lib/iomgr/tcp_posix.cc +20 -16
  126. data/src/core/lib/iomgr/tcp_server.h +1 -4
  127. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
  128. data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
  129. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
  130. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  131. data/src/core/lib/iomgr/udp_server.cc +3 -2
  132. data/src/core/lib/iomgr/udp_server.h +6 -12
  133. data/src/core/lib/json/json.h +1 -1
  134. data/src/core/lib/json/json_string.cc +2 -2
  135. data/src/core/lib/profiling/basic_timers.cc +2 -2
  136. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
  137. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
  138. data/src/core/lib/security/credentials/credentials.h +4 -20
  139. data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
  140. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
  141. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
  142. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
  143. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
  144. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
  145. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  146. data/src/core/lib/security/security_connector/security_connector.cc +1 -0
  147. data/src/core/lib/security/security_connector/security_connector.h +19 -17
  148. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
  149. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  150. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  151. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
  152. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
  153. data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
  154. data/src/core/lib/security/transport/security_handshaker.cc +29 -13
  155. data/src/core/lib/security/transport/security_handshaker.h +4 -2
  156. data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
  157. data/src/core/lib/slice/slice.cc +2 -10
  158. data/src/core/lib/slice/slice_hash_table.h +4 -6
  159. data/src/core/lib/slice/slice_intern.cc +42 -39
  160. data/src/core/lib/slice/slice_internal.h +3 -3
  161. data/src/core/lib/slice/slice_utils.h +21 -4
  162. data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
  163. data/src/core/lib/surface/call.cc +3 -3
  164. data/src/core/lib/surface/channel.cc +7 -0
  165. data/src/core/lib/surface/completion_queue.cc +12 -11
  166. data/src/core/lib/surface/completion_queue.h +4 -2
  167. data/src/core/lib/surface/init.cc +1 -0
  168. data/src/core/lib/surface/lame_client.cc +33 -18
  169. data/src/core/lib/surface/server.cc +77 -76
  170. data/src/core/lib/surface/version.cc +1 -1
  171. data/src/core/lib/transport/byte_stream.h +3 -7
  172. data/src/core/lib/transport/connectivity_state.cc +112 -98
  173. data/src/core/lib/transport/connectivity_state.h +100 -50
  174. data/src/core/lib/transport/static_metadata.cc +276 -288
  175. data/src/core/lib/transport/static_metadata.h +73 -76
  176. data/src/core/lib/transport/status_conversion.cc +1 -1
  177. data/src/core/lib/transport/status_metadata.cc +1 -1
  178. data/src/core/lib/transport/transport.cc +2 -2
  179. data/src/core/lib/transport/transport.h +12 -4
  180. data/src/core/lib/transport/transport_op_string.cc +14 -11
  181. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  182. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
  183. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
  184. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
  185. data/src/core/tsi/fake_transport_security.cc +7 -5
  186. data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
  187. data/src/core/tsi/local_transport_security.cc +8 -6
  188. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
  189. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
  190. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
  191. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
  192. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
  193. data/src/core/tsi/ssl_transport_security.cc +12 -12
  194. data/src/core/tsi/ssl_transport_security.h +2 -2
  195. data/src/core/tsi/transport_security_grpc.cc +7 -0
  196. data/src/core/tsi/transport_security_grpc.h +6 -0
  197. data/src/ruby/ext/grpc/extconf.rb +1 -0
  198. data/src/ruby/ext/grpc/rb_call.c +1 -1
  199. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  200. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  201. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  202. data/src/ruby/lib/grpc/version.rb +1 -1
  203. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  204. data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
  205. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
  206. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
  207. data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
  208. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
  209. data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
  210. data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
  211. data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
  212. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  213. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
  214. data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
  215. data/third_party/boringssl/crypto/base64/base64.c +2 -2
  216. data/third_party/boringssl/crypto/bio/bio.c +73 -9
  217. data/third_party/boringssl/crypto/bio/connect.c +4 -0
  218. data/third_party/boringssl/crypto/bio/fd.c +4 -0
  219. data/third_party/boringssl/crypto/bio/file.c +5 -2
  220. data/third_party/boringssl/crypto/bio/socket.c +4 -0
  221. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
  222. data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
  223. data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
  224. data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
  225. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
  226. data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
  227. data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
  228. data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
  229. data/third_party/boringssl/crypto/chacha/internal.h +45 -0
  230. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
  231. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
  232. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
  233. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
  234. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
  235. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
  236. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
  237. data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
  238. data/third_party/boringssl/crypto/conf/conf.c +7 -0
  239. data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
  240. data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
  241. data/third_party/boringssl/crypto/cpu-intel.c +45 -51
  242. data/third_party/boringssl/crypto/crypto.c +39 -22
  243. data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
  244. data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
  245. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
  246. data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
  247. data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
  248. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
  249. data/third_party/boringssl/crypto/engine/engine.c +2 -1
  250. data/third_party/boringssl/crypto/err/err.c +2 -0
  251. data/third_party/boringssl/crypto/err/internal.h +2 -2
  252. data/third_party/boringssl/crypto/evp/evp.c +89 -8
  253. data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
  254. data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
  255. data/third_party/boringssl/crypto/evp/internal.h +18 -1
  256. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
  257. data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
  258. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
  259. data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
  260. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
  261. data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
  262. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
  263. data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
  264. data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
  265. data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
  266. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
  267. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
  268. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
  269. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
  270. data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
  271. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
  272. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
  273. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
  274. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
  275. data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
  276. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
  277. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
  278. data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  279. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
  280. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
  281. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
  282. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
  283. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
  284. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
  285. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
  286. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
  287. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
  288. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
  289. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
  290. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
  291. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
  292. data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
  293. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
  294. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
  295. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
  296. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
  297. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
  298. data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
  299. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
  300. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
  301. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
  302. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
  303. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
  304. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
  305. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
  306. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
  307. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
  308. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
  309. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
  310. data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  311. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
  312. data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
  313. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
  314. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
  315. data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
  316. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
  317. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
  318. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
  319. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
  320. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
  321. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
  322. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
  323. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
  324. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
  325. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
  326. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
  327. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
  328. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
  329. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
  330. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
  331. data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
  332. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
  333. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
  334. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
  335. data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
  336. data/third_party/boringssl/crypto/hrss/internal.h +62 -0
  337. data/third_party/boringssl/crypto/internal.h +95 -20
  338. data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
  339. data/third_party/boringssl/crypto/mem.c +39 -2
  340. data/third_party/boringssl/crypto/obj/obj.c +4 -4
  341. data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
  342. data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
  343. data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
  344. data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
  345. data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
  346. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
  347. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
  348. data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
  349. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
  350. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
  351. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
  352. data/third_party/boringssl/crypto/pool/internal.h +1 -1
  353. data/third_party/boringssl/crypto/pool/pool.c +21 -0
  354. data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
  355. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
  356. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  357. data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
  358. data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
  359. data/third_party/boringssl/crypto/stack/stack.c +83 -32
  360. data/third_party/boringssl/crypto/thread_none.c +2 -2
  361. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  362. data/third_party/boringssl/crypto/thread_win.c +38 -19
  363. data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
  364. data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
  365. data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
  366. data/third_party/boringssl/crypto/x509/by_file.c +12 -10
  367. data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
  368. data/third_party/boringssl/crypto/x509/t_req.c +1 -3
  369. data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
  370. data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
  371. data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
  372. data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
  373. data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
  374. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  375. data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
  376. data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
  377. data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
  378. data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
  379. data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
  380. data/third_party/boringssl/crypto/x509/x509name.c +2 -3
  381. data/third_party/boringssl/crypto/x509/x_all.c +109 -210
  382. data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
  383. data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
  384. data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
  385. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
  386. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
  387. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
  388. data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
  389. data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
  390. data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
  391. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
  392. data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
  393. data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
  394. data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
  395. data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
  396. data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
  397. data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
  398. data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
  399. data/third_party/boringssl/include/openssl/aead.h +45 -19
  400. data/third_party/boringssl/include/openssl/aes.h +32 -7
  401. data/third_party/boringssl/include/openssl/asn1.h +7 -77
  402. data/third_party/boringssl/include/openssl/base.h +120 -6
  403. data/third_party/boringssl/include/openssl/base64.h +4 -1
  404. data/third_party/boringssl/include/openssl/bio.h +112 -81
  405. data/third_party/boringssl/include/openssl/blowfish.h +3 -3
  406. data/third_party/boringssl/include/openssl/bn.h +55 -29
  407. data/third_party/boringssl/include/openssl/buf.h +2 -2
  408. data/third_party/boringssl/include/openssl/bytestring.h +54 -32
  409. data/third_party/boringssl/include/openssl/cast.h +2 -2
  410. data/third_party/boringssl/include/openssl/cipher.h +46 -16
  411. data/third_party/boringssl/include/openssl/cmac.h +6 -2
  412. data/third_party/boringssl/include/openssl/conf.h +3 -6
  413. data/third_party/boringssl/include/openssl/cpu.h +25 -9
  414. data/third_party/boringssl/include/openssl/crypto.h +32 -10
  415. data/third_party/boringssl/include/openssl/curve25519.h +4 -4
  416. data/third_party/boringssl/include/openssl/dh.h +3 -2
  417. data/third_party/boringssl/include/openssl/digest.h +21 -7
  418. data/third_party/boringssl/include/openssl/dsa.h +8 -2
  419. data/third_party/boringssl/include/openssl/e_os2.h +18 -0
  420. data/third_party/boringssl/include/openssl/ec.h +25 -21
  421. data/third_party/boringssl/include/openssl/ec_key.h +36 -8
  422. data/third_party/boringssl/include/openssl/ecdh.h +17 -0
  423. data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
  424. data/third_party/boringssl/include/openssl/engine.h +4 -4
  425. data/third_party/boringssl/include/openssl/err.h +3 -0
  426. data/third_party/boringssl/include/openssl/evp.h +199 -42
  427. data/third_party/boringssl/include/openssl/hmac.h +4 -4
  428. data/third_party/boringssl/include/openssl/hrss.h +100 -0
  429. data/third_party/boringssl/include/openssl/lhash.h +131 -23
  430. data/third_party/boringssl/include/openssl/md4.h +6 -4
  431. data/third_party/boringssl/include/openssl/md5.h +6 -4
  432. data/third_party/boringssl/include/openssl/mem.h +6 -2
  433. data/third_party/boringssl/include/openssl/nid.h +3 -0
  434. data/third_party/boringssl/include/openssl/obj.h +3 -0
  435. data/third_party/boringssl/include/openssl/pem.h +102 -64
  436. data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
  437. data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
  438. data/third_party/boringssl/include/openssl/pool.h +13 -2
  439. data/third_party/boringssl/include/openssl/ripemd.h +5 -4
  440. data/third_party/boringssl/include/openssl/rsa.h +46 -15
  441. data/third_party/boringssl/include/openssl/sha.h +40 -28
  442. data/third_party/boringssl/include/openssl/siphash.h +37 -0
  443. data/third_party/boringssl/include/openssl/span.h +17 -9
  444. data/third_party/boringssl/include/openssl/ssl.h +766 -393
  445. data/third_party/boringssl/include/openssl/ssl3.h +4 -3
  446. data/third_party/boringssl/include/openssl/stack.h +134 -77
  447. data/third_party/boringssl/include/openssl/thread.h +1 -1
  448. data/third_party/boringssl/include/openssl/tls1.h +25 -9
  449. data/third_party/boringssl/include/openssl/type_check.h +14 -15
  450. data/third_party/boringssl/include/openssl/x509.h +28 -3
  451. data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
  452. data/third_party/boringssl/include/openssl/x509v3.h +17 -13
  453. data/third_party/boringssl/ssl/d1_both.cc +9 -18
  454. data/third_party/boringssl/ssl/d1_lib.cc +4 -3
  455. data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
  456. data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
  457. data/third_party/boringssl/ssl/dtls_method.cc +0 -1
  458. data/third_party/boringssl/ssl/dtls_record.cc +28 -28
  459. data/third_party/boringssl/ssl/handoff.cc +295 -91
  460. data/third_party/boringssl/ssl/handshake.cc +133 -72
  461. data/third_party/boringssl/ssl/handshake_client.cc +218 -189
  462. data/third_party/boringssl/ssl/handshake_server.cc +399 -272
  463. data/third_party/boringssl/ssl/internal.h +1413 -928
  464. data/third_party/boringssl/ssl/s3_both.cc +175 -36
  465. data/third_party/boringssl/ssl/s3_lib.cc +9 -13
  466. data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
  467. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
  468. data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
  469. data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
  470. data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
  471. data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
  472. data/third_party/boringssl/ssl/ssl_file.cc +2 -0
  473. data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
  474. data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
  475. data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
  476. data/third_party/boringssl/ssl/ssl_session.cc +230 -178
  477. data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
  478. data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
  479. data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
  480. data/third_party/boringssl/ssl/t1_enc.cc +5 -96
  481. data/third_party/boringssl/ssl/t1_lib.cc +931 -678
  482. data/third_party/boringssl/ssl/tls13_both.cc +251 -121
  483. data/third_party/boringssl/ssl/tls13_client.cc +129 -73
  484. data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
  485. data/third_party/boringssl/ssl/tls13_server.cc +259 -192
  486. data/third_party/boringssl/ssl/tls_method.cc +26 -21
  487. data/third_party/boringssl/ssl/tls_record.cc +42 -47
  488. data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
  489. data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
  490. data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
  491. data/third_party/boringssl/third_party/fiat/p256.c +238 -999
  492. data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
  493. data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
  494. data/third_party/upb/upb/port_def.inc +1 -1
  495. data/third_party/upb/upb/table.c +2 -1
  496. metadata +72 -44
  497. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
  498. data/src/core/lib/gpr/mpscq.cc +0 -117
  499. data/src/core/lib/gpr/mpscq.h +0 -88
  500. data/src/core/lib/gprpp/abstract.h +0 -47
  501. data/src/core/lib/gprpp/pair.h +0 -38
  502. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  503. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  504. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  505. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -24,7 +24,6 @@
24
24
  #include <grpc/support/string_util.h>
25
25
 
26
26
  #include "src/core/ext/filters/client_channel/resolver.h"
27
- #include "src/core/lib/gprpp/abstract.h"
28
27
  #include "src/core/lib/gprpp/memory.h"
29
28
  #include "src/core/lib/gprpp/orphanable.h"
30
29
  #include "src/core/lib/iomgr/pollset_set.h"
@@ -40,7 +39,7 @@ struct ResolverArgs {
40
39
  /// Used to drive I/O in the name resolution process.
41
40
  grpc_pollset_set* pollset_set = nullptr;
42
41
  /// The combiner under which all resolver calls will be run.
43
- grpc_combiner* combiner = nullptr;
42
+ Combiner* combiner = nullptr;
44
43
  /// The result handler to be used by the resolver.
45
44
  UniquePtr<Resolver::ResultHandler> result_handler;
46
45
  };
@@ -49,11 +48,10 @@ class ResolverFactory {
49
48
  public:
50
49
  /// Returns a bool indicating whether the input uri is valid to create a
51
50
  /// resolver.
52
- virtual bool IsValidUri(const grpc_uri* uri) const GRPC_ABSTRACT;
51
+ virtual bool IsValidUri(const grpc_uri* uri) const = 0;
53
52
 
54
53
  /// Returns a new resolver instance.
55
- virtual OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const
56
- GRPC_ABSTRACT;
54
+ virtual OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const = 0;
57
55
 
58
56
  /// Returns a string representing the default authority to use for this
59
57
  /// scheme.
@@ -65,11 +63,9 @@ class ResolverFactory {
65
63
 
66
64
  /// Returns the URI scheme that this factory implements.
67
65
  /// Caller does NOT take ownership of result.
68
- virtual const char* scheme() const GRPC_ABSTRACT;
66
+ virtual const char* scheme() const = 0;
69
67
 
70
68
  virtual ~ResolverFactory() {}
71
-
72
- GRPC_ABSTRACT_BASE_CLASS
73
69
  };
74
70
 
75
71
  } // namespace grpc_core
@@ -145,7 +145,7 @@ bool ResolverRegistry::IsValidTarget(const char* target) {
145
145
 
146
146
  OrphanablePtr<Resolver> ResolverRegistry::CreateResolver(
147
147
  const char* target, const grpc_channel_args* args,
148
- grpc_pollset_set* pollset_set, grpc_combiner* combiner,
148
+ grpc_pollset_set* pollset_set, Combiner* combiner,
149
149
  UniquePtr<Resolver::ResultHandler> result_handler) {
150
150
  GPR_ASSERT(g_state != nullptr);
151
151
  grpc_uri* uri = nullptr;
@@ -68,7 +68,7 @@ class ResolverRegistry {
68
68
  /// \a result_handler is used to return results from the resolver.
69
69
  static OrphanablePtr<Resolver> CreateResolver(
70
70
  const char* target, const grpc_channel_args* args,
71
- grpc_pollset_set* pollset_set, grpc_combiner* combiner,
71
+ grpc_pollset_set* pollset_set, Combiner* combiner,
72
72
  UniquePtr<Resolver::ResultHandler> result_handler);
73
73
 
74
74
  /// Returns the default authority to pass from a client for \a target.
@@ -53,9 +53,8 @@ size_t ClientChannelServiceConfigParser::ParserIndex() {
53
53
  }
54
54
 
55
55
  void ClientChannelServiceConfigParser::Register() {
56
- g_client_channel_service_config_parser_index =
57
- ServiceConfig::RegisterParser(UniquePtr<ServiceConfig::Parser>(
58
- New<ClientChannelServiceConfigParser>()));
56
+ g_client_channel_service_config_parser_index = ServiceConfig::RegisterParser(
57
+ MakeUnique<ClientChannelServiceConfigParser>());
59
58
  }
60
59
 
61
60
  namespace {
@@ -439,10 +438,9 @@ ClientChannelServiceConfigParser::ParseGlobalParams(const grpc_json* json,
439
438
  *error = GRPC_ERROR_CREATE_FROM_VECTOR("Client channel global parser",
440
439
  &error_list);
441
440
  if (*error == GRPC_ERROR_NONE) {
442
- return UniquePtr<ServiceConfig::ParsedConfig>(
443
- New<ClientChannelGlobalParsedConfig>(
444
- std::move(parsed_lb_config), std::move(lb_policy_name),
445
- retry_throttling, health_check_service_name));
441
+ return MakeUnique<ClientChannelGlobalParsedConfig>(
442
+ std::move(parsed_lb_config), std::move(lb_policy_name),
443
+ retry_throttling, health_check_service_name);
446
444
  }
447
445
  return nullptr;
448
446
  }
@@ -493,9 +491,8 @@ ClientChannelServiceConfigParser::ParsePerMethodParams(const grpc_json* json,
493
491
  }
494
492
  *error = GRPC_ERROR_CREATE_FROM_VECTOR("Client channel parser", &error_list);
495
493
  if (*error == GRPC_ERROR_NONE) {
496
- return UniquePtr<ServiceConfig::ParsedConfig>(
497
- New<ClientChannelMethodParsedConfig>(timeout, wait_for_ready,
498
- std::move(retry_policy)));
494
+ return MakeUnique<ClientChannelMethodParsedConfig>(timeout, wait_for_ready,
495
+ std::move(retry_policy));
499
496
  }
500
497
  return nullptr;
501
498
  }
@@ -123,8 +123,7 @@ class ResolvingLoadBalancingPolicy::ResolvingControlHelper
123
123
  gpr_log(GPR_INFO,
124
124
  "resolving_lb=%p helper=%p: pending child policy %p reports "
125
125
  "state=%s",
126
- parent_.get(), this, child_,
127
- grpc_connectivity_state_name(state));
126
+ parent_.get(), this, child_, ConnectivityStateName(state));
128
127
  }
129
128
  if (state != GRPC_CHANNEL_READY) return;
130
129
  grpc_pollset_set_del_pollset_set(
@@ -153,7 +152,8 @@ class ResolvingLoadBalancingPolicy::ResolvingControlHelper
153
152
  }
154
153
  }
155
154
 
156
- void AddTraceEvent(TraceSeverity severity, StringView message) override {}
155
+ void AddTraceEvent(TraceSeverity /*severity*/,
156
+ StringView /*message*/) override {}
157
157
 
158
158
  void set_child(LoadBalancingPolicy* child) { child_ = child; }
159
159
 
@@ -188,16 +188,15 @@ ResolvingLoadBalancingPolicy::ResolvingLoadBalancingPolicy(
188
188
  GPR_ASSERT(process_resolver_result != nullptr);
189
189
  resolver_ = ResolverRegistry::CreateResolver(
190
190
  target_uri_.get(), args.args, interested_parties(), combiner(),
191
- UniquePtr<Resolver::ResultHandler>(New<ResolverResultHandler>(Ref())));
191
+ MakeUnique<ResolverResultHandler>(Ref()));
192
192
  // Since the validity of args has been checked when create the channel,
193
193
  // CreateResolver() must return a non-null result.
194
194
  GPR_ASSERT(resolver_ != nullptr);
195
195
  if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
196
196
  gpr_log(GPR_INFO, "resolving_lb=%p: starting name resolution", this);
197
197
  }
198
- channel_control_helper()->UpdateState(
199
- GRPC_CHANNEL_CONNECTING,
200
- UniquePtr<SubchannelPicker>(New<QueuePicker>(Ref())));
198
+ channel_control_helper()->UpdateState(GRPC_CHANNEL_CONNECTING,
199
+ MakeUnique<QueuePicker>(Ref()));
201
200
  resolver_->StartLocked();
202
201
  }
203
202
 
@@ -263,7 +262,7 @@ void ResolvingLoadBalancingPolicy::OnResolverError(grpc_error* error) {
263
262
  "Resolver transient failure", &error, 1);
264
263
  channel_control_helper()->UpdateState(
265
264
  GRPC_CHANNEL_TRANSIENT_FAILURE,
266
- UniquePtr<SubchannelPicker>(New<TransientFailurePicker>(state_error)));
265
+ MakeUnique<TransientFailurePicker>(state_error));
267
266
  }
268
267
  GRPC_ERROR_UNREF(error);
269
268
  }
@@ -74,7 +74,7 @@ class ResolvingLoadBalancingPolicy : public LoadBalancingPolicy {
74
74
  // No-op -- should never get updates from the channel.
75
75
  // TODO(roth): Need to support updating child LB policy's config for xds
76
76
  // use case.
77
- void UpdateLocked(UpdateArgs args) override {}
77
+ void UpdateLocked(UpdateArgs /*args*/) override {}
78
78
 
79
79
  void ExitIdleLocked() override;
80
80
 
@@ -118,27 +118,27 @@ void ServerRetryThrottleData::RecordSuccess() {
118
118
 
119
119
  namespace {
120
120
 
121
- void* copy_server_name(void* key, void* unused) {
121
+ void* copy_server_name(void* key, void* /*unused*/) {
122
122
  return gpr_strdup(static_cast<const char*>(key));
123
123
  }
124
124
 
125
- long compare_server_name(void* key1, void* key2, void* unused) {
125
+ long compare_server_name(void* key1, void* key2, void* /*unused*/) {
126
126
  return strcmp(static_cast<const char*>(key1), static_cast<const char*>(key2));
127
127
  }
128
128
 
129
- void destroy_server_retry_throttle_data(void* value, void* unused) {
129
+ void destroy_server_retry_throttle_data(void* value, void* /*unused*/) {
130
130
  ServerRetryThrottleData* throttle_data =
131
131
  static_cast<ServerRetryThrottleData*>(value);
132
132
  throttle_data->Unref();
133
133
  }
134
134
 
135
- void* copy_server_retry_throttle_data(void* value, void* unused) {
135
+ void* copy_server_retry_throttle_data(void* value, void* /*unused*/) {
136
136
  ServerRetryThrottleData* throttle_data =
137
137
  static_cast<ServerRetryThrottleData*>(value);
138
138
  return throttle_data->Ref().release();
139
139
  }
140
140
 
141
- void destroy_server_name(void* key, void* unused) { gpr_free(key); }
141
+ void destroy_server_name(void* key, void* /*unused*/) { gpr_free(key); }
142
142
 
143
143
  const grpc_avl_vtable avl_vtable = {
144
144
  destroy_server_name, copy_server_name, compare_server_name,
@@ -32,6 +32,7 @@ class ServerRetryThrottleData : public RefCounted<ServerRetryThrottleData> {
32
32
  public:
33
33
  ServerRetryThrottleData(intptr_t max_milli_tokens, intptr_t milli_token_ratio,
34
34
  ServerRetryThrottleData* old_throttle_data);
35
+ ~ServerRetryThrottleData();
35
36
 
36
37
  /// Records a failure. Returns true if it's okay to send a retry.
37
38
  bool RecordFailure();
@@ -43,10 +44,6 @@ class ServerRetryThrottleData : public RefCounted<ServerRetryThrottleData> {
43
44
  intptr_t milli_token_ratio() const { return milli_token_ratio_; }
44
45
 
45
46
  private:
46
- GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
47
-
48
- ~ServerRetryThrottleData();
49
-
50
47
  void GetReplacementThrottleDataIfNeeded(
51
48
  ServerRetryThrottleData** throttle_data);
52
49
 
@@ -62,8 +62,6 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
62
62
  class ParsedConfig {
63
63
  public:
64
64
  virtual ~ParsedConfig() = default;
65
-
66
- GRPC_ABSTRACT_BASE_CLASS;
67
65
  };
68
66
 
69
67
  /// This is the base class that all service config parsers should derive from.
@@ -71,19 +69,21 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
71
69
  public:
72
70
  virtual ~Parser() = default;
73
71
 
74
- virtual UniquePtr<ParsedConfig> ParseGlobalParams(const grpc_json* json,
75
- grpc_error** error) {
72
+ virtual UniquePtr<ParsedConfig> ParseGlobalParams(
73
+ const grpc_json* /* json */, grpc_error** error) {
74
+ // Avoid unused parameter warning on debug-only parameter
75
+ (void)error;
76
76
  GPR_DEBUG_ASSERT(error != nullptr);
77
77
  return nullptr;
78
78
  }
79
79
 
80
- virtual UniquePtr<ParsedConfig> ParsePerMethodParams(const grpc_json* json,
81
- grpc_error** error) {
80
+ virtual UniquePtr<ParsedConfig> ParsePerMethodParams(
81
+ const grpc_json* /* json */, grpc_error** error) {
82
+ // Avoid unused parameter warning on debug-only parameter
83
+ (void)error;
82
84
  GPR_DEBUG_ASSERT(error != nullptr);
83
85
  return nullptr;
84
86
  }
85
-
86
- GRPC_ABSTRACT_BASE_CLASS;
87
87
  };
88
88
 
89
89
  static constexpr int kNumPreallocatedParsers = 4;
@@ -95,15 +95,14 @@ ConnectedSubchannel::~ConnectedSubchannel() {
95
95
  GRPC_CHANNEL_STACK_UNREF(channel_stack_, "connected_subchannel_dtor");
96
96
  }
97
97
 
98
- void ConnectedSubchannel::NotifyOnStateChange(
99
- grpc_pollset_set* interested_parties, grpc_connectivity_state* state,
100
- grpc_closure* closure) {
98
+ void ConnectedSubchannel::StartWatch(
99
+ grpc_pollset_set* interested_parties,
100
+ OrphanablePtr<ConnectivityStateWatcherInterface> watcher) {
101
101
  grpc_transport_op* op = grpc_make_transport_op(nullptr);
102
- grpc_channel_element* elem;
103
- op->connectivity_state = state;
104
- op->on_connectivity_state_change = closure;
102
+ op->start_connectivity_watch = std::move(watcher);
103
+ op->start_connectivity_watch_state = GRPC_CHANNEL_READY;
105
104
  op->bind_pollset_set = interested_parties;
106
- elem = grpc_channel_stack_element(channel_stack_, 0);
105
+ grpc_channel_element* elem = grpc_channel_stack_element(channel_stack_, 0);
107
106
  elem->filter->start_transport_op(elem, op);
108
107
  }
109
108
 
@@ -310,19 +309,14 @@ void SubchannelCall::IncrementRefCount(const grpc_core::DebugLocation& location,
310
309
  // Subchannel::ConnectedSubchannelStateWatcher
311
310
  //
312
311
 
313
- class Subchannel::ConnectedSubchannelStateWatcher {
312
+ class Subchannel::ConnectedSubchannelStateWatcher
313
+ : public AsyncConnectivityStateWatcherInterface {
314
314
  public:
315
315
  // Must be instantiated while holding c->mu.
316
316
  explicit ConnectedSubchannelStateWatcher(Subchannel* c) : subchannel_(c) {
317
317
  // Steal subchannel ref for connecting.
318
318
  GRPC_SUBCHANNEL_WEAK_REF(subchannel_, "state_watcher");
319
319
  GRPC_SUBCHANNEL_WEAK_UNREF(subchannel_, "connecting");
320
- // Start watching for connectivity state changes.
321
- GRPC_CLOSURE_INIT(&on_connectivity_changed_, OnConnectivityChanged, this,
322
- grpc_schedule_on_exec_ctx);
323
- c->connected_subchannel_->NotifyOnStateChange(c->pollset_set_,
324
- &pending_connectivity_state_,
325
- &on_connectivity_changed_);
326
320
  }
327
321
 
328
322
  ~ConnectedSubchannelStateWatcher() {
@@ -330,54 +324,41 @@ class Subchannel::ConnectedSubchannelStateWatcher {
330
324
  }
331
325
 
332
326
  private:
333
- static void OnConnectivityChanged(void* arg, grpc_error* error) {
334
- auto* self = static_cast<ConnectedSubchannelStateWatcher*>(arg);
335
- Subchannel* c = self->subchannel_;
336
- {
337
- MutexLock lock(&c->mu_);
338
- switch (self->pending_connectivity_state_) {
339
- case GRPC_CHANNEL_TRANSIENT_FAILURE:
340
- case GRPC_CHANNEL_SHUTDOWN: {
341
- if (!c->disconnected_ && c->connected_subchannel_ != nullptr) {
342
- if (grpc_trace_subchannel.enabled()) {
343
- gpr_log(GPR_INFO,
344
- "Connected subchannel %p of subchannel %p has gone into "
345
- "%s. Attempting to reconnect.",
346
- c->connected_subchannel_.get(), c,
347
- grpc_connectivity_state_name(
348
- self->pending_connectivity_state_));
349
- }
350
- c->connected_subchannel_.reset();
351
- if (c->channelz_node() != nullptr) {
352
- c->channelz_node()->SetChildSocket(nullptr);
353
- }
354
- c->SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE);
355
- c->backoff_begun_ = false;
356
- c->backoff_.Reset();
327
+ void OnConnectivityStateChange(grpc_connectivity_state new_state) override {
328
+ Subchannel* c = subchannel_;
329
+ MutexLock lock(&c->mu_);
330
+ switch (new_state) {
331
+ case GRPC_CHANNEL_TRANSIENT_FAILURE:
332
+ case GRPC_CHANNEL_SHUTDOWN: {
333
+ if (!c->disconnected_ && c->connected_subchannel_ != nullptr) {
334
+ if (grpc_trace_subchannel.enabled()) {
335
+ gpr_log(GPR_INFO,
336
+ "Connected subchannel %p of subchannel %p has gone into "
337
+ "%s. Attempting to reconnect.",
338
+ c->connected_subchannel_.get(), c,
339
+ ConnectivityStateName(new_state));
357
340
  }
358
- break;
359
- }
360
- default: {
361
- // In principle, this should never happen. We should not get
362
- // a callback for READY, because that was the state we started
363
- // this watch from. And a connected subchannel should never go
364
- // from READY to CONNECTING or IDLE.
365
- c->SetConnectivityStateLocked(self->pending_connectivity_state_);
366
- c->connected_subchannel_->NotifyOnStateChange(
367
- nullptr, &self->pending_connectivity_state_,
368
- &self->on_connectivity_changed_);
369
- return; // So we don't delete ourself below.
341
+ c->connected_subchannel_.reset();
342
+ if (c->channelz_node() != nullptr) {
343
+ c->channelz_node()->SetChildSocket(nullptr);
344
+ }
345
+ c->SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE);
346
+ c->backoff_begun_ = false;
347
+ c->backoff_.Reset();
370
348
  }
349
+ break;
350
+ }
351
+ default: {
352
+ // In principle, this should never happen. We should not get
353
+ // a callback for READY, because that was the state we started
354
+ // this watch from. And a connected subchannel should never go
355
+ // from READY to CONNECTING or IDLE.
356
+ c->SetConnectivityStateLocked(new_state);
371
357
  }
372
358
  }
373
- // Don't delete until we've released the lock, because this might
374
- // cause the subchannel (which contains the lock) to be destroyed.
375
- Delete(self);
376
359
  }
377
360
 
378
361
  Subchannel* subchannel_;
379
- grpc_closure on_connectivity_changed_;
380
- grpc_connectivity_state pending_connectivity_state_ = GRPC_CHANNEL_READY;
381
362
  };
382
363
 
383
364
  //
@@ -386,7 +367,7 @@ class Subchannel::ConnectedSubchannelStateWatcher {
386
367
 
387
368
  void Subchannel::ConnectivityStateWatcherList::AddWatcherLocked(
388
369
  OrphanablePtr<ConnectivityStateWatcherInterface> watcher) {
389
- watchers_.insert(MakePair(watcher.get(), std::move(watcher)));
370
+ watchers_.insert(std::make_pair(watcher.get(), std::move(watcher)));
390
371
  }
391
372
 
392
373
  void Subchannel::ConnectivityStateWatcherList::RemoveWatcherLocked(
@@ -420,7 +401,7 @@ void Subchannel::ConnectivityStateWatcherList::NotifyLocked(
420
401
  // State needed for tracking the connectivity state with a particular
421
402
  // health check service name.
422
403
  class Subchannel::HealthWatcherMap::HealthWatcher
423
- : public InternallyRefCounted<HealthWatcher> {
404
+ : public AsyncConnectivityStateWatcherInterface {
424
405
  public:
425
406
  HealthWatcher(Subchannel* c, UniquePtr<char> health_check_service_name,
426
407
  grpc_connectivity_state subchannel_state)
@@ -429,8 +410,6 @@ class Subchannel::HealthWatcherMap::HealthWatcher
429
410
  state_(subchannel_state == GRPC_CHANNEL_READY ? GRPC_CHANNEL_CONNECTING
430
411
  : subchannel_state) {
431
412
  GRPC_SUBCHANNEL_WEAK_REF(subchannel_, "health_watcher");
432
- GRPC_CLOSURE_INIT(&on_health_changed_, OnHealthChanged, this,
433
- grpc_schedule_on_exec_ctx);
434
413
  // If the subchannel is already connected, start health checking.
435
414
  if (subchannel_state == GRPC_CHANNEL_READY) StartHealthCheckingLocked();
436
415
  }
@@ -447,7 +426,7 @@ class Subchannel::HealthWatcherMap::HealthWatcher
447
426
 
448
427
  void AddWatcherLocked(
449
428
  grpc_connectivity_state initial_state,
450
- OrphanablePtr<ConnectivityStateWatcherInterface> watcher) {
429
+ OrphanablePtr<Subchannel::ConnectivityStateWatcherInterface> watcher) {
451
430
  if (state_ != initial_state) {
452
431
  RefCountedPtr<ConnectedSubchannel> connected_subchannel;
453
432
  if (state_ == GRPC_CHANNEL_READY) {
@@ -459,7 +438,8 @@ class Subchannel::HealthWatcherMap::HealthWatcher
459
438
  watcher_list_.AddWatcherLocked(std::move(watcher));
460
439
  }
461
440
 
462
- void RemoveWatcherLocked(ConnectivityStateWatcherInterface* watcher) {
441
+ void RemoveWatcherLocked(
442
+ Subchannel::ConnectivityStateWatcherInterface* watcher) {
463
443
  watcher_list_.RemoveWatcherLocked(watcher);
464
444
  }
465
445
 
@@ -492,38 +472,24 @@ class Subchannel::HealthWatcherMap::HealthWatcher
492
472
  }
493
473
 
494
474
  private:
475
+ void OnConnectivityStateChange(grpc_connectivity_state new_state) override {
476
+ MutexLock lock(&subchannel_->mu_);
477
+ if (new_state != GRPC_CHANNEL_SHUTDOWN && health_check_client_ != nullptr) {
478
+ state_ = new_state;
479
+ watcher_list_.NotifyLocked(subchannel_, new_state);
480
+ }
481
+ }
482
+
495
483
  void StartHealthCheckingLocked() {
496
484
  GPR_ASSERT(health_check_client_ == nullptr);
497
485
  health_check_client_ = MakeOrphanable<HealthCheckClient>(
498
486
  health_check_service_name_.get(), subchannel_->connected_subchannel_,
499
- subchannel_->pollset_set_, subchannel_->channelz_node_);
500
- Ref().release(); // Ref for health callback tracked manually.
501
- health_check_client_->NotifyOnHealthChange(&state_, &on_health_changed_);
502
- }
503
-
504
- static void OnHealthChanged(void* arg, grpc_error* error) {
505
- auto* self = static_cast<HealthWatcher*>(arg);
506
- Subchannel* c = self->subchannel_;
507
- {
508
- MutexLock lock(&c->mu_);
509
- if (self->state_ != GRPC_CHANNEL_SHUTDOWN &&
510
- self->health_check_client_ != nullptr) {
511
- self->watcher_list_.NotifyLocked(c, self->state_);
512
- // Renew watch.
513
- self->health_check_client_->NotifyOnHealthChange(
514
- &self->state_, &self->on_health_changed_);
515
- return; // So we don't unref below.
516
- }
517
- }
518
- // Don't unref until we've released the lock, because this might
519
- // cause the subchannel (which contains the lock) to be destroyed.
520
- self->Unref();
487
+ subchannel_->pollset_set_, subchannel_->channelz_node_, Ref());
521
488
  }
522
489
 
523
490
  Subchannel* subchannel_;
524
491
  UniquePtr<char> health_check_service_name_;
525
492
  OrphanablePtr<HealthCheckClient> health_check_client_;
526
- grpc_closure on_health_changed_;
527
493
  grpc_connectivity_state state_;
528
494
  ConnectivityStateWatcherList watcher_list_;
529
495
  };
@@ -1088,8 +1054,9 @@ bool Subchannel::PublishTransportLocked() {
1088
1054
  if (channelz_node_ != nullptr) {
1089
1055
  channelz_node_->SetChildSocket(std::move(socket));
1090
1056
  }
1091
- // Instantiate state watcher. Will clean itself up.
1092
- New<ConnectedSubchannelStateWatcher>(this);
1057
+ // Start watching connected subchannel.
1058
+ connected_subchannel_->StartWatch(
1059
+ pollset_set_, MakeOrphanable<ConnectedSubchannelStateWatcher>(this));
1093
1060
  // Report initial state.
1094
1061
  SetConnectivityStateLocked(GRPC_CHANNEL_READY);
1095
1062
  return true;