grpc 1.24.0 → 1.25.0.pre1

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 (504) 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/exec_ctx.h +4 -3
  113. data/src/core/lib/iomgr/executor.cc +4 -2
  114. data/src/core/lib/iomgr/executor.h +3 -0
  115. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
  116. data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
  117. data/src/core/lib/iomgr/executor/threadpool.h +7 -11
  118. data/src/core/lib/iomgr/resource_quota.cc +55 -51
  119. data/src/core/lib/iomgr/resource_quota.h +13 -9
  120. data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
  121. data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
  122. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
  123. data/src/core/lib/iomgr/tcp_custom.cc +9 -7
  124. data/src/core/lib/iomgr/tcp_posix.cc +20 -16
  125. data/src/core/lib/iomgr/tcp_server.h +1 -4
  126. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
  127. data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
  128. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
  129. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  130. data/src/core/lib/iomgr/udp_server.cc +3 -2
  131. data/src/core/lib/iomgr/udp_server.h +6 -12
  132. data/src/core/lib/json/json.h +1 -1
  133. data/src/core/lib/json/json_string.cc +2 -2
  134. data/src/core/lib/profiling/basic_timers.cc +2 -2
  135. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
  136. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
  137. data/src/core/lib/security/credentials/credentials.h +4 -20
  138. data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
  139. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
  140. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
  141. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
  142. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
  143. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
  144. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  145. data/src/core/lib/security/security_connector/security_connector.cc +1 -0
  146. data/src/core/lib/security/security_connector/security_connector.h +19 -17
  147. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
  148. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  149. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  150. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
  151. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
  152. data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
  153. data/src/core/lib/security/transport/security_handshaker.cc +29 -13
  154. data/src/core/lib/security/transport/security_handshaker.h +4 -2
  155. data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
  156. data/src/core/lib/slice/slice.cc +2 -10
  157. data/src/core/lib/slice/slice_hash_table.h +4 -6
  158. data/src/core/lib/slice/slice_intern.cc +42 -39
  159. data/src/core/lib/slice/slice_internal.h +3 -3
  160. data/src/core/lib/slice/slice_utils.h +21 -4
  161. data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
  162. data/src/core/lib/surface/call.cc +3 -3
  163. data/src/core/lib/surface/channel.cc +7 -0
  164. data/src/core/lib/surface/completion_queue.cc +12 -11
  165. data/src/core/lib/surface/completion_queue.h +4 -2
  166. data/src/core/lib/surface/init.cc +1 -0
  167. data/src/core/lib/surface/lame_client.cc +33 -18
  168. data/src/core/lib/surface/server.cc +77 -76
  169. data/src/core/lib/surface/version.cc +1 -1
  170. data/src/core/lib/transport/byte_stream.h +3 -7
  171. data/src/core/lib/transport/connectivity_state.cc +112 -98
  172. data/src/core/lib/transport/connectivity_state.h +100 -50
  173. data/src/core/lib/transport/static_metadata.cc +276 -288
  174. data/src/core/lib/transport/static_metadata.h +73 -76
  175. data/src/core/lib/transport/status_conversion.cc +1 -1
  176. data/src/core/lib/transport/status_metadata.cc +1 -1
  177. data/src/core/lib/transport/transport.cc +2 -2
  178. data/src/core/lib/transport/transport.h +12 -4
  179. data/src/core/lib/transport/transport_op_string.cc +14 -11
  180. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  181. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
  182. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
  183. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
  184. data/src/core/tsi/fake_transport_security.cc +7 -5
  185. data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
  186. data/src/core/tsi/local_transport_security.cc +8 -6
  187. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
  188. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
  189. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
  190. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
  191. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
  192. data/src/core/tsi/ssl_transport_security.cc +12 -12
  193. data/src/core/tsi/ssl_transport_security.h +2 -2
  194. data/src/core/tsi/transport_security_grpc.cc +7 -0
  195. data/src/core/tsi/transport_security_grpc.h +6 -0
  196. data/src/ruby/ext/grpc/extconf.rb +1 -0
  197. data/src/ruby/ext/grpc/rb_call.c +1 -1
  198. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  199. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  200. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  201. data/src/ruby/lib/grpc/version.rb +1 -1
  202. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  203. data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
  204. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
  205. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
  206. data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
  207. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
  208. data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
  209. data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
  210. data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
  211. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  212. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
  213. data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
  214. data/third_party/boringssl/crypto/base64/base64.c +2 -2
  215. data/third_party/boringssl/crypto/bio/bio.c +73 -9
  216. data/third_party/boringssl/crypto/bio/connect.c +4 -0
  217. data/third_party/boringssl/crypto/bio/fd.c +4 -0
  218. data/third_party/boringssl/crypto/bio/file.c +5 -2
  219. data/third_party/boringssl/crypto/bio/socket.c +4 -0
  220. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
  221. data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
  222. data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
  223. data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
  224. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
  225. data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
  226. data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
  227. data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
  228. data/third_party/boringssl/crypto/chacha/internal.h +45 -0
  229. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
  230. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
  231. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
  232. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
  233. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
  234. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
  235. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
  236. data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
  237. data/third_party/boringssl/crypto/conf/conf.c +7 -0
  238. data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
  239. data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
  240. data/third_party/boringssl/crypto/cpu-intel.c +45 -51
  241. data/third_party/boringssl/crypto/crypto.c +39 -22
  242. data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
  243. data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
  244. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
  245. data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
  246. data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
  247. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
  248. data/third_party/boringssl/crypto/engine/engine.c +2 -1
  249. data/third_party/boringssl/crypto/err/err.c +2 -0
  250. data/third_party/boringssl/crypto/err/internal.h +2 -2
  251. data/third_party/boringssl/crypto/evp/evp.c +89 -8
  252. data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
  253. data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
  254. data/third_party/boringssl/crypto/evp/internal.h +18 -1
  255. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
  256. data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
  257. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
  258. data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
  259. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
  260. data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
  261. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
  262. data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
  263. data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
  264. data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
  265. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
  266. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
  267. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
  268. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
  269. data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
  270. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
  271. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
  272. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
  273. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
  274. data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
  275. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
  276. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
  277. data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  278. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
  279. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
  280. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
  281. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
  282. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
  283. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
  284. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
  285. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
  286. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
  287. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
  288. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
  289. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
  290. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
  291. data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
  292. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
  293. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
  294. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
  295. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
  296. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
  297. data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
  298. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
  299. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
  300. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
  301. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
  302. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
  303. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
  304. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
  305. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
  306. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
  307. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
  308. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
  309. data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  310. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
  311. data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
  312. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
  313. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
  314. data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
  315. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
  316. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
  317. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
  318. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
  319. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
  320. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
  321. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
  322. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
  323. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
  324. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
  325. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
  326. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
  327. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
  328. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
  329. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
  330. data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
  331. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
  332. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
  333. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
  334. data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
  335. data/third_party/boringssl/crypto/hrss/internal.h +62 -0
  336. data/third_party/boringssl/crypto/internal.h +95 -20
  337. data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
  338. data/third_party/boringssl/crypto/mem.c +39 -2
  339. data/third_party/boringssl/crypto/obj/obj.c +4 -4
  340. data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
  341. data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
  342. data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
  343. data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
  344. data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
  345. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
  346. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
  347. data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
  348. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
  349. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
  350. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
  351. data/third_party/boringssl/crypto/pool/internal.h +1 -1
  352. data/third_party/boringssl/crypto/pool/pool.c +21 -0
  353. data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
  354. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
  355. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  356. data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
  357. data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
  358. data/third_party/boringssl/crypto/stack/stack.c +83 -32
  359. data/third_party/boringssl/crypto/thread_none.c +2 -2
  360. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  361. data/third_party/boringssl/crypto/thread_win.c +38 -19
  362. data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
  363. data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
  364. data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
  365. data/third_party/boringssl/crypto/x509/by_file.c +12 -10
  366. data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
  367. data/third_party/boringssl/crypto/x509/t_req.c +1 -3
  368. data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
  369. data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
  370. data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
  371. data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
  372. data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
  373. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  374. data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
  375. data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
  376. data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
  377. data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
  378. data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
  379. data/third_party/boringssl/crypto/x509/x509name.c +2 -3
  380. data/third_party/boringssl/crypto/x509/x_all.c +109 -210
  381. data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
  382. data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
  383. data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
  384. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
  385. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
  386. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
  387. data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
  388. data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
  389. data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
  390. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
  391. data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
  392. data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
  393. data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
  394. data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
  395. data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
  396. data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
  397. data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
  398. data/third_party/boringssl/include/openssl/aead.h +45 -19
  399. data/third_party/boringssl/include/openssl/aes.h +32 -7
  400. data/third_party/boringssl/include/openssl/asn1.h +7 -77
  401. data/third_party/boringssl/include/openssl/base.h +120 -6
  402. data/third_party/boringssl/include/openssl/base64.h +4 -1
  403. data/third_party/boringssl/include/openssl/bio.h +112 -81
  404. data/third_party/boringssl/include/openssl/blowfish.h +3 -3
  405. data/third_party/boringssl/include/openssl/bn.h +55 -29
  406. data/third_party/boringssl/include/openssl/buf.h +2 -2
  407. data/third_party/boringssl/include/openssl/bytestring.h +54 -32
  408. data/third_party/boringssl/include/openssl/cast.h +2 -2
  409. data/third_party/boringssl/include/openssl/cipher.h +46 -16
  410. data/third_party/boringssl/include/openssl/cmac.h +6 -2
  411. data/third_party/boringssl/include/openssl/conf.h +3 -6
  412. data/third_party/boringssl/include/openssl/cpu.h +25 -9
  413. data/third_party/boringssl/include/openssl/crypto.h +32 -10
  414. data/third_party/boringssl/include/openssl/curve25519.h +4 -4
  415. data/third_party/boringssl/include/openssl/dh.h +3 -2
  416. data/third_party/boringssl/include/openssl/digest.h +21 -7
  417. data/third_party/boringssl/include/openssl/dsa.h +8 -2
  418. data/third_party/boringssl/include/openssl/e_os2.h +18 -0
  419. data/third_party/boringssl/include/openssl/ec.h +25 -21
  420. data/third_party/boringssl/include/openssl/ec_key.h +36 -8
  421. data/third_party/boringssl/include/openssl/ecdh.h +17 -0
  422. data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
  423. data/third_party/boringssl/include/openssl/engine.h +4 -4
  424. data/third_party/boringssl/include/openssl/err.h +3 -0
  425. data/third_party/boringssl/include/openssl/evp.h +199 -42
  426. data/third_party/boringssl/include/openssl/hmac.h +4 -4
  427. data/third_party/boringssl/include/openssl/hrss.h +100 -0
  428. data/third_party/boringssl/include/openssl/lhash.h +131 -23
  429. data/third_party/boringssl/include/openssl/md4.h +6 -4
  430. data/third_party/boringssl/include/openssl/md5.h +6 -4
  431. data/third_party/boringssl/include/openssl/mem.h +6 -2
  432. data/third_party/boringssl/include/openssl/nid.h +3 -0
  433. data/third_party/boringssl/include/openssl/obj.h +3 -0
  434. data/third_party/boringssl/include/openssl/pem.h +102 -64
  435. data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
  436. data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
  437. data/third_party/boringssl/include/openssl/pool.h +13 -2
  438. data/third_party/boringssl/include/openssl/ripemd.h +5 -4
  439. data/third_party/boringssl/include/openssl/rsa.h +46 -15
  440. data/third_party/boringssl/include/openssl/sha.h +40 -28
  441. data/third_party/boringssl/include/openssl/siphash.h +37 -0
  442. data/third_party/boringssl/include/openssl/span.h +17 -9
  443. data/third_party/boringssl/include/openssl/ssl.h +766 -393
  444. data/third_party/boringssl/include/openssl/ssl3.h +4 -3
  445. data/third_party/boringssl/include/openssl/stack.h +134 -77
  446. data/third_party/boringssl/include/openssl/thread.h +1 -1
  447. data/third_party/boringssl/include/openssl/tls1.h +25 -9
  448. data/third_party/boringssl/include/openssl/type_check.h +14 -15
  449. data/third_party/boringssl/include/openssl/x509.h +28 -3
  450. data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
  451. data/third_party/boringssl/include/openssl/x509v3.h +17 -13
  452. data/third_party/boringssl/ssl/d1_both.cc +9 -18
  453. data/third_party/boringssl/ssl/d1_lib.cc +4 -3
  454. data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
  455. data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
  456. data/third_party/boringssl/ssl/dtls_method.cc +0 -1
  457. data/third_party/boringssl/ssl/dtls_record.cc +28 -28
  458. data/third_party/boringssl/ssl/handoff.cc +295 -91
  459. data/third_party/boringssl/ssl/handshake.cc +133 -72
  460. data/third_party/boringssl/ssl/handshake_client.cc +218 -189
  461. data/third_party/boringssl/ssl/handshake_server.cc +399 -272
  462. data/third_party/boringssl/ssl/internal.h +1413 -928
  463. data/third_party/boringssl/ssl/s3_both.cc +175 -36
  464. data/third_party/boringssl/ssl/s3_lib.cc +9 -13
  465. data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
  466. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
  467. data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
  468. data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
  469. data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
  470. data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
  471. data/third_party/boringssl/ssl/ssl_file.cc +2 -0
  472. data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
  473. data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
  474. data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
  475. data/third_party/boringssl/ssl/ssl_session.cc +230 -178
  476. data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
  477. data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
  478. data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
  479. data/third_party/boringssl/ssl/t1_enc.cc +5 -96
  480. data/third_party/boringssl/ssl/t1_lib.cc +931 -678
  481. data/third_party/boringssl/ssl/tls13_both.cc +251 -121
  482. data/third_party/boringssl/ssl/tls13_client.cc +129 -73
  483. data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
  484. data/third_party/boringssl/ssl/tls13_server.cc +259 -192
  485. data/third_party/boringssl/ssl/tls_method.cc +26 -21
  486. data/third_party/boringssl/ssl/tls_record.cc +42 -47
  487. data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
  488. data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
  489. data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
  490. data/third_party/boringssl/third_party/fiat/p256.c +238 -999
  491. data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
  492. data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
  493. data/third_party/upb/upb/port_def.inc +1 -1
  494. data/third_party/upb/upb/table.c +2 -1
  495. metadata +71 -43
  496. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
  497. data/src/core/lib/gpr/mpscq.cc +0 -117
  498. data/src/core/lib/gpr/mpscq.h +0 -88
  499. data/src/core/lib/gprpp/abstract.h +0 -47
  500. data/src/core/lib/gprpp/pair.h +0 -38
  501. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  502. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  503. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  504. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -65,7 +65,7 @@ extern grpc_ares_request* (*grpc_dns_lookup_ares_locked)(
65
65
  grpc_pollset_set* interested_parties, grpc_closure* on_done,
66
66
  grpc_core::UniquePtr<grpc_core::ServerAddressList>* addresses,
67
67
  bool check_grpclb, char** service_config_json, int query_timeout_ms,
68
- grpc_combiner* combiner);
68
+ grpc_core::Combiner* combiner);
69
69
 
