grpc 1.43.1 → 1.44.0.pre2

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 (382) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +84 -64
  3. data/include/grpc/grpc_security.h +10 -0
  4. data/include/grpc/impl/codegen/compression_types.h +0 -2
  5. data/include/grpc/impl/codegen/grpc_types.h +6 -0
  6. data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
  7. data/src/core/ext/filters/client_channel/client_channel.cc +62 -68
  8. data/src/core/ext/filters/client_channel/client_channel.h +8 -8
  9. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  10. data/src/core/ext/filters/client_channel/config_selector.h +4 -4
  11. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  12. data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -14
  13. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  14. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
  16. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +3 -7
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +31 -32
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +43 -29
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +120 -68
  26. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +60 -48
  27. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
  28. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
  29. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -5
  30. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +19 -15
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -12
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -2
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +50 -105
  35. data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
  36. data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
  37. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -3
  38. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +207 -81
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +118 -207
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  45. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +82 -73
  46. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +10 -10
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
  48. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -5
  49. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
  50. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +157 -67
  51. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
  52. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
  53. data/src/core/ext/filters/client_channel/retry_filter.cc +37 -64
  54. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
  55. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  56. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
  57. data/src/core/ext/filters/client_channel/subchannel.cc +12 -16
  58. data/src/core/ext/filters/client_channel/subchannel.h +2 -3
  59. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +37 -48
  60. data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -8
  61. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  62. data/src/core/ext/filters/http/client/http_client_filter.cc +51 -122
  63. data/src/core/ext/filters/http/client_authority_filter.cc +8 -24
  64. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -140
  65. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
  66. data/src/core/ext/filters/http/server/http_server_filter.cc +50 -135
  67. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  68. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  69. data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
  70. data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
  71. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
  72. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
  73. data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -2
  74. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +11 -6
  75. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +1 -1
  76. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +1 -1
  77. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +89 -29
  78. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
  79. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +45 -186
  80. data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
  81. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +341 -279
  82. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +69 -159
  83. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
  84. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
  85. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -32
  86. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
  87. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
  88. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
  89. data/src/core/ext/transport/chttp2/transport/internal.h +0 -33
  90. data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -6
  91. data/src/core/ext/transport/chttp2/transport/writing.cc +47 -116
  92. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  93. data/src/core/ext/transport/inproc/inproc_transport.cc +11 -63
  94. data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
  95. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
  96. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  99. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
  100. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  101. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  102. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  103. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
  104. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
  105. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
  106. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
  107. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  108. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  109. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
  110. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
  111. data/src/core/ext/xds/upb_utils.h +65 -0
  112. data/src/core/ext/xds/xds_api.cc +81 -3458
  113. data/src/core/ext/xds/xds_api.h +56 -611
  114. data/src/core/ext/xds/xds_bootstrap.cc +189 -125
  115. data/src/core/ext/xds/xds_bootstrap.h +20 -15
  116. data/src/core/ext/xds/xds_certificate_provider.h +1 -0
  117. data/src/core/ext/xds/xds_channel_creds.cc +108 -0
  118. data/src/core/ext/xds/xds_channel_creds.h +50 -0
  119. data/src/core/ext/xds/xds_client.cc +584 -994
  120. data/src/core/ext/xds/xds_client.h +78 -135
  121. data/src/core/ext/xds/xds_cluster.cc +451 -0
  122. data/src/core/ext/xds/xds_cluster.h +111 -0
  123. data/src/core/ext/xds/xds_common_types.cc +388 -0
  124. data/src/core/ext/xds/xds_common_types.h +110 -0
  125. data/src/core/ext/xds/xds_endpoint.cc +364 -0
  126. data/src/core/ext/xds/xds_endpoint.h +135 -0
  127. data/src/core/ext/xds/xds_http_filters.cc +5 -0
  128. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  129. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  130. data/src/core/ext/xds/xds_listener.cc +1036 -0
  131. data/src/core/ext/xds/xds_listener.h +220 -0
  132. data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
  133. data/src/core/ext/xds/xds_resource_type.h +98 -0
  134. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  135. data/src/core/ext/xds/xds_route_config.cc +993 -0
  136. data/src/core/ext/xds/xds_route_config.h +215 -0
  137. data/src/core/ext/xds/xds_routing.cc +11 -8
  138. data/src/core/ext/xds/xds_routing.h +8 -5
  139. data/src/core/ext/xds/xds_server_config_fetcher.cc +159 -99
  140. data/src/core/lib/address_utils/parse_address.cc +20 -0
  141. data/src/core/lib/address_utils/parse_address.h +5 -0
  142. data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
  143. data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
  144. data/src/core/lib/backoff/backoff.cc +4 -30
  145. data/src/core/lib/backoff/backoff.h +3 -3
  146. data/src/core/lib/channel/channel_args.cc +0 -1
  147. data/src/core/lib/channel/channel_stack.cc +8 -0
  148. data/src/core/lib/channel/channel_stack.h +1 -1
  149. data/src/core/lib/channel/channel_stack_builder.cc +5 -9
  150. data/src/core/lib/channel/channel_stack_builder.h +4 -7
  151. data/src/core/lib/channel/channelz.cc +1 -0
  152. data/src/core/lib/compression/compression.cc +19 -111
  153. data/src/core/lib/compression/compression_internal.cc +142 -202
  154. data/src/core/lib/compression/compression_internal.h +64 -69
  155. data/src/core/lib/compression/message_compress.cc +11 -11
  156. data/src/core/lib/compression/message_compress.h +2 -2
  157. data/src/core/lib/gpr/useful.h +4 -0
  158. data/src/core/lib/gprpp/bitset.h +7 -0
  159. data/src/core/lib/gprpp/chunked_vector.h +45 -3
  160. data/src/core/lib/gprpp/status_helper.cc +20 -28
  161. data/src/core/lib/gprpp/status_helper.h +6 -19
  162. data/src/core/lib/gprpp/table.h +11 -0
  163. data/src/core/lib/http/httpcli.cc +37 -46
  164. data/src/core/lib/http/httpcli.h +3 -15
  165. data/src/core/lib/iomgr/call_combiner.cc +15 -4
  166. data/src/core/lib/iomgr/closure.h +29 -9
  167. data/src/core/lib/iomgr/combiner.cc +25 -3
  168. data/src/core/lib/iomgr/error.cc +2 -0
  169. data/src/core/lib/iomgr/error.h +3 -0
  170. data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
  171. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
  172. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
  173. data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
  174. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  175. data/src/core/lib/iomgr/exec_ctx.cc +22 -9
  176. data/src/core/lib/iomgr/executor.cc +10 -1
  177. data/src/core/lib/iomgr/fork_posix.cc +3 -2
  178. data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
  179. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  180. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  181. data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
  182. data/src/core/lib/iomgr/port.h +2 -2
  183. data/src/core/lib/iomgr/resolve_address.cc +5 -24
  184. data/src/core/lib/iomgr/resolve_address.h +47 -44
  185. data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
  186. data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
  187. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  188. data/src/core/lib/iomgr/resolve_address_posix.cc +82 -66
  189. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  190. data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
  191. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  192. data/src/core/lib/iomgr/resolved_address.h +39 -0
  193. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
  194. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
  195. data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
  196. data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
  197. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
  198. data/src/core/lib/matchers/matchers.cc +1 -1
  199. data/src/core/lib/promise/activity.h +49 -20
  200. data/src/core/lib/promise/detail/status.h +5 -0
  201. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
  202. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
  203. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +10 -5
  204. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +3 -2
  205. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +4 -5
  206. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
  207. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
  208. data/src/core/lib/resource_quota/api.h +0 -1
  209. data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
  210. data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
  211. data/src/core/lib/security/authorization/evaluate_args.cc +30 -15
  212. data/src/core/lib/security/authorization/evaluate_args.h +1 -0
  213. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  214. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  215. data/src/core/lib/security/authorization/matchers.cc +227 -0
  216. data/src/core/lib/security/authorization/matchers.h +211 -0
  217. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  218. data/src/core/lib/security/authorization/rbac_policy.h +170 -0
  219. data/src/core/lib/security/context/security_context.cc +4 -2
  220. data/src/core/lib/security/context/security_context.h +1 -1
  221. data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -5
  222. data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
  223. data/src/core/lib/security/credentials/credentials.h +10 -20
  224. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +6 -9
  225. data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -9
  226. data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -7
  227. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -3
  228. data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
  229. data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
  230. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -5
  231. data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
  232. data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
  233. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
  234. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +16 -28
  235. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
  236. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +6 -13
  237. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +44 -57
  238. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
  239. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
  240. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
  241. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
  242. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +6 -0
  243. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +7 -0
  244. data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
  245. data/src/core/lib/security/security_connector/security_connector.cc +0 -4
  246. data/src/core/lib/security/security_connector/security_connector.h +5 -1
  247. data/src/core/lib/security/security_connector/ssl_utils.cc +14 -24
  248. data/src/core/lib/security/security_connector/ssl_utils.h +5 -14
  249. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -3
  250. data/src/core/lib/security/transport/auth_filters.h +7 -0
  251. data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
  252. data/src/core/lib/security/transport/server_auth_filter.cc +40 -35
  253. data/src/core/{ext → lib}/service_config/service_config.cc +2 -2
  254. data/src/core/{ext → lib}/service_config/service_config.h +4 -4
  255. data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
  256. data/src/core/{ext → lib}/service_config/service_config_parser.cc +1 -1
  257. data/src/core/{ext → lib}/service_config/service_config_parser.h +3 -3
  258. data/src/core/lib/slice/slice.cc +3 -1
  259. data/src/core/lib/slice/slice.h +43 -13
  260. data/src/core/lib/slice/slice_intern.cc +3 -101
  261. data/src/core/lib/slice/slice_internal.h +1 -2
  262. data/src/core/lib/slice/slice_refcount.h +4 -13
  263. data/src/core/lib/slice/slice_refcount_base.h +0 -16
  264. data/src/core/lib/surface/call.cc +140 -382
  265. data/src/core/lib/surface/call.h +4 -4
  266. data/src/core/lib/surface/channel.cc +42 -44
  267. data/src/core/lib/surface/channel.h +4 -4
  268. data/src/core/lib/surface/init.cc +0 -2
  269. data/src/core/lib/surface/lame_client.cc +0 -1
  270. data/src/core/lib/surface/server.cc +12 -29
  271. data/src/core/lib/surface/server.h +2 -2
  272. data/src/core/lib/surface/version.cc +2 -2
  273. data/src/core/lib/transport/error_utils.h +14 -0
  274. data/src/core/lib/transport/metadata_batch.h +799 -717
  275. data/src/core/lib/transport/parsed_metadata.cc +2 -0
  276. data/src/core/lib/transport/parsed_metadata.h +95 -92
  277. data/src/core/lib/transport/timeout_encoding.cc +200 -66
  278. data/src/core/lib/transport/timeout_encoding.h +40 -10
  279. data/src/core/lib/transport/transport.h +1 -1
  280. data/src/core/lib/transport/transport_op_string.cc +6 -39
  281. data/src/core/lib/uri/uri_parser.cc +223 -53
  282. data/src/core/lib/uri/uri_parser.h +36 -23
  283. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -3
  284. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  285. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  286. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
  287. data/src/core/tsi/ssl_transport_security.cc +53 -13
  288. data/src/core/tsi/ssl_transport_security.h +18 -6
  289. data/src/ruby/ext/grpc/extconf.rb +10 -3
  290. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  291. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  292. data/src/ruby/lib/grpc/version.rb +1 -1
  293. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
  294. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  295. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  296. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  297. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  298. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  299. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  300. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  301. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  302. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  303. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  304. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  305. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  306. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  307. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  308. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  309. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  310. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  311. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  312. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  313. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  314. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  315. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  316. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  317. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  318. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  319. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  320. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  321. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  322. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  323. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  324. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  325. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  326. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  327. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  328. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  329. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  330. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  331. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  332. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  333. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  334. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  335. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  336. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  337. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  338. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  339. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  340. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
  341. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
  342. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  343. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
  344. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
  345. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
  346. data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
  347. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
  348. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  349. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  350. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  351. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  352. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
  353. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
  354. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  355. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
  356. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
  357. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
  358. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
  359. data/third_party/xxhash/xxhash.h +607 -352
  360. metadata +149 -77
  361. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
  362. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
  363. data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
  364. data/src/core/lib/compression/algorithm_metadata.h +0 -62
  365. data/src/core/lib/compression/compression_args.cc +0 -140
  366. data/src/core/lib/compression/compression_args.h +0 -58
  367. data/src/core/lib/compression/stream_compression.cc +0 -81
  368. data/src/core/lib/compression/stream_compression.h +0 -117
  369. data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
  370. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  371. data/src/core/lib/compression/stream_compression_identity.cc +0 -91
  372. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  373. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
  374. data/src/core/lib/slice/static_slice.cc +0 -377
  375. data/src/core/lib/slice/static_slice.h +0 -300
  376. data/src/core/lib/transport/metadata.cc +0 -714
  377. data/src/core/lib/transport/metadata.h +0 -449
  378. data/src/core/lib/transport/metadata_batch.cc +0 -99
  379. data/src/core/lib/transport/static_metadata.cc +0 -1032
  380. data/src/core/lib/transport/static_metadata.h +0 -322
  381. data/src/core/lib/transport/status_metadata.cc +0 -63
  382. data/src/core/lib/transport/status_metadata.h +0 -48
