grpc 1.35.0 → 1.36.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 (335) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +60 -57
  3. data/include/grpc/grpc_security.h +16 -11
  4. data/src/core/ext/filters/client_channel/client_channel.cc +32 -26
  5. data/src/core/ext/filters/client_channel/client_channel.h +0 -2
  6. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  7. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -2
  8. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +3 -5
  9. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
  10. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
  11. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +1 -1
  12. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +8 -6
  13. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +289 -170
  14. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
  15. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -3
  16. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +231 -109
  17. data/src/core/ext/filters/client_channel/resolver.cc +2 -5
  18. data/src/core/ext/filters/client_channel/resolver.h +1 -12
  19. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -45
  20. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +29 -41
  21. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +16 -14
  22. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -15
  23. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +362 -0
  24. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -4
  25. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +22 -74
  26. data/src/core/ext/filters/client_channel/server_address.cc +6 -0
  27. data/src/core/ext/filters/client_channel/server_address.h +31 -0
  28. data/src/core/ext/filters/client_channel/subchannel.cc +2 -2
  29. data/src/core/ext/filters/max_age/max_age_filter.cc +35 -32
  30. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
  31. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +47 -22
  32. data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
  33. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +11 -1
  34. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +62 -18
  35. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
  36. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
  37. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
  38. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
  39. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
  40. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
  41. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
  42. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
  43. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
  44. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
  45. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
  46. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
  47. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
  48. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
  49. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
  50. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
  51. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
  52. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
  53. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
  54. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
  55. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
  56. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
  57. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +42 -16
  58. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +106 -0
  59. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
  60. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
  61. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
  62. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +13 -16
  63. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +51 -42
  64. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
  65. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
  66. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
  67. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
  68. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
  69. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
  70. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
  71. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
  72. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
  73. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
  74. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
  75. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
  76. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
  77. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
  78. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
  79. data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
  80. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
  81. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
  82. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
  83. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
  84. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
  85. data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
  86. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
  87. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
  88. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
  89. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
  90. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
  92. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
  93. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
  94. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
  100. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
  101. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
  102. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
  103. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
  104. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
  105. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
  106. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +747 -724
  107. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
  109. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
  110. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  111. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +369 -376
  112. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
  113. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
  114. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
  115. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
  116. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
  117. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
  118. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
  119. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
  120. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
  121. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
  122. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
  123. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
  124. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
  125. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  126. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
  127. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  128. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
  129. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  130. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
  131. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  132. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
  133. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  134. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
  135. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  136. data/src/core/ext/xds/xds_api.cc +738 -567
  137. data/src/core/ext/xds/xds_api.h +46 -84
  138. data/src/core/ext/xds/xds_bootstrap.cc +59 -40
  139. data/src/core/ext/xds/xds_bootstrap.h +12 -4
  140. data/src/core/ext/xds/xds_certificate_provider.cc +180 -74
  141. data/src/core/ext/xds/xds_certificate_provider.h +83 -44
  142. data/src/core/ext/xds/xds_client.cc +13 -11
  143. data/src/core/ext/xds/xds_client.h +3 -0
  144. data/src/core/ext/xds/xds_client_stats.cc +2 -1
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +147 -11
  146. data/src/core/lib/channel/handshaker.cc +2 -5
  147. data/src/core/lib/channel/handshaker.h +1 -1
  148. data/src/core/lib/gpr/log.cc +6 -1
  149. data/src/core/lib/gprpp/mpscq.cc +2 -2
  150. data/src/core/lib/gprpp/ref_counted.h +1 -1
  151. data/src/core/lib/gprpp/sync.h +129 -40
  152. data/src/core/lib/gprpp/time_util.cc +77 -0
  153. data/src/core/lib/gprpp/time_util.h +42 -0
  154. data/src/core/lib/http/httpcli_security_connector.cc +2 -2
  155. data/src/core/lib/iomgr/ev_apple.cc +10 -7
  156. data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -4
  157. data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
  158. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -1
  159. data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
  160. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
  161. data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
  162. data/src/core/lib/iomgr/tcp_posix.cc +4 -4
  163. data/src/core/lib/security/authorization/matchers.cc +339 -0
  164. data/src/core/lib/security/authorization/matchers.h +158 -0
  165. data/src/core/lib/security/authorization/mock_cel/activation.h +1 -1
  166. data/src/core/lib/security/authorization/mock_cel/cel_value.h +9 -7
  167. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
  168. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  169. data/src/core/lib/security/credentials/credentials.h +2 -1
  170. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -1
  171. data/src/core/lib/security/credentials/external/external_account_credentials.cc +2 -2
  172. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -1
  173. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -1
  174. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -1
  175. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -6
  176. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  177. data/src/core/lib/security/credentials/jwt/json_token.cc +0 -3
  178. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -3
  179. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
  180. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  181. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
  182. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  183. data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
  184. data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
  185. data/src/core/lib/security/credentials/xds/xds_credentials.cc +128 -59
  186. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  187. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
  188. data/src/core/lib/security/security_connector/ssl_utils.cc +3 -0
  189. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +26 -14
  190. data/src/core/lib/security/transport/security_handshaker.cc +1 -3
  191. data/src/core/lib/slice/slice_intern.cc +1 -1
  192. data/src/core/lib/surface/init.cc +13 -15
  193. data/src/core/lib/surface/server.cc +3 -3
  194. data/src/core/lib/surface/server.h +3 -0
  195. data/src/core/lib/surface/version.cc +2 -2
  196. data/src/core/lib/transport/metadata.cc +6 -2
  197. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  198. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +17 -20
  199. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +16 -21
  200. data/src/core/tsi/fake_transport_security.cc +1 -1
  201. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
  202. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
  203. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
  204. data/src/core/tsi/ssl_transport_security.cc +0 -3
  205. data/src/core/tsi/ssl_transport_security.h +0 -3
  206. data/src/ruby/lib/grpc/version.rb +1 -1
  207. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
  208. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
  209. data/third_party/boringssl-with-bazel/err_data.c +725 -723
  210. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  211. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
  212. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
  213. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -10
  214. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  215. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +4 -2
  216. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
  217. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -14
  218. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
  219. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
  220. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
  221. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
  222. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
  223. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
  224. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
  225. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  226. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
  227. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  228. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
  229. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
  230. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  231. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
  232. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  233. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  234. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
  235. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
  236. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  237. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +3 -1
  238. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  239. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
  240. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +9 -1
  241. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  242. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
  243. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +12 -0
  244. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -1
  245. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
  246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +128 -38
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -7
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +147 -0
  250. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +18 -29
  251. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +13 -4
  252. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
  253. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  254. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  255. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  256. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
  257. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  258. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  259. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +1 -1
  260. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
  261. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
  262. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +8 -8
  263. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
  264. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
  265. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +1 -2
  266. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  267. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -6
  268. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  269. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
  270. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
  271. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
  272. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
  273. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
  274. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
  275. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
  276. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  277. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
  278. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  279. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +6 -6
  280. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
  281. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
  282. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +652 -545
  283. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
  284. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -5
  285. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  286. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
  287. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +15 -0
  288. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
  289. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
  290. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
  291. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +12 -2
  292. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -0
  293. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
  294. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +42 -24
  295. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -8
  296. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +287 -98
  297. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +139 -36
  298. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +4 -3
  299. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
  300. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -5
  301. data/third_party/boringssl-with-bazel/src/ssl/internal.h +37 -16
  302. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  303. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
  304. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +20 -14
  305. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
  306. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
  307. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
  308. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +329 -31
  309. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
  310. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
  311. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +66 -24
  312. metadata +77 -65
  313. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
  314. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
  315. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
  316. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
  317. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
  318. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
  319. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
  320. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
  321. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
  322. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
  323. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
  324. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
  325. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
  326. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
  327. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
  328. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
  329. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
  330. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
  331. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
  332. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
  333. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
  334. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
  335. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