70
70
  /* Cancel the pending grpc_ares_request \a request */
71
71
  extern void (*grpc_cancel_ares_request_locked)(grpc_ares_request* request);
@@ -31,7 +31,7 @@ static grpc_ares_request* grpc_dns_lookup_ares_locked_impl(
31
31
  grpc_pollset_set* interested_parties, grpc_closure* on_done,
32
32
  grpc_core::UniquePtr<grpc_core::ServerAddressList>* addrs,
33
33
  bool check_grpclb, char** service_config_json, int query_timeout_ms,
34
- grpc_combiner* combiner) {
34
+ grpc_core::Combiner* combiner) {
35
35
  return NULL;
36
36
  }
37
37
 
@@ -40,7 +40,7 @@ grpc_ares_request* (*grpc_dns_lookup_ares_locked)(
40
40
  grpc_pollset_set* interested_parties, grpc_closure* on_done,
41
41
  grpc_core::UniquePtr<grpc_core::ServerAddressList>* addrs,
42
42
  bool check_grpclb, char** service_config_json, int query_timeout_ms,
43
- grpc_combiner* combiner) = grpc_dns_lookup_ares_locked_impl;
43
+ grpc_core::Combiner* combiner) = grpc_dns_lookup_ares_locked_impl;
44
44
 