@@ -149,7 +149,11 @@ static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* cl,
149
149
  }
150
150
  GPR_ASSERT(last & STATE_UNORPHANED); // ensure lock has not been destroyed
151
151
  assert(cl->cb);
152
- cl->error_data.error = error;
152
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
153
+ cl->error_data.error = grpc_core::internal::StatusAllocHeapPtr(error);
154
+ #else
155
+ cl->error_data.error = reinterpret_cast<intptr_t>(error);
156
+ #endif
153
157
  lock->queue.Push(cl->next_data.mpscq_node.get());
154
158
  }
155
159
 
@@ -221,12 +225,21 @@ bool grpc_combiner_continue_exec_ctx() {
221
225
  return true;
222
226
  }
223
227
  grpc_closure* cl = reinterpret_cast<grpc_closure*>(n);
224
- grpc_error_handle cl_err = cl->error_data.error;
225
228
  #ifndef NDEBUG
226
229
  cl->scheduled = false;
227
230
  #endif
231
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
232
+ grpc_error_handle cl_err =
233
+ grpc_core::internal::StatusMoveFromHeapPtr(cl->error_data.error);
234
+ cl->error_data.error = 0;
235
+ cl->cb(cl->cb_arg, std::move(cl_err));
236
+ #else
237
+ grpc_error_handle cl_err =
238
+ reinterpret_cast<grpc_error_handle>(cl->error_data.error);
239
+ cl->error_data.error = 0;
228
240
  cl->cb(cl->cb_arg, cl_err);