@@ -29,13 +29,10 @@ namespace grpc_core {
29
29
  // Resolver
30
30
  //
31
31
 
32
- Resolver::Resolver(std::shared_ptr<WorkSerializer> work_serializer,
33
- std::unique_ptr<ResultHandler> result_handler)
32
+ Resolver::Resolver()
34
33
  : InternallyRefCounted(GRPC_TRACE_FLAG_ENABLED(grpc_trace_resolver_refcount)
35
34
  ? "Resolver"
36
- : nullptr),
37
- work_serializer_(std::move(work_serializer)),
38
- result_handler_(std::move(result_handler)) {}
35
+ : nullptr) {}
39
36
 
40
37
  //
41
38
  // Resolver::Result
@@ -125,21 +125,10 @@ class Resolver : public InternallyRefCounted<Resolver> {
125
125
  }
126
126
 
127
127
  protected:
128
- Resolver(std::shared_ptr<WorkSerializer> work_serializer,
129
- std::unique_ptr<ResultHandler> result_handler);
128
+ Resolver();
130
129
 
131
130
  /// Shuts down the resolver.
132
131
  virtual void ShutdownLocked() = 0;
133
-
134
- std::shared_ptr<WorkSerializer> work_serializer() const {
135
- return work_serializer_;
136
- }
137
-
138
- ResultHandler* result_handler() const { return result_handler_.get(); }
139
-
140
- private:
141
- std::shared_ptr<WorkSerializer> work_serializer_;
142
- std::unique_ptr<ResultHandler> result_handler_;
143
132
  };