45
45
  static void grpc_cancel_ares_request_locked_impl(grpc_ares_request* r) {}
46
46
 
@@ -66,7 +66,9 @@ class NativeDnsResolver : public Resolver {
66
66
  void MaybeStartResolvingLocked();
67
67
  void StartResolvingLocked();
68
68
 
69
+ static void OnNextResolution(void* arg, grpc_error* error);
69
70
  static void OnNextResolutionLocked(void* arg, grpc_error* error);
71
+ static void OnResolved(void* arg, grpc_error* error);
70
72
  static void OnResolvedLocked(void* arg, grpc_error* error);
71
73
 
72
74
  /// name to resolve
@@ -115,11 +117,6 @@ NativeDnsResolver::NativeDnsResolver(ResolverArgs args)
115
117
  if (args.pollset_set != nullptr) {
116
118
  grpc_pollset_set_add_pollset_set(interested_parties_, args.pollset_set);
117
119
  }
118
- GRPC_CLOSURE_INIT(&on_next_resolution_,
119
- NativeDnsResolver::OnNextResolutionLocked, this,
120
- grpc_combiner_scheduler(args.combiner));
121
- GRPC_CLOSURE_INIT(&on_resolved_, NativeDnsResolver::OnResolvedLocked, this,
122
- grpc_combiner_scheduler(args.combiner));
123
120
  }