229
241
  GRPC_ERROR_UNREF(cl_err);
242
+ #endif
230
243
  } else {
231
244
  grpc_closure* c = lock->final_list.head;
232
245
  GPR_ASSERT(c != nullptr);
@@ -236,12 +249,21 @@ bool grpc_combiner_continue_exec_ctx() {
236
249
  GRPC_COMBINER_TRACE(
237
250
  gpr_log(GPR_INFO, "C:%p execute_final[%d] c=%p", lock, loops, c));
238
251
  grpc_closure* next = c->next_data.next;
239
- grpc_error_handle error = c->error_data.error;
240
252
  #ifndef NDEBUG
241
253
  c->scheduled = false;
242
254
  #endif
255
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
256
+ grpc_error_handle error =
257
+ grpc_core::internal::StatusMoveFromHeapPtr(c->error_data.error);
258
+ c->error_data.error = 0;
259
+ c->cb(c->cb_arg, std::move(error));
260
+ #else
261
+ grpc_error_handle error =
262
+ reinterpret_cast<grpc_error_handle>(c->error_data.error);
263
+ c->error_data.error = 0;
243
264
  c->cb(c->cb_arg, error);
244
265
  GRPC_ERROR_UNREF(error);
266
+ #endif
245
267
  c = next;
246
268
  }
247
269
  }
