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
@@ -21,14 +21,11 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- /** Channel arg indicating if a target corresponding to the address is grpclb
25
- * loadbalancer. The type of this arg is an integer and the value is treated as
26
- * a bool. */
27
- #define GRPC_ARG_ADDRESS_IS_XDS_LOAD_BALANCER \
28
- "grpc.address_is_xds_load_balancer"
29
24
  /** Channel arg indicating if a target corresponding to the address is a backend
30
25
  * received from a balancer. The type of this arg is an integer and the value is
31
26
  * treated as a bool. */
27
+ // TODO(roth): Depending on how we ultimately decide to handle fallback,
28
+ // this may no longer be needed.
32
29
  #define GRPC_ARG_ADDRESS_IS_BACKEND_FROM_XDS_LOAD_BALANCER \
33
30
  "grpc.address_is_backend_from_xds_load_balancer"
34
31
 
@@ -22,7 +22,6 @@
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
24
  #include "src/core/ext/filters/client_channel/lb_policy.h"
25
- #include "src/core/lib/gprpp/abstract.h"
26
25
  #include "src/core/lib/gprpp/orphanable.h"
27
26
 
28
27
  namespace grpc_core {
@@ -31,18 +30,16 @@ class LoadBalancingPolicyFactory {
31
30
  public:
32
31
  /// Returns a new LB policy instance.
33
32
  virtual OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
34
- LoadBalancingPolicy::Args) const GRPC_ABSTRACT;
33
+ LoadBalancingPolicy::Args) const = 0;
35
34
 
36
35
  /// Returns the LB policy name that this factory provides.
37
36
  /// Caller does NOT take ownership of result.
38
- virtual const char* name() const GRPC_ABSTRACT;
37
+ virtual const char* name() const = 0;
39
38
 
40
39
  virtual RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
41
- const grpc_json* json, grpc_error** error) const GRPC_ABSTRACT;
40
+ const grpc_json* json, grpc_error** error) const = 0;
42
41
 
43
42
  virtual ~LoadBalancingPolicyFactory() {}
44
-
45
- GRPC_ABSTRACT_BASE_CLASS;
46
43
  };
47
44
 
48
45
  } // namespace grpc_core