124
121
 
125
122
  NativeDnsResolver::~NativeDnsResolver() {
@@ -150,6 +147,14 @@ void NativeDnsResolver::ShutdownLocked() {
150
147
  }
151
148
  }
152
149
 
150
+ void NativeDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
151
+ NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
152
+ r->combiner()->Run(
153
+ GRPC_CLOSURE_INIT(&r->on_next_resolution_,
154
+ NativeDnsResolver::OnNextResolutionLocked, r, nullptr),
155
+ GRPC_ERROR_REF(error));
156
+ }
157
+
153
158
  void NativeDnsResolver::OnNextResolutionLocked(void* arg, grpc_error* error) {
154
159
  NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
155
160
  r->have_next_resolution_timer_ = false;
@@ -159,6 +164,14 @@ void NativeDnsResolver::OnNextResolutionLocked(void* arg, grpc_error* error) {
159
164
  r->Unref(DEBUG_LOCATION, "retry-timer");
160
165
  }
161
166
 
167
+ void NativeDnsResolver::OnResolved(void* arg, grpc_error* error) {
168
+ NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
169
+ r->combiner()->Run(
170
+ GRPC_CLOSURE_INIT(&r->on_resolved_, NativeDnsResolver::OnResolvedLocked,
171
+ r, nullptr),
172
+ GRPC_ERROR_REF(error));
173
+ }
174
+
162
175
  void NativeDnsResolver::OnResolvedLocked(void* arg, grpc_error* error) {
163
176
  NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
164
177
  GPR_ASSERT(r->resolving_);
@@ -202,6 +215,9 @@ void NativeDnsResolver::OnResolvedLocked(void* arg, grpc_error* error) {
202
215
  } else {
203
216
  gpr_log(GPR_DEBUG, "retrying immediately");
204
217
  }
218
+ GRPC_CLOSURE_INIT(&r->on_next_resolution_,
219
+ NativeDnsResolver::OnNextResolution, r,
220
+ grpc_schedule_on_exec_ctx);
205
221
  grpc_timer_init(&r->next_resolution_timer_, next_try,
206
222
  &r->on_next_resolution_);
207
223
  }
@@ -229,6 +245,9 @@ void NativeDnsResolver::MaybeStartResolvingLocked() {
229
245
  // new closure API is done, find a way to track this ref with the timer
230
246
  // callback as part of the type system.
231
247
  Ref(DEBUG_LOCATION, "next_resolution_timer_cooldown").release();
248
+ GRPC_CLOSURE_INIT(&on_next_resolution_,
249
+ NativeDnsResolver::OnNextResolution, this,
250
+ grpc_schedule_on_exec_ctx);
232
251
  grpc_timer_init(&next_resolution_timer_,
233
252
  ExecCtx::Get()->Now() + ms_until_next_resolution,
234
253
  &on_next_resolution_);
@@ -247,6 +266,8 @@ void NativeDnsResolver::StartResolvingLocked() {
247
266
  GPR_ASSERT(!resolving_);
248
267
  resolving_ = true;
249
268
  addresses_ = nullptr;
269
+ GRPC_CLOSURE_INIT(&on_resolved_, NativeDnsResolver::OnResolved, this,
270
+ grpc_schedule_on_exec_ctx);
250
271
  grpc_resolve_address(name_to_resolve_, kDefaultPort, interested_parties_,
251
272
  &on_resolved_, &addresses_);
252
273
  last_resolution_timestamp_ = grpc_core::ExecCtx::Get()->Now();
@@ -268,7 +289,7 @@ class NativeDnsResolverFactory : public ResolverFactory {
268
289
 
269
290
  OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
270
291
  if (!IsValidUri(args.uri)) return nullptr;
271
- return OrphanablePtr<Resolver>(New<NativeDnsResolver>(std::move(args)));
292
+ return MakeOrphanable<NativeDnsResolver>(std::move(args));
272
293
  }
273
294
 
274
295
  const char* scheme() const override { return "dns"; }
@@ -284,8 +305,7 @@ void grpc_resolver_dns_native_init() {
284
305
  if (gpr_stricmp(resolver.get(), "native") == 0) {
285
306
  gpr_log(GPR_DEBUG, "Using native dns resolver");
286
307
  grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
287
- grpc_core::UniquePtr<grpc_core::ResolverFactory>(
288
- grpc_core::New<grpc_core::NativeDnsResolverFactory>()));
308
+ grpc_core::MakeUnique<grpc_core::NativeDnsResolverFactory>());
289
309
  } else {
290
310
  grpc_core::ResolverRegistry::Builder::InitRegistry();
291
311
  grpc_core::ResolverFactory* existing_factory =
@@ -293,8 +313,7 @@ void grpc_resolver_dns_native_init() {
293
313
  if (existing_factory == nullptr) {
294
314
  gpr_log(GPR_DEBUG, "Using native dns resolver");
295
315
  grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
296
- grpc_core::UniquePtr<grpc_core::ResolverFactory>(
297
- grpc_core::New<grpc_core::NativeDnsResolverFactory>()));
316
+ grpc_core::MakeUnique<grpc_core::NativeDnsResolverFactory>());
298
317
  }
299
318
  }
300
319
  }