@@ -252,6 +252,8 @@ static const char* error_int_name(grpc_error_ints key) {
252
252
  return "channel_connectivity_state";
253
253
  case GRPC_ERROR_INT_LB_POLICY_DROP:
254
254
  return "lb_policy_drop";
255
+ case GRPC_ERROR_INT_STREAM_NETWORK_STATE:
256
+ return "stream_network_state";
255
257
  case GRPC_ERROR_INT_MAX:
256
258
  GPR_UNREACHABLE_CODE(return "unknown");
257
259
  }
@@ -96,6 +96,9 @@ typedef enum {
96
96
  /// LB policy drop
97
97
  GRPC_ERROR_INT_LB_POLICY_DROP =
98
98
  static_cast<int>(grpc_core::StatusIntProperty::kLbPolicyDrop),
99
+ /// stream network state
100
+ GRPC_ERROR_INT_STREAM_NETWORK_STATE =
101
+ static_cast<int>(grpc_core::StatusIntProperty::kStreamNetworkState),
99
102
 
100
103
  /// Must always be last
101
104
  GRPC_ERROR_INT_MAX,
@@ -18,6 +18,7 @@
18
18
 
19
19
  #include "src/core/lib/debug/trace.h"
20
20
  #include "src/core/lib/iomgr/closure.h"
21
+ #include "src/core/lib/iomgr/event_engine/resolver.h"
21
22
  #include "src/core/lib/iomgr/iomgr_internal.h"
22
23
  #include "src/core/lib/iomgr/tcp_client.h"
23
24
  #include "src/core/lib/iomgr/tcp_server.h"
@@ -29,7 +30,6 @@ extern grpc_tcp_server_vtable grpc_event_engine_tcp_server_vtable;
29
30
  extern grpc_timer_vtable grpc_event_engine_timer_vtable;
30
31
  extern grpc_pollset_vtable grpc_event_engine_pollset_vtable;
31
32
  extern grpc_pollset_set_vtable grpc_event_engine_pollset_set_vtable;
32
- extern grpc_address_resolver_vtable grpc_event_engine_resolver_vtable;
33
33
 
34
34
  // Disabled by default. grpc_polling_trace must be defined in all iomgr
35
35
  // implementations due to its usage in lockfree_event.
@@ -75,7 +75,8 @@ void grpc_set_default_iomgr_platform() {
75
75
  grpc_set_timer_impl(&grpc_event_engine_timer_vtable);
76
76
  grpc_set_pollset_vtable(&grpc_event_engine_pollset_vtable);
77
77
  grpc_set_pollset_set_vtable(&grpc_event_engine_pollset_set_vtable);
78
- grpc_set_resolver_impl(&grpc_event_engine_resolver_vtable);
78
+ grpc_core::SetDNSResolver(
79
+ grpc_core::experimental::EventEngineDNSResolver::GetOrCreate());
79
80
  grpc_set_iomgr_platform_vtable(&vtable);
80
81
  }
81
82
 
@@ -37,5 +37,11 @@ grpc_resolved_address CreateGRPCResolvedAddress(
37
37
  return grpc_addr;
38
38
  }
39
39
 
40
+ // TODO(ctiller): Move this to somewhere more permanent as we're deleting iomgr.
41
+ std::string ResolvedAddressToURI(const EventEngine::ResolvedAddress& addr) {
42
+ auto gra = CreateGRPCResolvedAddress(addr);
43
+ return grpc_sockaddr_to_uri(&gra);
44
+ }
45
+
40
46
  } // namespace experimental
41
47
  } // namespace grpc_event_engine
@@ -29,6 +29,8 @@ EventEngine::ResolvedAddress CreateResolvedAddress(
29
29
  grpc_resolved_address CreateGRPCResolvedAddress(
30
30
  const EventEngine::ResolvedAddress& ra);
31
31
 
32
+ std::string ResolvedAddressToURI(const EventEngine::ResolvedAddress& addr);
33
+
32
34
  } // namespace experimental
33
35
  } // namespace grpc_event_engine
34
36
 
@@ -24,11 +24,15 @@
24
24
  #include "src/core/lib/iomgr/error.h"
25
25
  #include "src/core/lib/iomgr/event_engine/promise.h"
26
26
  #include "src/core/lib/iomgr/event_engine/resolved_address_internal.h"
27
+ #include "src/core/lib/iomgr/event_engine/resolver.h"
27
28
  #include "src/core/lib/iomgr/resolve_address.h"
29
+ #include "src/core/lib/iomgr/resolve_address_impl.h"
28
30
  #include "src/core/lib/iomgr/work_serializer.h"
29
31
  #include "src/core/lib/surface/init.h"
30
32
  #include "src/core/lib/transport/error_utils.h"
31
33
 