@@ -30,8 +30,7 @@ namespace grpc_core {
30
30
  // Resolver
31
31
  //
32
32
 
33
- Resolver::Resolver(grpc_combiner* combiner,
34
- UniquePtr<ResultHandler> result_handler)
33
+ Resolver::Resolver(Combiner* combiner, UniquePtr<ResultHandler> result_handler)
35
34
  : InternallyRefCounted(&grpc_trace_resolver_refcount),
36
35
  result_handler_(std::move(result_handler)),
37
36
  combiner_(GRPC_COMBINER_REF(combiner, "resolver")) {}
@@ -25,7 +25,6 @@
25
25
 
26
26
  #include "src/core/ext/filters/client_channel/server_address.h"
27
27
  #include "src/core/ext/filters/client_channel/service_config.h"
28
- #include "src/core/lib/gprpp/abstract.h"
29
28
  #include "src/core/lib/gprpp/orphanable.h"
30
29
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
31
30
  #include "src/core/lib/iomgr/combiner.h"
@@ -74,25 +73,24 @@ class Resolver : public InternallyRefCounted<Resolver> {
74
73
 
75
74
  /// Returns a result to the channel.
76
75
  /// Takes ownership of \a result.args.
77
- virtual void ReturnResult(Result result) GRPC_ABSTRACT; // NOLINT
76
+ virtual void ReturnResult(Result result) = 0; // NOLINT
78
77
 
79
78
  /// Returns a transient error to the channel.
80
79
  /// If the resolver does not set the GRPC_ERROR_INT_GRPC_STATUS
81
80
  /// attribute on the error, calls will be failed with status UNKNOWN.
82
- virtual void ReturnError(grpc_error* error) GRPC_ABSTRACT;
81
+ virtual void ReturnError(grpc_error* error) = 0;
83
82
 
84
83
  // TODO(yashkt): As part of the service config error handling
85
84
  // changes, add a method to parse the service config JSON string.
86
-
87
- GRPC_ABSTRACT_BASE_CLASS
88
85
  };
89
86
 
90
87
  // Not copyable nor movable.
91
88
  Resolver(const Resolver&) = delete;
92
89
  Resolver& operator=(const Resolver&) = delete;
90
+ virtual ~Resolver();
93
91
 
94
92
  /// Starts resolving.
95
- virtual void StartLocked() GRPC_ABSTRACT;
93
+ virtual void StartLocked() = 0;
96
94
 
97
95
  /// Asks the resolver to obtain an updated resolver result, if
98
96
  /// applicable.
@@ -123,30 +121,24 @@ class Resolver : public InternallyRefCounted<Resolver> {
123
121
  Unref();
124
122
  }
125
123
 
126
- GRPC_ABSTRACT_BASE_CLASS
127
-
128
124
  protected:
129
- GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
130
-
131
125
  /// Does NOT take ownership of the reference to \a combiner.
132
126
  // TODO(roth): Once we have a C++-like interface for combiners, this
133
127
  // API should change to take a RefCountedPtr<>, so that we always take
134
128
  // ownership of a new ref.
135
- explicit Resolver(grpc_combiner* combiner,
129
+ explicit Resolver(Combiner* combiner,
136
130
  UniquePtr<ResultHandler> result_handler);
137
131
 
138
- virtual ~Resolver();
139
-
140
132
  /// Shuts down the resolver.
141
- virtual void ShutdownLocked() GRPC_ABSTRACT;
133
+ virtual void ShutdownLocked() = 0;
142
134
 
143
- grpc_combiner* combiner() const { return combiner_; }
135
+ Combiner* combiner() const { return combiner_; }
144
136
 
145
137
  ResultHandler* result_handler() const { return result_handler_.get(); }
146
138
 
147
139
  private:
148
140
  UniquePtr<ResultHandler> result_handler_;
149
- grpc_combiner* combiner_;
141
+ Combiner* combiner_;
150
142
  };
151
143
 
152
144
  } // namespace grpc_core