@@ -98,8 +98,6 @@ FakeResolver::FakeResolver(ResolverArgs args)
98
98
  : Resolver(args.combiner, std::move(args.result_handler)),
99
99
  response_generator_(
100
100
  FakeResolverResponseGenerator::GetFromArgs(args.args)) {
101
- GRPC_CLOSURE_INIT(&reresolution_closure_, ReturnReresolutionResult, this,
102
- grpc_combiner_scheduler(combiner()));
103
101
  // Channels sharing the same subchannels may have different resolver response
104
102
  // generators. If we don't remove this arg, subchannel pool will create new
105
103
  // subchannels for the same address instead of reusing existing ones because
@@ -129,7 +127,9 @@ void FakeResolver::RequestReresolutionLocked() {
129
127
  if (!reresolution_closure_pending_) {
130
128
  reresolution_closure_pending_ = true;
131
129
  Ref().release(); // ref held by closure
132
- GRPC_CLOSURE_SCHED(&reresolution_closure_, GRPC_ERROR_NONE);
130
+ GRPC_CLOSURE_INIT(&reresolution_closure_, ReturnReresolutionResult, this,
131
+ nullptr);
132
+ combiner()->Run(&reresolution_closure_, GRPC_ERROR_NONE);
133
133
  }
134
134
  }
135
135
  }
@@ -159,7 +159,7 @@ void FakeResolver::MaybeSendResultLocked() {
159
159
  }
160
160
  }
161
161
 