34
+ namespace grpc_core {
35
+ namespace experimental {
32
36
  namespace {
33
37
  using ::grpc_event_engine::experimental::CreateGRPCResolvedAddress;
34
38
  using ::grpc_event_engine::experimental::EventEngine;
@@ -39,77 +43,91 @@ using ::grpc_event_engine::experimental::Promise;
39
43
  ///
40
44
  /// This provides a place to store the ownership of the DNSResolver object until
41
45
  /// the request is complete.
42
- class DnsRequest {
46
+ class EventEngineDNSRequest : DNSRequest {
43
47
  public:
44
- DnsRequest(std::unique_ptr<EventEngine::DNSResolver> dns_resolver,
45
- absl::string_view address, absl::string_view default_port,
46
- grpc_closure* on_done, grpc_resolved_addresses** addresses)
48
+ EventEngineDNSRequest(std::unique_ptr<EventEngine::DNSResolver> dns_resolver,
49
+ absl::string_view name, absl::string_view default_port,
50
+ grpc_closure* on_done,
51
+ std::vector<grpc_resolved_address>* addresses)
47
52
  : dns_resolver_(std::move(dns_resolver)),
48
- cb_(on_done),
49
- addresses_(addresses) {
53
+ name_(std::string(name)),
54
+ default_port_(std::string(default_port)),
55
+ on_done_(std::move(on_done)) {}
56
+
57
+ void Start() override {
58
+ if (dns_resolver_ == nullptr) {
59
+ new DNSCallbackExecCtxScheduler(
60
+ std::move(on_done_),
61
+ absl::UnknownError("Failed to get DNS Resolver."));
62
+ return;
63
+ }
64
+ Ref().release(); // ref held by pending resolution
50
65
  dns_resolver_->LookupHostname(
51
- absl::bind_front(&DnsRequest::OnLookupComplete, this), address,
52
- default_port, absl::InfiniteFuture());
66
+ absl::bind_front(&EventEngineDNSRequest::OnLookupComplete, this), name_,
67
+ default_port_, absl::InfiniteFuture());
53
68
  }
54
69
 
70
+ // TOOD(hork): implement cancellation; currently it's a no-op
71
+ void Orphan() override { Unref(); }
72
+
55
73
  private:
56
74
  void OnLookupComplete(
57
75
  absl::StatusOr<std::vector<EventEngine::ResolvedAddress>> addresses) {
58
- grpc_core::ExecCtx exec_ctx;
76
+ ExecCtx exec_ctx;
59
77
  // Convert addresses to iomgr form.
60
- *addresses_ = static_cast<grpc_resolved_addresses*>(
61
- gpr_malloc(sizeof(grpc_resolved_addresses)));
62
- (*addresses_)->naddrs = addresses->size();
63
- (*addresses_)->addrs = static_cast<grpc_resolved_address*>(
64
- gpr_malloc(sizeof(grpc_resolved_address) * addresses->size()));
78
+ std::vector<grpc_resolved_address> result;
79
+ results.reserve(addresses->size());
65
80
  for (size_t i = 0; i < addresses->size(); ++i) {
66
- (*addresses_)->addrs[i] = CreateGRPCResolvedAddress((*addresses)[i]);
81
+ results.push_back(CreateGRPCResolvedAddress(addresses[i]));
82
+ }
83
+ if (addresses.ok()) {
84
+ on_done_(std::move(result));
85
+ } else {
86
+ on_done_(addresses.status());
67
87
  }
68
- grpc_closure* cb = cb_;
69
- delete this;
70
- grpc_core::Closure::Run(DEBUG_LOCATION, cb,
71
- absl_status_to_grpc_error(addresses.status()));
88
+ Unref();
72
89
  }
73
90
 
74
91
  std::unique_ptr<EventEngine::DNSResolver> dns_resolver_;
75
- grpc_closure* cb_;
76
- grpc_resolved_addresses** addresses_;
92
+ const std::string name_;
93
+ const std::string default_port_;
94
+ std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
95
+ on_done_;
77
96
  };
78
97
 
79
- void resolve_address(const char* addr, const char* default_port,
80
- grpc_pollset_set* /* interested_parties */,
81
- grpc_closure* on_done,
82
- grpc_resolved_addresses** addresses) {
83
- std::unique_ptr<EventEngine::DNSResolver> dns_resolver =
84
- GetDefaultEventEngine()->GetDNSResolver();
85
- if (dns_resolver == nullptr) {
86
- grpc_core::ExecCtx::Run(
87
- DEBUG_LOCATION, on_done,
88
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to get DNS Resolver."));
89
- return;
90
- }
91
- new DnsRequest(std::move(dns_resolver), addr, default_port, on_done,
92
- addresses);
98
+ } // namespace
99
+
100
+ DNSResolver* EventEngineDNSResolver::GetOrCreate() {
101
+ static EventEngineDNSResolver* instance = new EventEngineDNSResolver();
102
+ return instance;
93
103
  }
94
104
 
95
- void blocking_handle_async_resolve_done(void* arg, grpc_error_handle error) {
96
- static_cast<Promise<grpc_error_handle>*>(arg)->Set(std::move(error));
105
+ OrphanablePtr<DNSResolver::Request> EventEngineDNSResolver::ResolveName(
106
+ absl::string_view name, absl::string_view default_port,
107
+ grpc_pollset_set* /* interested_parties */,
108
+ std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
109
+ on_done) {
110
+ std::unique_ptr<EventEngine::DNSResolver> dns_resolver =
111
+ GetDefaultEventEngine()->GetDNSResolver();
112
+ return MakeOrphanable<EventEngineDNSRequest>(
113
+ std::move(dns_resolver), name, default_port, std::move(on_done));
97
114
  }
98
115
 
99
- grpc_error_handle blocking_resolve_address(
100
- const char* name, const char* default_port,
101
- grpc_resolved_addresses** addresses) {
116
+ absl::StatusOr<std::vector<grpc_resolved_address>>
117
+ EventEngineDNSResolver::ResolveNameBlocking(absl::string_view name,
118
+ absl::string_view default_port) {
102
119
  grpc_closure on_done;
103
- Promise<grpc_error_handle> evt;
104
- GRPC_CLOSURE_INIT(&on_done, blocking_handle_async_resolve_done, &evt,
105
- grpc_schedule_on_exec_ctx);
106
- resolve_address(name, default_port, nullptr, &on_done, addresses);
120
+ Promise<absl::StatusOr<std::vector<grpc_resolved_address>>> evt;
121
+ auto r = ResolveName(
122
+ name, default_port,
123
+ [&evt](void(absl::StatusOr<std::vector<grpc_resolved_address>> result) {
124
+ evt.Set(std::move(result));
125
+ }));
126
+ r->Start();
107
127
  return evt.Get();
108
128
  }
109
129
 
110
- } // namespace
111
-
112
- grpc_address_resolver_vtable grpc_event_engine_resolver_vtable{
113
- resolve_address, blocking_resolve_address};
130
+ } // namespace experimental
131
+ } // namespace grpc_core
114
132
 
115
133
  #endif // GRPC_USE_EVENT_ENGINE
@@ -0,0 +1,56 @@
1
+ //
2
+ // Copyright 2015 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
16
+
17
+ #ifndef GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVER_H
18
+ #define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVER_H
19
+
20
+ #include <grpc/support/port_platform.h>
21
+
22
+ #include <string.h>
23
+ #include <sys/types.h>
24
+
25
+ #include <functional>
26
+
27
+ #include <grpc/support/alloc.h>
28
+ #include <grpc/support/log.h>
29
+ #include <grpc/support/string_util.h>
30
+ #include <grpc/support/time.h>
31
+
32
+ #include "src/core/lib/iomgr/port.h"
33
+ #include "src/core/lib/iomgr/resolve_address.h"
34
+
35
+ namespace grpc_core {
36
+ namespace experimental {
37
+
38
+ class EventEngineDNSResolver : public DNSResolver {
39
+ public:
40
+ // Gets the singleton instance, creating it first if it doesn't exist
41
+ static EventEngineDNSResolver* GetOrCreate();
42
+
43
+ OrphanablePtr<DNSResolver::Request> ResolveName(
44
+ absl::string_view name, absl::string_view default_port,
45
+ grpc_pollset_set* interested_parties,
46
+ std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
47
+ on_done) override;
48
+
49
+ absl::StatusOr<std::vector<grpc_resolved_address>> ResolveNameBlocking(
50
+ absl::string_view name, absl::string_view default_port) override;
51
+ };
52
+
53
+ } // namespace experimental
54
+ } // namespace grpc_core
55
+
56
+ #endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVER_H
@@ -27,7 +27,7 @@
27
27
  #include "src/core/lib/iomgr/error.h"
28
28
  #include "src/core/lib/profiling/timers.h"
29
29
 
30
- static void exec_ctx_run(grpc_closure* closure, grpc_error_handle error) {
30
+ static void exec_ctx_run(grpc_closure* closure) {
31
31
  #ifndef NDEBUG
32
32
  closure->scheduled = false;
33
33
  if (grpc_trace_closure.enabled()) {
@@ -37,18 +37,27 @@ static void exec_ctx_run(grpc_closure* closure, grpc_error_handle error) {
37
37
  closure->line_initiated);
38
38
  }
39
39
  #endif
40
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
41
+ grpc_error_handle error =
42
+ grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
43
+ closure->error_data.error = 0;
44
+ closure->cb(closure->cb_arg, std::move(error));
45
+ #else
46
+ grpc_error_handle error =
47
+ reinterpret_cast<grpc_error_handle>(closure->error_data.error);
48
+ closure->error_data.error = 0;
40
49
  closure->cb(closure->cb_arg, error);
50
+ GRPC_ERROR_UNREF(error);
51
+ #endif
41
52
  #ifndef NDEBUG
42
53
  if (grpc_trace_closure.enabled()) {
43
54
  gpr_log(GPR_DEBUG, "closure %p finished", closure);
44
55
  }
45
56
  #endif
46
- GRPC_ERROR_UNREF(error);
47
57
  }
48
58
 
49
- static void exec_ctx_sched(grpc_closure* closure, grpc_error_handle error) {
50
- grpc_closure_list_append(grpc_core::ExecCtx::Get()->closure_list(), closure,
51
- error);
59
+ static void exec_ctx_sched(grpc_closure* closure) {
60
+ grpc_closure_list_append(grpc_core::ExecCtx::Get()->closure_list(), closure);
52
61
  }
53
62
 
54
63
  static gpr_timespec g_start_time;
@@ -151,9 +160,8 @@ bool ExecCtx::Flush() {
151
160
  closure_list_.head = closure_list_.tail = nullptr;
152
161
  while (c != nullptr) {
153
162
  grpc_closure* next = c->next_data.next;
154
- grpc_error_handle error = c->error_data.error;
155
163
  did_something = true;
156
- exec_ctx_run(c, error);
164
+ exec_ctx_run(c);
157
165
  c = next;
158
166
  }
159
167
  } else if (!grpc_combiner_continue_exec_ctx()) {
@@ -195,7 +203,12 @@ void ExecCtx::Run(const DebugLocation& location, grpc_closure* closure,
195
203
  closure->run = false;
196
204
  GPR_ASSERT(closure->cb != nullptr);
197
205
  #endif
198
- exec_ctx_sched(closure, error);
206
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
207
+ closure->error_data.error = internal::StatusAllocHeapPtr(error);
208
+ #else
209
+ closure->error_data.error = reinterpret_cast<intptr_t>(error);
210
+ #endif
211
+ exec_ctx_sched(closure);
199
212
  }
200
213
 
201
214
  void ExecCtx::RunList(const DebugLocation& location, grpc_closure_list* list) {
@@ -218,7 +231,7 @@ void ExecCtx::RunList(const DebugLocation& location, grpc_closure_list* list) {
218
231
  c->run = false;
219
232
  GPR_ASSERT(c->cb != nullptr);
220
233
  #endif
221
- exec_ctx_sched(c, c->error_data.error);
234
+ exec_ctx_sched(c);
222
235
  c = next;
223
236
  }
224
237
  list->head = list->tail = nullptr;
@@ -114,7 +114,6 @@ size_t Executor::RunClosures(const char* executor_name,
114
114
  grpc_closure* c = list.head;
115
115
  while (c != nullptr) {
116
116
  grpc_closure* next = c->next_data.next;
117
- grpc_error_handle error = c->error_data.error;
118
117
  #ifndef NDEBUG
119
118
  EXECUTOR_TRACE("(%s) run %p [created by %s:%d]", executor_name, c,
120
119
  c->file_created, c->line_created);
@@ -122,8 +121,18 @@ size_t Executor::RunClosures(const char* executor_name,
122
121
  #else
123
122
  EXECUTOR_TRACE("(%s) run %p", executor_name, c);
124
123
  #endif
124
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
125
+ grpc_error_handle error =
126
+ internal::StatusMoveFromHeapPtr(c->error_data.error);
127
+ c->error_data.error = 0;
128
+ c->cb(c->cb_arg, std::move(error));
129
+ #else
130
+ grpc_error_handle error =
131
+ reinterpret_cast<grpc_error_handle>(c->error_data.error);
132
+ c->error_data.error = 0;
125
133
  c->cb(c->cb_arg, error);
126
134
  GRPC_ERROR_UNREF(error);
135
+ #endif
127
136
  c = next;
128
137
  n++;
129
138
  ExecCtx::Get()->Flush();
@@ -67,12 +67,13 @@ void grpc_prefork() {
67
67
  if (poll_strategy_name == nullptr ||
68
68
  (strcmp(poll_strategy_name, "epoll1") != 0 &&
69
69
  strcmp(poll_strategy_name, "poll") != 0)) {
70
- gpr_log(GPR_INFO,
70
+ gpr_log(GPR_ERROR,
71
71
  "Fork support is only compatible with the epoll1 and poll polling "
72
72
  "strategies");
73
+ return;
73
74
  }
74
75
  if (!grpc_core::Fork::BlockExecCtx()) {
75
- gpr_log(GPR_INFO,
76
+ gpr_log(GPR_ERROR,
76
77
  "Other threads are currently calling into gRPC, skipping fork() "
77
78
  "handlers");
78
79
  return;
@@ -68,7 +68,10 @@ void grpc_custom_iomgr_init(grpc_socket_vtable* socket,
68
68
  grpc_custom_timer_init(timer);
69
69
  grpc_custom_pollset_init(poller);
70
70
  grpc_custom_pollset_set_init();
71
- grpc_custom_resolver_init(resolver);
71
+ grpc_core::CustomDNSResolver::Create(resolver);
72
+ grpc_core::CustomDNSResolver* custom_dns_resolver =
73
+ grpc_core::CustomDNSResolver::Get();
74
+ grpc_core::SetDNSResolver(custom_dns_resolver);
72
75
  grpc_set_iomgr_platform_vtable(&vtable);
73
76
  }
74
77
 
@@ -26,6 +26,7 @@
26
26
  #include "src/core/lib/iomgr/ev_posix.h"
27
27
  #include "src/core/lib/iomgr/iomgr_internal.h"
28
28
  #include "src/core/lib/iomgr/resolve_address.h"
29
+ #include "src/core/lib/iomgr/resolve_address_posix.h"
29
30
  #include "src/core/lib/iomgr/tcp_client.h"
30
31
  #include "src/core/lib/iomgr/tcp_posix.h"
31
32
  #include "src/core/lib/iomgr/tcp_server.h"
@@ -36,7 +37,6 @@ extern grpc_tcp_client_vtable grpc_posix_tcp_client_vtable;
36
37
  extern grpc_timer_vtable grpc_generic_timer_vtable;
37
38
  extern grpc_pollset_vtable grpc_posix_pollset_vtable;
38
39
  extern grpc_pollset_set_vtable grpc_posix_pollset_set_vtable;
39
- extern grpc_address_resolver_vtable grpc_posix_resolver_vtable;
40
40
 
41
41
  static void iomgr_platform_init(void) {
42
42
  grpc_wakeup_fd_global_init();
@@ -79,7 +79,7 @@ void grpc_set_default_iomgr_platform() {
79
79
  grpc_set_timer_impl(&grpc_generic_timer_vtable);
80
80
  grpc_set_pollset_vtable(&grpc_posix_pollset_vtable);
81
81
  grpc_set_pollset_set_vtable(&grpc_posix_pollset_set_vtable);
82
- grpc_set_resolver_impl(&grpc_posix_resolver_vtable);
82
+ grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
83
83
  grpc_set_iomgr_platform_vtable(&vtable);
84
84
  }
85
85
 
@@ -41,6 +41,7 @@
41
41
  #include "src/core/lib/iomgr/ev_posix.h"
42
42
  #include "src/core/lib/iomgr/iomgr_internal.h"
43
43
  #include "src/core/lib/iomgr/resolve_address.h"
44
+ #include "src/core/lib/iomgr/resolve_address_posix.h"
44
45
  #include "src/core/lib/iomgr/tcp_client.h"
45
46
  #include "src/core/lib/iomgr/tcp_posix.h"
46
47
  #include "src/core/lib/iomgr/tcp_server.h"
@@ -55,7 +56,6 @@ extern grpc_tcp_client_vtable grpc_cfstream_client_vtable;
55
56
  extern grpc_timer_vtable grpc_generic_timer_vtable;
56
57
  extern grpc_pollset_vtable grpc_posix_pollset_vtable;
57
58
  extern grpc_pollset_set_vtable grpc_posix_pollset_set_vtable;
58
- extern grpc_address_resolver_vtable grpc_posix_resolver_vtable;
59
59
 
60
60
  static void apple_iomgr_platform_init(void) { grpc_pollset_global_init(); }
61
61
 
@@ -178,7 +178,7 @@ void grpc_set_default_iomgr_platform() {
178
178
  grpc_set_iomgr_platform_vtable(&apple_vtable);
179
179
  }
180
180
  grpc_set_timer_impl(&grpc_generic_timer_vtable);
181
- grpc_set_resolver_impl(&grpc_posix_resolver_vtable);
181
+ grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
182
182
  }
183
183
 
184
184
  bool grpc_iomgr_run_in_background() {
@@ -28,6 +28,7 @@
28
28
  #include "src/core/lib/iomgr/iomgr.h"
29
29
  #include "src/core/lib/iomgr/pollset_windows.h"
30
30
  #include "src/core/lib/iomgr/resolve_address.h"
31
+ #include "src/core/lib/iomgr/resolve_address_windows.h"
31
32
  #include "src/core/lib/iomgr/sockaddr_windows.h"
32
33
  #include "src/core/lib/iomgr/socket_windows.h"
33
34
  #include "src/core/lib/iomgr/tcp_client.h"
@@ -39,7 +40,6 @@ extern grpc_tcp_client_vtable grpc_windows_tcp_client_vtable;
39
40
  extern grpc_timer_vtable grpc_generic_timer_vtable;
40
41
  extern grpc_pollset_vtable grpc_windows_pollset_vtable;
41
42
  extern grpc_pollset_set_vtable grpc_windows_pollset_set_vtable;
42
- extern grpc_address_resolver_vtable grpc_windows_resolver_vtable;
43
43
 
44
44
  /* Windows' io manager is going to be fully designed using IO completion
45
45
  ports. All of what we're doing here is basically make sure that
@@ -96,7 +96,7 @@ void grpc_set_default_iomgr_platform() {
96
96
  grpc_set_timer_impl(&grpc_generic_timer_vtable);
97
97
  grpc_set_pollset_vtable(&grpc_windows_pollset_vtable);
98
98
  grpc_set_pollset_set_vtable(&grpc_windows_pollset_set_vtable);
99
- grpc_set_resolver_impl(&grpc_windows_resolver_vtable);
99
+ grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
100
100
  grpc_set_iomgr_platform_vtable(&vtable);
101
101
  }
102
102
 
@@ -73,9 +73,9 @@
73
73
  #if __GLIBC_PREREQ(2, 10)
74
74
  #define GRPC_LINUX_SOCKETUTILS 1
75
75
  #endif
76
- #if !(__GLIBC_PREREQ(2, 17))
76
+ #if !(__GLIBC_PREREQ(2, 18))
77
77
  /*
78
- * TCP_USER_TIMEOUT wasn't imported to glibc until 2.17. Use Linux system
78
+ * TCP_USER_TIMEOUT wasn't imported to glibc until 2.18. Use Linux system
79
79
  * header instead.
80
80
  */
81
81
  #define GRPC_LINUX_TCP_H 1
@@ -24,32 +24,13 @@
24
24
 
25
25
  namespace grpc_core {
26
26
  const char* kDefaultSecurePort = "https";
27
- } // namespace grpc_core
28
-
29
- grpc_address_resolver_vtable* grpc_resolve_address_impl;
30
27
 
31
- void grpc_set_resolver_impl(grpc_address_resolver_vtable* vtable) {
32
- grpc_resolve_address_impl = vtable;
28
+ namespace {
29
+ DNSResolver* g_dns_resolver;
33
30
  }
34
31
 
35
- void grpc_resolve_address(const char* addr, const char* default_port,
36
- grpc_pollset_set* interested_parties,
37
- grpc_closure* on_done,
38
- grpc_resolved_addresses** addresses) {
39
- grpc_resolve_address_impl->resolve_address(
40
- addr, default_port, interested_parties, on_done, addresses);
41
- }
32
+ void SetDNSResolver(DNSResolver* resolver) { g_dns_resolver = resolver; }
42
33
 
43
- void grpc_resolved_addresses_destroy(grpc_resolved_addresses* addresses) {
44
- if (addresses != nullptr) {
45
- gpr_free(addresses->addrs);
46
- }
47
- gpr_free(addresses);
48
- }
34
+ DNSResolver* GetDNSResolver() { return g_dns_resolver; }
49
35
 
50
- grpc_error_handle grpc_blocking_resolve_address(
51
- const char* name, const char* default_port,
52
- grpc_resolved_addresses** addresses) {
53
- return grpc_resolve_address_impl->blocking_resolve_address(name, default_port,
54
- addresses);
55
- }
36
+ } // namespace grpc_core