@@ -76,6 +76,8 @@ class AresDnsResolver : public Resolver {
76
76
  void MaybeStartResolvingLocked();
77
77
  void StartResolvingLocked();
78
78
 
79
+ static void OnNextResolution(void* arg, grpc_error* error);
80
+ static void OnResolved(void* arg, grpc_error* error);
79
81
  static void OnNextResolutionLocked(void* arg, grpc_error* error);
80
82
  static void OnResolvedLocked(void* arg, grpc_error* error);
81
83
 
@@ -152,10 +154,7 @@ AresDnsResolver::AresDnsResolver(ResolverArgs args)
152
154
  if (args.pollset_set != nullptr) {
153
155
  grpc_pollset_set_add_pollset_set(interested_parties_, args.pollset_set);
154
156
  }
155
- GRPC_CLOSURE_INIT(&on_next_resolution_, OnNextResolutionLocked, this,
156
- grpc_combiner_scheduler(combiner()));
157
- GRPC_CLOSURE_INIT(&on_resolved_, OnResolvedLocked, this,
158
- grpc_combiner_scheduler(combiner()));
157
+
159
158
  const grpc_arg* query_timeout_ms_arg =
160
159
  grpc_channel_args_find(channel_args_, GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS);
161
160
  query_timeout_ms_ = grpc_channel_arg_get_integer(
@@ -200,6 +199,13 @@ void AresDnsResolver::ShutdownLocked() {
200
199
  }
201
200
  }
202
201
 
202
+ void AresDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
203
+ AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
204
+ r->combiner()->Run(GRPC_CLOSURE_INIT(&r->on_next_resolution_,
205
+ OnNextResolutionLocked, r, nullptr),
206
+ GRPC_ERROR_REF(error));
207
+ }
208
+
203
209
  void AresDnsResolver::OnNextResolutionLocked(void* arg, grpc_error* error) {
204
210
  AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
205
211
  GRPC_CARES_TRACE_LOG(
@@ -317,6 +323,13 @@ char* ChooseServiceConfig(char* service_config_choice_json,
317
323
  return service_config;
318
324
  }
319
325
 
326
+ void AresDnsResolver::OnResolved(void* arg, grpc_error* error) {
327
+ AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
328
+ r->combiner()->Run(
329
+ GRPC_CLOSURE_INIT(&r->on_resolved_, OnResolvedLocked, r, nullptr),
330
+ GRPC_ERROR_REF(error));
331
+ }
332
+
320
333
  void AresDnsResolver::OnResolvedLocked(void* arg, grpc_error* error) {
321
334
  AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
322
335
  GPR_ASSERT(r->resolving_);
@@ -373,6 +386,8 @@ void AresDnsResolver::OnResolvedLocked(void* arg, grpc_error* error) {
373
386
  } else {
374
387
  GRPC_CARES_TRACE_LOG("resolver:%p retrying immediately", r);
375
388
  }
389
+ GRPC_CLOSURE_INIT(&r->on_next_resolution_, OnNextResolution, r,
390
+ grpc_schedule_on_exec_ctx);
376
391
  grpc_timer_init(&r->next_resolution_timer_, next_try,
377
392
  &r->on_next_resolution_);
378
393
  }
@@ -400,6 +415,8 @@ void AresDnsResolver::MaybeStartResolvingLocked() {
400
415
  // new closure API is done, find a way to track this ref with the timer
401
416
  // callback as part of the type system.
402
417
  Ref(DEBUG_LOCATION, "next_resolution_timer_cooldown").release();
418
+ GRPC_CLOSURE_INIT(&on_next_resolution_, OnNextResolution, this,
419
+ grpc_schedule_on_exec_ctx);
403
420
  grpc_timer_init(&next_resolution_timer_,
404
421
  ExecCtx::Get()->Now() + ms_until_next_resolution,
405
422
  &on_next_resolution_);
@@ -417,6 +434,7 @@ void AresDnsResolver::StartResolvingLocked() {
417
434
  GPR_ASSERT(!resolving_);
418
435
  resolving_ = true;
419
436
  service_config_json_ = nullptr;
437
+ GRPC_CLOSURE_INIT(&on_resolved_, OnResolved, this, grpc_schedule_on_exec_ctx);
420
438
  pending_request_ = grpc_dns_lookup_ares_locked(
421
439
  dns_server_, name_to_resolve_, kDefaultPort, interested_parties_,
422
440
  &on_resolved_, &addresses_, enable_srv_queries_ /* check_grpclb */,
@@ -433,10 +451,10 @@ void AresDnsResolver::StartResolvingLocked() {
433
451
 
434
452
  class AresDnsResolverFactory : public ResolverFactory {
435
453
  public:
436
- bool IsValidUri(const grpc_uri* uri) const override { return true; }
454
+ bool IsValidUri(const grpc_uri* /*uri*/) const override { return true; }
437
455
 
438
456
  OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
439
- return OrphanablePtr<Resolver>(New<AresDnsResolver>(std::move(args)));
457
+ return MakeOrphanable<AresDnsResolver>(std::move(args));
440
458
  }
441
459
 
442
460
  const char* scheme() const override { return "dns"; }
@@ -494,8 +512,7 @@ void grpc_resolver_dns_ares_init() {
494
512
  }
495
513
  grpc_set_resolver_impl(&ares_resolver);
496
514
  grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
497
- grpc_core::UniquePtr<grpc_core::ResolverFactory>(
498
- grpc_core::New<grpc_core::AresDnsResolverFactory>()));
515
+ grpc_core::MakeUnique<grpc_core::AresDnsResolverFactory>());
499
516
  } else {
500
517
  g_use_ares_dns_resolver = false;
501
518
  }
@@ -67,7 +67,7 @@ struct grpc_ares_ev_driver {
67
67
  gpr_refcount refs;
68
68
 
69
69
  /** combiner to synchronize c-ares and I/O callbacks on */
70
- grpc_combiner* combiner;
70
+ grpc_core::Combiner* combiner;
71
71
  /** a list of grpc_fd that this event driver is currently using. */
72
72
  fd_node* fds;
73
73
  /** is this event driver currently working? */
@@ -132,11 +132,13 @@ static void fd_node_shutdown_locked(fd_node* fdn, const char* reason) {
132
132
  }
133
133
  }
134
134
 
135
+ static void on_timeout(void* arg, grpc_error* error);
135
136
  static void on_timeout_locked(void* arg, grpc_error* error);
136
137
 
138
+ static void on_ares_backup_poll_alarm(void* arg, grpc_error* error);
137
139
  static void on_ares_backup_poll_alarm_locked(void* arg, grpc_error* error);
138
140
 
139
- static void noop_inject_channel_config(ares_channel channel) {}
141
+ static void noop_inject_channel_config(ares_channel /*channel*/) {}
140
142
 
141
143
  void (*grpc_ares_test_only_inject_config)(ares_channel channel) =
142
144
  noop_inject_channel_config;
@@ -144,7 +146,7 @@ void (*grpc_ares_test_only_inject_config)(ares_channel channel) =
144
146
  grpc_error* grpc_ares_ev_driver_create_locked(grpc_ares_ev_driver** ev_driver,
145
147
  grpc_pollset_set* pollset_set,
146
148
  int query_timeout_ms,
147
- grpc_combiner* combiner,
149
+ grpc_core::Combiner* combiner,
148
150
  grpc_ares_request* request) {
149
151
  *ev_driver = grpc_core::New<grpc_ares_ev_driver>();
150
152
  ares_options opts;
@@ -173,11 +175,6 @@ grpc_error* grpc_ares_ev_driver_create_locked(grpc_ares_ev_driver** ev_driver,
173
175
  grpc_core::NewGrpcPolledFdFactory((*ev_driver)->combiner);
174
176
  (*ev_driver)
175
177
  ->polled_fd_factory->ConfigureAresChannelLocked((*ev_driver)->channel);
176
- GRPC_CLOSURE_INIT(&(*ev_driver)->on_timeout_locked, on_timeout_locked,
177
- *ev_driver, grpc_combiner_scheduler(combiner));
178
- GRPC_CLOSURE_INIT(&(*ev_driver)->on_ares_backup_poll_alarm_locked,
179
- on_ares_backup_poll_alarm_locked, *ev_driver,
180
- grpc_combiner_scheduler(combiner));
181
178
  (*ev_driver)->query_timeout_ms = query_timeout_ms;
182
179
  return GRPC_ERROR_NONE;
183
180
  }
@@ -235,6 +232,13 @@ static grpc_millis calculate_next_ares_backup_poll_alarm_ms(
235
232
  grpc_core::ExecCtx::Get()->Now();
236
233
  }
237
234
 
235
+ static void on_timeout(void* arg, grpc_error* error) {
236
+ grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
237
+ driver->combiner->Run(GRPC_CLOSURE_INIT(&driver->on_timeout_locked,
238
+ on_timeout_locked, driver, nullptr),
239
+ GRPC_ERROR_REF(error));
240
+ }
241
+
238
242
  static void on_timeout_locked(void* arg, grpc_error* error) {
239
243
  grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
240
244
  GRPC_CARES_TRACE_LOG(
@@ -247,6 +251,14 @@ static void on_timeout_locked(void* arg, grpc_error* error) {
247
251
  grpc_ares_ev_driver_unref(driver);
248
252
  }
249
253
 
254
+ static void on_ares_backup_poll_alarm(void* arg, grpc_error* error) {
255
+ grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
256
+ driver->combiner->Run(
257
+ GRPC_CLOSURE_INIT(&driver->on_ares_backup_poll_alarm_locked,
258
+ on_ares_backup_poll_alarm_locked, driver, nullptr),
259
+ GRPC_ERROR_REF(error));
260
+ }
261
+
250
262
  /* In case of non-responsive DNS servers, dropped packets, etc., c-ares has
251
263
  * intelligent timeout and retry logic, which we can take advantage of by
252
264
  * polling ares_process_fd on time intervals. Overall, the c-ares library is
@@ -279,6 +291,9 @@ static void on_ares_backup_poll_alarm_locked(void* arg, grpc_error* error) {
279
291
  grpc_millis next_ares_backup_poll_alarm =
280
292
  calculate_next_ares_backup_poll_alarm_ms(driver);
281
293
  grpc_ares_ev_driver_ref(driver);
294
+ GRPC_CLOSURE_INIT(&driver->on_ares_backup_poll_alarm_locked,
295
+ on_ares_backup_poll_alarm, driver,
296
+ grpc_schedule_on_exec_ctx);
282
297
  grpc_timer_init(&driver->ares_backup_poll_alarm,
283
298
  next_ares_backup_poll_alarm,
284
299
  &driver->on_ares_backup_poll_alarm_locked);
@@ -313,6 +328,13 @@ static void on_readable_locked(void* arg, grpc_error* error) {
313
328
  grpc_ares_ev_driver_unref(ev_driver);
314
329
  }
315
330
 
331
+ static void on_readable(void* arg, grpc_error* error) {
332
+ fd_node* fdn = static_cast<fd_node*>(arg);
333
+ fdn->ev_driver->combiner->Run(
334
+ GRPC_CLOSURE_INIT(&fdn->read_closure, on_readable_locked, fdn, nullptr),
335
+ GRPC_ERROR_REF(error));
336
+ }
337
+
316
338
  static void on_writable_locked(void* arg, grpc_error* error) {
317
339
  fd_node* fdn = static_cast<fd_node*>(arg);
318
340
  GPR_ASSERT(fdn->writable_registered);
@@ -336,6 +358,13 @@ static void on_writable_locked(void* arg, grpc_error* error) {
336
358
  grpc_ares_ev_driver_unref(ev_driver);
337
359
  }
338
360
 
361
+ static void on_writable(void* arg, grpc_error* error) {
362
+ fd_node* fdn = static_cast<fd_node*>(arg);
363
+ fdn->ev_driver->combiner->Run(
364
+ GRPC_CLOSURE_INIT(&fdn->write_closure, on_writable_locked, fdn, nullptr),
365
+ GRPC_ERROR_REF(error));
366
+ }
367
+
339
368
  ares_channel* grpc_ares_ev_driver_get_channel_locked(
340
369
  grpc_ares_ev_driver* ev_driver) {
341
370
  return &ev_driver->channel;
@@ -365,10 +394,6 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
365
394
  fdn->readable_registered = false;
366
395
  fdn->writable_registered = false;
367
396
  fdn->already_shutdown = false;
368
- GRPC_CLOSURE_INIT(&fdn->read_closure, on_readable_locked, fdn,
369
- grpc_combiner_scheduler(ev_driver->combiner));
370
- GRPC_CLOSURE_INIT(&fdn->write_closure, on_writable_locked, fdn,
371
- grpc_combiner_scheduler(ev_driver->combiner));
372
397
  }
373
398
  fdn->next = new_list;
374
399
  new_list = fdn;
@@ -380,6 +405,8 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
380
405
  GRPC_CARES_TRACE_LOG("request:%p notify read on: %s",
381
406
  ev_driver->request,
382
407
  fdn->grpc_polled_fd->GetName());
408
+ GRPC_CLOSURE_INIT(&fdn->read_closure, on_readable, fdn,
409
+ grpc_schedule_on_exec_ctx);
383
410
  fdn->grpc_polled_fd->RegisterForOnReadableLocked(&fdn->read_closure);
384
411
  fdn->readable_registered = true;
385
412
  }
@@ -391,6 +418,8 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
391
418
  ev_driver->request,
392
419
  fdn->grpc_polled_fd->GetName());
393
420
  grpc_ares_ev_driver_ref(ev_driver);
421
+ GRPC_CLOSURE_INIT(&fdn->write_closure, on_writable, fdn,
422
+ grpc_schedule_on_exec_ctx);
394
423
  fdn->grpc_polled_fd->RegisterForOnWriteableLocked(
395
424
  &fdn->write_closure);
396
425
  fdn->writable_registered = true;
@@ -435,12 +464,17 @@ void grpc_ares_ev_driver_start_locked(grpc_ares_ev_driver* ev_driver) {
435
464
  "%" PRId64 " ms",
436
465
  ev_driver->request, ev_driver, timeout);
437
466
  grpc_ares_ev_driver_ref(ev_driver);
467
+ GRPC_CLOSURE_INIT(&ev_driver->on_timeout_locked, on_timeout, ev_driver,
468
+ grpc_schedule_on_exec_ctx);
438
469
  grpc_timer_init(&ev_driver->query_timeout, timeout,
439
470
  &ev_driver->on_timeout_locked);
440
471
  // Initialize the backup poll alarm
441
472
  grpc_millis next_ares_backup_poll_alarm =
442
473
  calculate_next_ares_backup_poll_alarm_ms(ev_driver);
443
474
  grpc_ares_ev_driver_ref(ev_driver);
475
+ GRPC_CLOSURE_INIT(&ev_driver->on_ares_backup_poll_alarm_locked,
476
+ on_ares_backup_poll_alarm, ev_driver,
477
+ grpc_schedule_on_exec_ctx);
444
478
  grpc_timer_init(&ev_driver->ares_backup_poll_alarm,
445
479
  next_ares_backup_poll_alarm,
446
480
  &ev_driver->on_ares_backup_poll_alarm_locked);
@@ -23,7 +23,6 @@
23
23
 
24
24
  #include <ares.h>
25
25
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
26
- #include "src/core/lib/gprpp/abstract.h"
27
26
  #include "src/core/lib/iomgr/pollset_set.h"
28
27
 
29
28
  typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
@@ -44,7 +43,7 @@ ares_channel* grpc_ares_ev_driver_get_channel_locked(
44
43
  grpc_error* grpc_ares_ev_driver_create_locked(grpc_ares_ev_driver** ev_driver,
45
44
  grpc_pollset_set* pollset_set,
46
45
  int query_timeout_ms,
47
- grpc_combiner* combiner,
46
+ grpc_core::Combiner* combiner,
48
47
  grpc_ares_request* request);
49
48
 
50
49
  /* Called back when all DNS lookups have completed. */
@@ -67,22 +66,18 @@ class GrpcPolledFd {
67
66
  public:
68
67
  virtual ~GrpcPolledFd() {}
69
68
  /* Called when c-ares library is interested and there's no pending callback */
70
- virtual void RegisterForOnReadableLocked(grpc_closure* read_closure)
71
- GRPC_ABSTRACT;
69
+ virtual void RegisterForOnReadableLocked(grpc_closure* read_closure) = 0;
72
70
  /* Called when c-ares library is interested and there's no pending callback */
73
- virtual void RegisterForOnWriteableLocked(grpc_closure* write_closure)
74
- GRPC_ABSTRACT;
71
+ virtual void RegisterForOnWriteableLocked(grpc_closure* write_closure) = 0;
75
72
  /* Indicates if there is data left even after just being read from */
76
- virtual bool IsFdStillReadableLocked() GRPC_ABSTRACT;
73
+ virtual bool IsFdStillReadableLocked() = 0;
77
74
  /* Called once and only once. Must cause cancellation of any pending
78
75
  * read/write callbacks. */
79
- virtual void ShutdownLocked(grpc_error* error) GRPC_ABSTRACT;
76
+ virtual void ShutdownLocked(grpc_error* error) = 0;
80
77
  /* Get the underlying ares_socket_t that this was created from */
81
- virtual ares_socket_t GetWrappedAresSocketLocked() GRPC_ABSTRACT;
78
+ virtual ares_socket_t GetWrappedAresSocketLocked() = 0;
82
79
  /* A unique name, for logging */
83
- virtual const char* GetName() GRPC_ABSTRACT;
84
-
85
- GRPC_ABSTRACT_BASE_CLASS
80
+ virtual const char* GetName() = 0;
86
81
  };
87
82
 
88
83
  /* A GrpcPolledFdFactory is 1-to-1 with and owned by the
@@ -95,14 +90,12 @@ class GrpcPolledFdFactory {
95
90
  /* Creates a new wrapped fd for the current platform */
96
91
  virtual GrpcPolledFd* NewGrpcPolledFdLocked(
97
92
  ares_socket_t as, grpc_pollset_set* driver_pollset_set,
98
- grpc_combiner* combiner) GRPC_ABSTRACT;
93
+ Combiner* combiner) = 0;
99
94
  /* Optionally configures the ares channel after creation */
100
- virtual void ConfigureAresChannelLocked(ares_channel channel) GRPC_ABSTRACT;
101
-
102
- GRPC_ABSTRACT_BASE_CLASS
95
+ virtual void ConfigureAresChannelLocked(ares_channel channel) = 0;
103
96
  };
104
97
 
105
- UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(grpc_combiner* combiner);
98
+ UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(Combiner* combiner);
106
99
 
107
100
  } // namespace grpc_core
108
101
 
@@ -41,7 +41,7 @@ void ares_uv_poll_close_cb(uv_handle_t* handle) { Delete(handle); }
41
41
 
42
42
  class GrpcPolledFdLibuv : public GrpcPolledFd {
43
43
  public:
44
- GrpcPolledFdLibuv(ares_socket_t as, grpc_combiner* combiner)
44
+ GrpcPolledFdLibuv(ares_socket_t as, Combiner* combiner)
45
45
  : as_(as), combiner_(combiner) {
46
46
  gpr_asprintf(&name_, "c-ares socket: %" PRIdPTR, (intptr_t)as);
47
47
  handle_ = New<uv_poll_t>();
@@ -107,7 +107,7 @@ class GrpcPolledFdLibuv : public GrpcPolledFd {
107
107
  grpc_closure* read_closure_ = nullptr;
108
108
  grpc_closure* write_closure_ = nullptr;
109
109
  int poll_events_ = 0;
110
- grpc_combiner* combiner_;
110
+ Combiner* combiner_;
111
111
  };
112
112
 
113
113
  struct AresUvPollCbArg {
@@ -153,9 +153,8 @@ void ares_uv_poll_cb(uv_poll_t* handle, int status, int events) {
153
153
  GrpcPolledFdLibuv* polled_fd =
154
154
  reinterpret_cast<GrpcPolledFdLibuv*>(handle->data);
155
155
  AresUvPollCbArg* arg = New<AresUvPollCbArg>(handle, status, events);
156
- GRPC_CLOSURE_SCHED(
157
- GRPC_CLOSURE_CREATE(ares_uv_poll_cb_locked, arg,
158
- grpc_combiner_scheduler(polled_fd->combiner_)),
156
+ polled_fd->combiner_->Run(
157
+ GRPC_CLOSURE_CREATE(ares_uv_poll_cb_locked, arg, nullptr),
159
158
  GRPC_ERROR_NONE);
160
159
  }
161
160
 
@@ -163,15 +162,15 @@ class GrpcPolledFdFactoryLibuv : public GrpcPolledFdFactory {
163
162
  public:
164
163
  GrpcPolledFd* NewGrpcPolledFdLocked(ares_socket_t as,
165
164
  grpc_pollset_set* driver_pollset_set,
166
- grpc_combiner* combiner) override {
165
+ Combiner* combiner) override {
167
166
  return New<GrpcPolledFdLibuv>(as, combiner);
168
167
  }
169
168
 
170
169
  void ConfigureAresChannelLocked(ares_channel channel) override {}
171
170
  };
172
171
 
173
- UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(grpc_combiner* combiner) {
174
- return UniquePtr<GrpcPolledFdFactory>(New<GrpcPolledFdFactoryLibuv>());
172
+ UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(Combiner* combiner) {
173
+ return MakeUnique<GrpcPolledFdFactoryLibuv>();
175
174
  }
176
175
 
177
176
  } // namespace grpc_core