162
- void FakeResolver::ReturnReresolutionResult(void* arg, grpc_error* error) {
162
+ void FakeResolver::ReturnReresolutionResult(void* arg, grpc_error* /*error*/) {
163
163
  FakeResolver* self = static_cast<FakeResolver*>(arg);
164
164
  self->reresolution_closure_pending_ = false;
165
165
  self->MaybeSendResultLocked();
@@ -183,7 +183,7 @@ struct SetResponseClosureArg {
183
183
  };
184
184
 
185
185
  void FakeResolverResponseGenerator::SetResponseLocked(void* arg,
186
- grpc_error* error) {
186
+ grpc_error* /*error*/) {
187
187
  SetResponseClosureArg* closure_arg = static_cast<SetResponseClosureArg*>(arg);
188
188
  auto& resolver = closure_arg->resolver;
189
189
  if (!resolver->shutdown_) {
@@ -208,15 +208,14 @@ void FakeResolverResponseGenerator::SetResponse(Resolver::Result result) {
208
208
  SetResponseClosureArg* closure_arg = New<SetResponseClosureArg>();
209
209
  closure_arg->resolver = std::move(resolver);
210
210
  closure_arg->result = std::move(result);
211
- GRPC_CLOSURE_SCHED(
212
- GRPC_CLOSURE_INIT(
213
- &closure_arg->set_response_closure, SetResponseLocked, closure_arg,
214
- grpc_combiner_scheduler(closure_arg->resolver->combiner())),
211
+ closure_arg->resolver->combiner()->Run(
212
+ GRPC_CLOSURE_INIT(&closure_arg->set_response_closure, SetResponseLocked,
213
+ closure_arg, nullptr),
215
214
  GRPC_ERROR_NONE);
216
215
  }
217
216
 
218
217
  void FakeResolverResponseGenerator::SetReresolutionResponseLocked(
219
- void* arg, grpc_error* error) {
218
+ void* arg, grpc_error* /*error*/) {
220
219
  SetResponseClosureArg* closure_arg = static_cast<SetResponseClosureArg*>(arg);
221
220
  auto& resolver = closure_arg->resolver;
222
221
  if (!resolver->shutdown_) {
@@ -238,11 +237,9 @@ void FakeResolverResponseGenerator::SetReresolutionResponse(
238
237
  closure_arg->resolver = std::move(resolver);
239
238
  closure_arg->result = std::move(result);
240
239
  closure_arg->has_result = true;
241
- GRPC_CLOSURE_SCHED(
242
- GRPC_CLOSURE_INIT(
243
- &closure_arg->set_response_closure, SetReresolutionResponseLocked,
244
- closure_arg,
245
- grpc_combiner_scheduler(closure_arg->resolver->combiner())),
240
+ closure_arg->resolver->combiner()->Run(
241
+ GRPC_CLOSURE_INIT(&closure_arg->set_response_closure,
242
+ SetReresolutionResponseLocked, closure_arg, nullptr),
246
243
  GRPC_ERROR_NONE);
247
244
  }
248
245
 
@@ -255,16 +252,14 @@ void FakeResolverResponseGenerator::UnsetReresolutionResponse() {
255
252
  }
256
253
  SetResponseClosureArg* closure_arg = New<SetResponseClosureArg>();
257
254
  closure_arg->resolver = std::move(resolver);
258
- GRPC_CLOSURE_SCHED(
259
- GRPC_CLOSURE_INIT(
260
- &closure_arg->set_response_closure, SetReresolutionResponseLocked,
261
- closure_arg,
262
- grpc_combiner_scheduler(closure_arg->resolver->combiner())),
255
+ closure_arg->resolver->combiner()->Run(
256
+ GRPC_CLOSURE_INIT(&closure_arg->set_response_closure,
257
+ SetReresolutionResponseLocked, closure_arg, nullptr),
263
258
  GRPC_ERROR_NONE);
264
259
  }
265
260
 
266
261
  void FakeResolverResponseGenerator::SetFailureLocked(void* arg,
267
- grpc_error* error) {
262
+ grpc_error* /*error*/) {
268
263
  SetResponseClosureArg* closure_arg = static_cast<SetResponseClosureArg*>(arg);
269
264
  auto& resolver = closure_arg->resolver;
270
265
  if (!resolver->shutdown_) {
@@ -283,10 +278,9 @@ void FakeResolverResponseGenerator::SetFailure() {
283
278
  }
284
279
  SetResponseClosureArg* closure_arg = New<SetResponseClosureArg>();
285
280
  closure_arg->resolver = std::move(resolver);
286
- GRPC_CLOSURE_SCHED(
287
- GRPC_CLOSURE_INIT(
288
- &closure_arg->set_response_closure, SetFailureLocked, closure_arg,
289
- grpc_combiner_scheduler(closure_arg->resolver->combiner())),
281
+ closure_arg->resolver->combiner()->Run(
282
+ GRPC_CLOSURE_INIT(&closure_arg->set_response_closure, SetFailureLocked,
283
+ closure_arg, nullptr),
290
284
  GRPC_ERROR_NONE);
291
285
  }
292
286
 
@@ -300,10 +294,9 @@ void FakeResolverResponseGenerator::SetFailureOnReresolution() {
300
294
  SetResponseClosureArg* closure_arg = New<SetResponseClosureArg>();
301
295
  closure_arg->resolver = std::move(resolver);
302
296
  closure_arg->immediate = false;
303
- GRPC_CLOSURE_SCHED(
304
- GRPC_CLOSURE_INIT(
305
- &closure_arg->set_response_closure, SetFailureLocked, closure_arg,
306
- grpc_combiner_scheduler(closure_arg->resolver->combiner())),
297
+ closure_arg->resolver->combiner()->Run(
298
+ GRPC_CLOSURE_INIT(&closure_arg->set_response_closure, SetFailureLocked,
299
+ closure_arg, nullptr),
307
300
  GRPC_ERROR_NONE);
308
301
  }
309
302
 
@@ -316,10 +309,9 @@ void FakeResolverResponseGenerator::SetFakeResolver(
316
309
  SetResponseClosureArg* closure_arg = New<SetResponseClosureArg>();
317
310
  closure_arg->resolver = resolver_->Ref();
318
311
  closure_arg->result = std::move(result_);
319
- GRPC_CLOSURE_SCHED(
312
+ resolver_->combiner()->Run(
320
313
  GRPC_CLOSURE_INIT(&closure_arg->set_response_closure, SetResponseLocked,
321
- closure_arg,
322
- grpc_combiner_scheduler(resolver_->combiner())),
314
+ closure_arg, nullptr),
323
315
  GRPC_ERROR_NONE);
324
316
  has_result_ = false;
325
317
  }
@@ -379,10 +371,10 @@ namespace {
379
371
 
380
372
  class FakeResolverFactory : public ResolverFactory {
381
373
  public:
382
- bool IsValidUri(const grpc_uri* uri) const override { return true; }
374
+ bool IsValidUri(const grpc_uri* /*uri*/) const override { return true; }
383
375
 
384
376
  OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
385
- return OrphanablePtr<Resolver>(New<FakeResolver>(std::move(args)));
377
+ return MakeOrphanable<FakeResolver>(std::move(args));
386
378
  }
387
379
 
388
380
  const char* scheme() const override { return "fake"; }
@@ -394,8 +386,7 @@ class FakeResolverFactory : public ResolverFactory {
394
386
 
395
387
  void grpc_resolver_fake_init() {
396
388
  grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
397
- grpc_core::UniquePtr<grpc_core::ResolverFactory>(
398
- grpc_core::New<grpc_core::FakeResolverFactory>()));
389
+ grpc_core::MakeUnique<grpc_core::FakeResolverFactory>());
399
390
  }
400
391
 
401
392
  void grpc_resolver_fake_shutdown() {}
@@ -78,7 +78,7 @@ void SockaddrResolver::StartLocked() {
78
78
  // Factory
79
79
  //
80
80
 
81
- void DoNothing(void* ignored) {}
81
+ void DoNothing(void* /*ignored*/) {}
82
82
 
83
83
  bool ParseUri(const grpc_uri* uri,
84
84
  bool parse(const grpc_uri* uri, grpc_resolved_address* dst),
@@ -119,8 +119,8 @@ OrphanablePtr<Resolver> CreateSockaddrResolver(
119
119
  ServerAddressList addresses;
120
120
  if (!ParseUri(args.uri, parse, &addresses)) return nullptr;
121
121
  // Instantiate resolver.
122
- return OrphanablePtr<Resolver>(
123
- New<SockaddrResolver>(std::move(addresses), std::move(args)));
122
+ return MakeOrphanable<SockaddrResolver>(std::move(addresses),
123
+ std::move(args));
124
124
  }
125
125
 
126
126
  class IPv4ResolverFactory : public ResolverFactory {
@@ -160,7 +160,7 @@ class UnixResolverFactory : public ResolverFactory {
160
160
  return CreateSockaddrResolver(std::move(args), grpc_parse_unix);
161
161
  }
162
162
 
163
- UniquePtr<char> GetDefaultAuthority(grpc_uri* uri) const override {
163
+ UniquePtr<char> GetDefaultAuthority(grpc_uri* /*uri*/) const override {
164
164
  return UniquePtr<char>(gpr_strdup("localhost"));
165
165
  }
166
166
 
@@ -174,15 +174,12 @@ class UnixResolverFactory : public ResolverFactory {
174
174
 
175
175
  void grpc_resolver_sockaddr_init() {
176
176
  grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
177
- grpc_core::UniquePtr<grpc_core::ResolverFactory>(
178
- grpc_core::New<grpc_core::IPv4ResolverFactory>()));
177
+ grpc_core::MakeUnique<grpc_core::IPv4ResolverFactory>());
179
178
  grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
180
- grpc_core::UniquePtr<grpc_core::ResolverFactory>(
181
- grpc_core::New<grpc_core::IPv6ResolverFactory>()));
179
+ grpc_core::MakeUnique<grpc_core::IPv6ResolverFactory>());
182
180
  #ifdef GRPC_HAVE_UNIX_SOCKET
183
181
  grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
184
- grpc_core::UniquePtr<grpc_core::ResolverFactory>(
185
- grpc_core::New<grpc_core::UnixResolverFactory>()));
182
+ grpc_core::MakeUnique<grpc_core::UnixResolverFactory>());
186
183
  #endif
187
184
  }
188
185
 
@@ -19,39 +19,84 @@
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
21
  #include "src/core/ext/filters/client_channel/resolver_registry.h"
22
+ #include "src/core/ext/filters/client_channel/xds/xds_client.h"
23
+ #include "src/core/lib/gprpp/string_view.h"
22
24
 
23
25
  namespace grpc_core {
24
26
 
25
27
  namespace {
26
28
 
29
+ //
30
+ // XdsResolver
31
+ //
32
+
27
33
  class XdsResolver : public Resolver {
28
34
  public:
29
35
  explicit XdsResolver(ResolverArgs args)
30
36
  : Resolver(args.combiner, std::move(args.result_handler)),
31
- args_(grpc_channel_args_copy(args.args)) {}
37
+ args_(grpc_channel_args_copy(args.args)),
38
+ interested_parties_(args.pollset_set) {
39
+ char* path = args.uri->path;
40
+ if (path[0] == '/') ++path;
41
+ server_name_.reset(gpr_strdup(path));
42
+ }
43
+
32
44
  ~XdsResolver() override { grpc_channel_args_destroy(args_); }
33
45
 
34
46
  void StartLocked() override;
35
47
 
36
- void ShutdownLocked() override{};
48
+ void ShutdownLocked() override { xds_client_.reset(); }
37
49
 
38
50
  private:
51
+ class ServiceConfigWatcher : public XdsClient::ServiceConfigWatcherInterface {
52
+ public:
53
+ explicit ServiceConfigWatcher(RefCountedPtr<XdsResolver> resolver)
54
+ : resolver_(std::move(resolver)) {}
55
+ void OnServiceConfigChanged(
56
+ RefCountedPtr<ServiceConfig> service_config) override;
57
+ void OnError(grpc_error* error) override;
58
+
59
+ private:
60
+ RefCountedPtr<XdsResolver> resolver_;
61
+ };
62
+
63
+ UniquePtr<char> server_name_;
39
64
  const grpc_channel_args* args_;
65
+ grpc_pollset_set* interested_parties_;
66
+ OrphanablePtr<XdsClient> xds_client_;
40
67
  };
41
68
 
42
- void XdsResolver::StartLocked() {
43
- static const char* service_config =
44
- "{\n"
45
- " \"loadBalancingConfig\":[\n"
46
- " { \"xds_experimental\":{} }\n"
47
- " ]\n"
48
- "}";
69
+ void XdsResolver::ServiceConfigWatcher::OnServiceConfigChanged(
70
+ RefCountedPtr<ServiceConfig> service_config) {
71
+ grpc_arg xds_client_arg = resolver_->xds_client_->MakeChannelArg();
49
72
  Result result;
50
- result.args = args_;
51
- args_ = nullptr;
73
+ result.args =
74
+ grpc_channel_args_copy_and_add(resolver_->args_, &xds_client_arg, 1);
75
+ result.service_config = std::move(service_config);
76
+ resolver_->result_handler()->ReturnResult(std::move(result));
77
+ }
78
+
79
+ void XdsResolver::ServiceConfigWatcher::OnError(grpc_error* error) {
80
+ grpc_arg xds_client_arg = resolver_->xds_client_->MakeChannelArg();
81
+ Result result;
82
+ result.args =
83
+ grpc_channel_args_copy_and_add(resolver_->args_, &xds_client_arg, 1);
84
+ result.service_config_error = error;
85
+ resolver_->result_handler()->ReturnResult(std::move(result));
86
+ }
87
+
88
+ void XdsResolver::StartLocked() {
52
89
  grpc_error* error = GRPC_ERROR_NONE;
53
- result.service_config = ServiceConfig::Create(service_config, &error);
54
- result_handler()->ReturnResult(std::move(result));
90
+ xds_client_ = MakeOrphanable<XdsClient>(
91
+ combiner(), interested_parties_, StringView(server_name_.get()),
92
+ MakeUnique<ServiceConfigWatcher>(Ref()), *args_, &error);
93
+ if (error != GRPC_ERROR_NONE) {
94
+ gpr_log(GPR_ERROR,
95
+ "Failed to create xds client -- channel will remain in "
96
+ "TRANSIENT_FAILURE: %s",
97
+ grpc_error_string(error));
98
+ result_handler()->ReturnError(error);
99
+ }
55
100
  }
56
101
 
57
102
  //
@@ -70,7 +115,7 @@ class XdsResolverFactory : public ResolverFactory {
70
115
 
71
116
  OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
72
117
  if (!IsValidUri(args.uri)) return nullptr;
73
- return OrphanablePtr<Resolver>(New<XdsResolver>(std::move(args)));
118
+ return MakeOrphanable<XdsResolver>(std::move(args));
74
119
  }
75
120
 
76
121
  const char* scheme() const override { return "xds-experimental"; }
@@ -82,8 +127,7 @@ class XdsResolverFactory : public ResolverFactory {
82
127
 
83
128
  void grpc_resolver_xds_init() {
84
129
  grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
85
- grpc_core::UniquePtr<grpc_core::ResolverFactory>(
86
- grpc_core::New<grpc_core::XdsResolverFactory>()));
130
+ grpc_core::MakeUnique<grpc_core::XdsResolverFactory>());
87
131
  }
88
132
 
89
133
  void grpc_resolver_xds_shutdown() {}