144
133
 
145
134
  } // namespace grpc_core
@@ -91,10 +91,20 @@ class AresDnsResolver : public Resolver {
91
91
  std::string name_to_resolve_;
92
92
  /// channel args
93
93
  grpc_channel_args* channel_args_;
94
- /// whether to request the service config
95
- bool request_service_config_;
94
+ std::shared_ptr<WorkSerializer> work_serializer_;
95
+ std::unique_ptr<ResultHandler> result_handler_;
96
96
  /// pollset_set to drive the name resolution process
97
97
  grpc_pollset_set* interested_parties_;
98
+
99
+ /// whether to request the service config
100
+ bool request_service_config_;
101
+ // whether or not to enable SRV DNS queries
102
+ bool enable_srv_queries_;
103
+ // timeout in milliseconds for active DNS queries
104
+ int query_timeout_ms_;
105
+ /// min interval between DNS requests
106
+ grpc_millis min_time_between_resolutions_;
107
+
98
108
  /// closures used by the work_serializer
99
109
  grpc_closure on_next_resolution_;
100
110
  grpc_closure on_resolved_;
@@ -105,8 +115,6 @@ class AresDnsResolver : public Resolver {
105
115
  /// next resolution timer
106
116
  bool have_next_resolution_timer_ = false;
107
117
  grpc_timer next_resolution_timer_;
108
- /// min interval between DNS requests
109
- grpc_millis min_time_between_resolutions_;
110
118
  /// timestamp of last DNS request
111
119
  grpc_millis last_resolution_timestamp_ = -1;
112
120
  /// retry backoff state
@@ -119,14 +127,25 @@ class AresDnsResolver : public Resolver {
119
127
  char* service_config_json_ = nullptr;
120
128
  // has shutdown been initiated
121
129
  bool shutdown_initiated_ = false;
122
- // timeout in milliseconds for active DNS queries
123
- int query_timeout_ms_;
124
- // whether or not to enable SRV DNS queries
125
- bool enable_srv_queries_;
126
130
  };
127
131
 
128
132
  AresDnsResolver::AresDnsResolver(ResolverArgs args)
129
- : Resolver(std::move(args.work_serializer), std::move(args.result_handler)),
133
+ : dns_server_(args.uri.authority()),
134
+ name_to_resolve_(absl::StripPrefix(args.uri.path(), "/")),
135
+ channel_args_(grpc_channel_args_copy(args.args)),
136
+ work_serializer_(std::move(args.work_serializer)),
137
+ result_handler_(std::move(args.result_handler)),
138
+ interested_parties_(args.pollset_set),
139
+ request_service_config_(!grpc_channel_args_find_bool(
140
+ channel_args_, GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION, true)),
141
+ enable_srv_queries_(grpc_channel_args_find_bool(
142
+ channel_args_, GRPC_ARG_DNS_ENABLE_SRV_QUERIES, false)),
143
+ query_timeout_ms_(grpc_channel_args_find_integer(
144
+ channel_args_, GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS,
145
+ {GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS, 0, INT_MAX})),
146
+ min_time_between_resolutions_(grpc_channel_args_find_integer(
147
+ channel_args_, GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS,
148
+ {1000 * 30, 0, INT_MAX})),
130
149
  backoff_(
131
150
  BackOff::Options()
132
151
  .set_initial_backoff(GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS *
@@ -134,42 +153,14 @@ AresDnsResolver::AresDnsResolver(ResolverArgs args)
134
153
  .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
135
154
  .set_jitter(GRPC_DNS_RECONNECT_JITTER)
136
155
  .set_max_backoff(GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)) {
137
- // Closure Initialization
156
+ // Closure initialization.
138
157
  GRPC_CLOSURE_INIT(&on_next_resolution_, OnNextResolution, this,
139
158
  grpc_schedule_on_exec_ctx);
140
159
  GRPC_CLOSURE_INIT(&on_resolved_, OnResolved, this, grpc_schedule_on_exec_ctx);
141
- // Get name to resolve from URI path.
142
- name_to_resolve_ = std::string(absl::StripPrefix(args.uri.path(), "/"));
143
- // Get DNS server from URI authority.
144
- dns_server_ = args.uri.authority();
145
- channel_args_ = grpc_channel_args_copy(args.args);
146
- // Disable service config option
147
- const grpc_arg* arg = grpc_channel_args_find(
148
- channel_args_, GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION);
149
- request_service_config_ = !grpc_channel_arg_get_bool(arg, true);
150
- // Min time b/t resolutions option
151
- arg = grpc_channel_args_find(channel_args_,
152
- GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS);
153
- min_time_between_resolutions_ =
154
- grpc_channel_arg_get_integer(arg, {1000 * 30, 0, INT_MAX});
155
- // Enable SRV queries option
156
- arg = grpc_channel_args_find(channel_args_, GRPC_ARG_DNS_ENABLE_SRV_QUERIES);
157
- enable_srv_queries_ = grpc_channel_arg_get_bool(arg, false);
158
- interested_parties_ = grpc_pollset_set_create();
159
- if (args.pollset_set != nullptr) {
160
- grpc_pollset_set_add_pollset_set(interested_parties_, args.pollset_set);
161
- }
162
-
163
- const grpc_arg* query_timeout_ms_arg =
164
- grpc_channel_args_find(channel_args_, GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS);
165
- query_timeout_ms_ = grpc_channel_arg_get_integer(
166
- query_timeout_ms_arg,
167
- {GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS, 0, INT_MAX});
168
160
  }
169
161
 
170
162
  AresDnsResolver::~AresDnsResolver() {
171
163
  GRPC_CARES_TRACE_LOG("resolver:%p destroying AresDnsResolver", this);
172
- grpc_pollset_set_destroy(interested_parties_);
173
164
  grpc_channel_args_destroy(channel_args_);
174
165
  }
175
166
 
@@ -205,8 +196,8 @@ void AresDnsResolver::ShutdownLocked() {
205
196
  void AresDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
206
197
  AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
207
198
  GRPC_ERROR_REF(error); // ref owned by lambda
208
- r->work_serializer()->Run([r, error]() { r->OnNextResolutionLocked(error); },
209
- DEBUG_LOCATION);
199
+ r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
200
+ DEBUG_LOCATION);
210
201
  }
211
202
 
212
203
  void AresDnsResolver::OnNextResolutionLocked(grpc_error* error) {
@@ -317,8 +308,8 @@ std::string ChooseServiceConfig(char* service_config_choice_json,
317
308
  void AresDnsResolver::OnResolved(void* arg, grpc_error* error) {
318
309
  AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
319
310
  GRPC_ERROR_REF(error); // ref owned by lambda
320
- r->work_serializer()->Run([r, error]() { r->OnResolvedLocked(error); },
321
- DEBUG_LOCATION);
311
+ r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
312
+ DEBUG_LOCATION);
322
313
  }
323
314
 
324
315
  void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
@@ -355,7 +346,7 @@ void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
355
346
  }
356
347
  result.args = grpc_channel_args_copy_and_add(channel_args_, new_args.data(),
357
348
  new_args.size());
358
- result_handler()->ReturnResult(std::move(result));
349
+ result_handler_->ReturnResult(std::move(result));
359
350
  addresses_.reset();
360
351
  balancer_addresses_.reset();
361
352
  // Reset backoff state so that we start from the beginning when the
@@ -366,7 +357,7 @@ void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
366
357
  grpc_error_string(error));
367
358
  std::string error_message =
368
359
  absl::StrCat("DNS resolution failed for service: ", name_to_resolve_);
369
- result_handler()->ReturnError(grpc_error_set_int(
360
+ result_handler_->ReturnError(grpc_error_set_int(
370
361
  GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(error_message.c_str(),
371
362
  &error, 1),
372
363
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
@@ -436,7 +427,7 @@ void AresDnsResolver::StartResolvingLocked() {
436
427
  interested_parties_, &on_resolved_, &addresses_,
437
428
  enable_srv_queries_ ? &balancer_addresses_ : nullptr,
438
429
  request_service_config_ ? &service_config_json_ : nullptr,
439
- query_timeout_ms_, work_serializer());
430
+ query_timeout_ms_, work_serializer_);
440
431
  last_resolution_timestamp_ = grpc_core::ExecCtx::Get()->Now();
441
432
  GRPC_CARES_TRACE_LOG("resolver:%p Started resolving. pending_request_:%p",
442
433
  this, pending_request_);
@@ -114,8 +114,6 @@ struct grpc_ares_ev_driver {
114
114
  std::shared_ptr<grpc_core::WorkSerializer> work_serializer;
115
115
  /** a list of grpc_fd that this event driver is currently using. */
116
116
  fd_node* fds;
117
- /** is this event driver currently working? */
118
- bool working;
119
117
  /** is this event driver being shut down */
120
118
  bool shutting_down;
121
119
  /** request object that's using this ev driver */
@@ -219,9 +217,9 @@ static void fd_node_shutdown_locked(fd_node* fdn, const char* reason) {
219
217
 
220
218
  void grpc_ares_ev_driver_on_queries_complete_locked(
221
219
  grpc_ares_ev_driver* ev_driver) {
222
- // We mark the event driver as being shut down. If the event driver
223
- // is working, grpc_ares_notify_on_event_locked will shut down the
224
- // fds; if it's not working, there are no fds to shut down.
220
+ // We mark the event driver as being shut down.
221
+ // grpc_ares_notify_on_event_locked will shut down any remaining
222
+ // fds.
225
223
  ev_driver->shutting_down = true;
226
224
  grpc_timer_cancel(&ev_driver->query_timeout);
227
225
  grpc_timer_cancel(&ev_driver->ares_backup_poll_alarm);
@@ -483,43 +481,34 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
483
481
  }
484
482
  }
485
483
  ev_driver->fds = new_list;
486
- // If the ev driver has no working fd, all the tasks are done.
487
- if (new_list == nullptr) {
488
- ev_driver->working = false;
489
- GRPC_CARES_TRACE_LOG("request:%p ev driver stop working",
490
- ev_driver->request);
491
- }
492
484
  }
493
485
 
494
486
  void grpc_ares_ev_driver_start_locked(grpc_ares_ev_driver* ev_driver) {
495
- if (!ev_driver->working) {
496
- ev_driver->working = true;
497
- grpc_ares_notify_on_event_locked(ev_driver);
498
- // Initialize overall DNS resolution timeout alarm
499
- grpc_millis timeout =
500
- ev_driver->query_timeout_ms == 0
501
- ? GRPC_MILLIS_INF_FUTURE
502
- : ev_driver->query_timeout_ms + grpc_core::ExecCtx::Get()->Now();
503
- GRPC_CARES_TRACE_LOG(
504
- "request:%p ev_driver=%p grpc_ares_ev_driver_start_locked. timeout in "
505
- "%" PRId64 " ms",
506
- ev_driver->request, ev_driver, timeout);
507
- grpc_ares_ev_driver_ref(ev_driver);
508
- GRPC_CLOSURE_INIT(&ev_driver->on_timeout_locked, on_timeout, ev_driver,
509
- grpc_schedule_on_exec_ctx);
510
- grpc_timer_init(&ev_driver->query_timeout, timeout,
511
- &ev_driver->on_timeout_locked);
512
- // Initialize the backup poll alarm
513
- grpc_millis next_ares_backup_poll_alarm =
514
- calculate_next_ares_backup_poll_alarm_ms(ev_driver);
515
- grpc_ares_ev_driver_ref(ev_driver);
516
- GRPC_CLOSURE_INIT(&ev_driver->on_ares_backup_poll_alarm_locked,
517
- on_ares_backup_poll_alarm, ev_driver,
518
- grpc_schedule_on_exec_ctx);
519
- grpc_timer_init(&ev_driver->ares_backup_poll_alarm,
520
- next_ares_backup_poll_alarm,
521
- &ev_driver->on_ares_backup_poll_alarm_locked);
522
- }
487
+ grpc_ares_notify_on_event_locked(ev_driver);
488
+ // Initialize overall DNS resolution timeout alarm
489
+ grpc_millis timeout =
490
+ ev_driver->query_timeout_ms == 0
491
+ ? GRPC_MILLIS_INF_FUTURE
492
+ : ev_driver->query_timeout_ms + grpc_core::ExecCtx::Get()->Now();
493
+ GRPC_CARES_TRACE_LOG(
494
+ "request:%p ev_driver=%p grpc_ares_ev_driver_start_locked. timeout in "
495
+ "%" PRId64 " ms",
496
+ ev_driver->request, ev_driver, timeout);
497
+ grpc_ares_ev_driver_ref(ev_driver);
498
+ GRPC_CLOSURE_INIT(&ev_driver->on_timeout_locked, on_timeout, ev_driver,
499
+ grpc_schedule_on_exec_ctx);
500
+ grpc_timer_init(&ev_driver->query_timeout, timeout,
501
+ &ev_driver->on_timeout_locked);
502
+ // Initialize the backup poll alarm
503
+ grpc_millis next_ares_backup_poll_alarm =
504
+ calculate_next_ares_backup_poll_alarm_ms(ev_driver);
505
+ grpc_ares_ev_driver_ref(ev_driver);
506
+ GRPC_CLOSURE_INIT(&ev_driver->on_ares_backup_poll_alarm_locked,
507
+ on_ares_backup_poll_alarm, ev_driver,
508
+ grpc_schedule_on_exec_ctx);
509
+ grpc_timer_init(&ev_driver->ares_backup_poll_alarm,
510
+ next_ares_backup_poll_alarm,
511
+ &ev_driver->on_ares_backup_poll_alarm_locked);
523
512
  }
524
513
 
525
514
  static void noop_inject_channel_config(ares_channel /*channel*/) {}
@@ -551,7 +540,6 @@ grpc_error* grpc_ares_ev_driver_create_locked(
551
540
  gpr_ref_init(&(*ev_driver)->refs, 1);
552
541
  (*ev_driver)->pollset_set = pollset_set;
553
542
  (*ev_driver)->fds = nullptr;
554
- (*ev_driver)->working = false;
555
543
  (*ev_driver)->shutting_down = false;
556
544
  (*ev_driver)->request = request;
557
545
  (*ev_driver)->polled_fd_factory =
@@ -757,7 +745,7 @@ static void on_srv_query_done_locked(void* arg, int status, int /*timeouts*/,
757
745
  r, srv_it->host, htons(srv_it->port), true /* is_balancer */, "A");
758
746
  ares_gethostbyname(r->ev_driver->channel, hr->host, AF_INET,
759
747
  on_hostbyname_done_locked, hr);
760
- grpc_ares_ev_driver_start_locked(r->ev_driver);
748
+ grpc_ares_notify_on_event_locked(r->ev_driver);
761
749
  }
762
750
  }
763
751
  if (reply != nullptr) {
@@ -77,6 +77,8 @@ class NativeDnsResolver : public Resolver {
77
77
  std::string name_to_resolve_;
78
78
  /// channel args
79
79
  grpc_channel_args* channel_args_ = nullptr;
80
+ std::shared_ptr<WorkSerializer> work_serializer_;
81
+ std::unique_ptr<ResultHandler> result_handler_;
80
82
  /// pollset_set to drive the name resolution process
81
83
  grpc_pollset_set* interested_parties_ = nullptr;
82
84
  /// are we shutting down?
@@ -99,7 +101,14 @@ class NativeDnsResolver : public Resolver {
99
101
  };
100
102
 
101
103
  NativeDnsResolver::NativeDnsResolver(ResolverArgs args)
102
- : Resolver(std::move(args.work_serializer), std::move(args.result_handler)),
104
+ : name_to_resolve_(absl::StripPrefix(args.uri.path(), "/")),
105
+ channel_args_(grpc_channel_args_copy(args.args)),
106
+ work_serializer_(std::move(args.work_serializer)),
107
+ result_handler_(std::move(args.result_handler)),
108
+ interested_parties_(grpc_pollset_set_create()),
109
+ min_time_between_resolutions_(grpc_channel_args_find_integer(
110
+ channel_args_, GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS,
111
+ {1000 * 30, 0, INT_MAX})),
103
112
  backoff_(
104
113
  BackOff::Options()
105
114
  .set_initial_backoff(GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS *
@@ -107,13 +116,6 @@ NativeDnsResolver::NativeDnsResolver(ResolverArgs args)
107
116
  .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
108
117
  .set_jitter(GRPC_DNS_RECONNECT_JITTER)
109
118
  .set_max_backoff(GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)) {
110
- name_to_resolve_ = std::string(absl::StripPrefix(args.uri.path(), "/"));
111
- channel_args_ = grpc_channel_args_copy(args.args);
112
- const grpc_arg* arg = grpc_channel_args_find(
113
- args.args, GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS);
114
- min_time_between_resolutions_ =
115
- grpc_channel_arg_get_integer(arg, {1000 * 30, 0, INT_MAX});
116
- interested_parties_ = grpc_pollset_set_create();
117
119
  if (args.pollset_set != nullptr) {
118
120
  grpc_pollset_set_add_pollset_set(interested_parties_, args.pollset_set);
119
121
  }
@@ -149,8 +151,8 @@ void NativeDnsResolver::ShutdownLocked() {
149
151
  void NativeDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
150
152
  NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
151
153
  GRPC_ERROR_REF(error); // ref owned by lambda
152
- r->work_serializer()->Run([r, error]() { r->OnNextResolutionLocked(error); },
153
- DEBUG_LOCATION);
154
+ r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
155
+ DEBUG_LOCATION);
154
156
  }
155
157
 
156
158
  void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) {
@@ -165,8 +167,8 @@ void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) {
165
167
  void NativeDnsResolver::OnResolved(void* arg, grpc_error* error) {
166
168
  NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
167
169
  GRPC_ERROR_REF(error); // owned by lambda
168
- r->work_serializer()->Run([r, error]() { r->OnResolvedLocked(error); },
169
- DEBUG_LOCATION);
170
+ r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
171
+ DEBUG_LOCATION);
170
172
  }
171
173
 
172
174
  void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
@@ -186,7 +188,7 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
186
188
  }
187
189
  grpc_resolved_addresses_destroy(addresses_);
188
190
  result.args = grpc_channel_args_copy(channel_args_);
189
- result_handler()->ReturnResult(std::move(result));
191
+ result_handler_->ReturnResult(std::move(result));
190
192
  // Reset backoff state so that we start from the beginning when the
191
193
  // next request gets triggered.
192
194
  backoff_.Reset();
@@ -196,7 +198,7 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
196
198
  // Return transient error.
197
199
  std::string error_message =
198
200
  absl::StrCat("DNS resolution failed for service: ", name_to_resolve_);
199
- result_handler()->ReturnError(grpc_error_set_int(
201
+ result_handler_->ReturnError(grpc_error_set_int(
200
202
  GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(error_message.c_str(),
201
203
  &error, 1),
202
204
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
@@ -69,6 +69,8 @@ class FakeResolver : public Resolver {
69
69
 
70
70
  // passed-in parameters
71
71
  grpc_channel_args* channel_args_ = nullptr;
72
+ std::shared_ptr<WorkSerializer> work_serializer_;
73
+ std::unique_ptr<ResultHandler> result_handler_;
72
74
  RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
73
75
  // If has_next_result_ is true, next_result_ is the next resolution result
74
76
  // to be returned.
@@ -89,7 +91,8 @@ class FakeResolver : public Resolver {
89
91
  };
90
92
 
91
93
  FakeResolver::FakeResolver(ResolverArgs args)
92
- : Resolver(std::move(args.work_serializer), std::move(args.result_handler)),
94
+ : work_serializer_(std::move(args.work_serializer)),
95
+ result_handler_(std::move(args.result_handler)),
93
96
  response_generator_(
94
97
  FakeResolverResponseGenerator::GetFromArgs(args.args)) {
95
98
  // Channels sharing the same subchannels may have different resolver response
@@ -121,8 +124,8 @@ void FakeResolver::RequestReresolutionLocked() {
121
124
  if (!reresolution_closure_pending_) {
122
125
  reresolution_closure_pending_ = true;
123
126
  Ref().release(); // ref held by closure
124
- work_serializer()->Run([this]() { ReturnReresolutionResult(); },
125
- DEBUG_LOCATION);
127
+ work_serializer_->Run([this]() { ReturnReresolutionResult(); },
128
+ DEBUG_LOCATION);
126
129
  }
127
130
  }
128
131
  }
@@ -140,7 +143,7 @@ void FakeResolver::MaybeSendResultLocked() {
140
143
  if (return_failure_) {
141
144
  // TODO(roth): Change resolver result generator to be able to inject
142
145
  // the error to be returned.
143
- result_handler()->ReturnError(grpc_error_set_int(
146
+ result_handler_->ReturnError(grpc_error_set_int(
144
147
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resolver transient failure"),
145
148
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
146
149
  return_failure_ = false;
@@ -155,7 +158,7 @@ void FakeResolver::MaybeSendResultLocked() {
155
158
  // name, only the one in next_results_ will be kept since next_results_ is
156
159
  // before channel_args_.
157
160
  result.args = grpc_channel_args_union(next_result_.args, channel_args_);
158
- result_handler()->ReturnResult(std::move(result));
161
+ result_handler_->ReturnResult(std::move(result));
159
162
  has_next_result_ = false;
160
163
  }
161
164
  }
@@ -236,8 +239,8 @@ void FakeResolverResponseGenerator::SetResponse(Resolver::Result result) {
236
239
  }
237
240
  FakeResolverResponseSetter* arg =
238
241
  new FakeResolverResponseSetter(resolver, std::move(result));
239
- resolver->work_serializer()->Run([arg]() { arg->SetResponseLocked(); },
240
- DEBUG_LOCATION);
242
+ resolver->work_serializer_->Run([arg]() { arg->SetResponseLocked(); },
243
+ DEBUG_LOCATION);
241
244
  }
242
245
 
243
246
  void FakeResolverResponseGenerator::SetReresolutionResponse(
@@ -250,7 +253,7 @@ void FakeResolverResponseGenerator::SetReresolutionResponse(
250
253
  }
251
254
  FakeResolverResponseSetter* arg = new FakeResolverResponseSetter(
252
255
  resolver, std::move(result), true /* has_result */);
253
- resolver->work_serializer()->Run(
256
+ resolver->work_serializer_->Run(
254
257
  [arg]() { arg->SetReresolutionResponseLocked(); }, DEBUG_LOCATION);
255
258
  }
256
259
 
@@ -263,7 +266,7 @@ void FakeResolverResponseGenerator::UnsetReresolutionResponse() {
263
266
  }
264
267
  FakeResolverResponseSetter* arg =
265
268
  new FakeResolverResponseSetter(resolver, Resolver::Result());
266
- resolver->work_serializer()->Run(
269
+ resolver->work_serializer_->Run(
267
270
  [arg]() { arg->SetReresolutionResponseLocked(); }, DEBUG_LOCATION);
268
271
  }
269
272
 
@@ -276,8 +279,8 @@ void FakeResolverResponseGenerator::SetFailure() {
276
279
  }
277
280
  FakeResolverResponseSetter* arg =
278
281
  new FakeResolverResponseSetter(resolver, Resolver::Result());
279
- resolver->work_serializer()->Run([arg]() { arg->SetFailureLocked(); },
280
- DEBUG_LOCATION);
282
+ resolver->work_serializer_->Run([arg]() { arg->SetFailureLocked(); },
283
+ DEBUG_LOCATION);
281
284
  }
282
285
 
283
286
  void FakeResolverResponseGenerator::SetFailureOnReresolution() {
@@ -290,8 +293,8 @@ void FakeResolverResponseGenerator::SetFailureOnReresolution() {
290
293
  FakeResolverResponseSetter* arg = new FakeResolverResponseSetter(
291
294
  resolver, Resolver::Result(), false /* has_result */,
292
295
  false /* immediate */);
293
- resolver->work_serializer()->Run([arg]() { arg->SetFailureLocked(); },
294
- DEBUG_LOCATION);
296
+ resolver->work_serializer_->Run([arg]() { arg->SetFailureLocked(); },
297
+ DEBUG_LOCATION);
295
298
  }
296
299
 
297
300
  void FakeResolverResponseGenerator::SetFakeResolver(
@@ -302,8 +305,8 @@ void FakeResolverResponseGenerator::SetFakeResolver(
302
305
  if (has_result_) {
303
306
  FakeResolverResponseSetter* arg =
304
307
  new FakeResolverResponseSetter(resolver_, std::move(result_));
305
- resolver_->work_serializer()->Run([arg]() { arg->SetResponseLocked(); },
306
- DEBUG_LOCATION);
308
+ resolver_->work_serializer_->Run([arg]() { arg->SetResponseLocked(); },
309
+ DEBUG_LOCATION);
307
310
  has_result_ = false;
308
311
  }
309
312
  }