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
@@ -21,7 +21,8 @@
21
21
 
22
22
  #include "absl/status/statusor.h"
23
23
 
24
- #include "src/core/ext/service_config/service_config.h"
24
+ #include "src/core/lib/gprpp/dual_ref_counted.h"
25
+ #include "src/core/lib/service_config/service_config.h"
25
26
  #include "src/core/lib/transport/metadata_batch.h"
26
27
 
27
28
  namespace grpc_core {
@@ -45,7 +46,7 @@ class ServerConfigSelector : public RefCounted<ServerConfigSelector> {
45
46
  // ServerConfigSelectorProvider allows for subscribers to watch for updates on
46
47
  // ServerConfigSelector. It is propagated via channel args.
47
48
  class ServerConfigSelectorProvider
48
- : public RefCounted<ServerConfigSelectorProvider> {
49
+ : public DualRefCounted<ServerConfigSelectorProvider> {
49
50
  public:
50
51
  class ServerConfigSelectorWatcher {
51
52
  public:
@@ -21,7 +21,7 @@
21
21
  #include "src/core/ext/filters/server_config_selector/server_config_selector_filter.h"
22
22
 
23
23
  #include "src/core/ext/filters/server_config_selector/server_config_selector.h"
24
- #include "src/core/ext/service_config/service_config_call_data.h"
24
+ #include "src/core/lib/service_config/service_config_call_data.h"
25
25
  #include "src/core/lib/transport/error_utils.h"
26
26
 
27
27
  namespace grpc_core {
@@ -36,7 +36,7 @@ class ChannelData {
36
36
 
37
37
  absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector() {
38
38
  MutexLock lock(&mu_);
39
- return config_selector_;
39
+ return config_selector_.value();
40
40
  }
41
41
 
42
42
  private:
@@ -60,8 +60,8 @@ class ChannelData {
60
60
 
61
61
  RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider_;
62
62
  Mutex mu_;
63
- absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector_
64
- ABSL_GUARDED_BY(mu_);
63
+ absl::optional<absl::StatusOr<RefCountedPtr<ServerConfigSelector>>>
64
+ config_selector_ ABSL_GUARDED_BY(mu_);
65
65
  };
66
66
 
67
67
  class CallData {
@@ -103,7 +103,7 @@ class CallData {
103
103
 
104
104
  grpc_error_handle ChannelData::Init(grpc_channel_element* elem,
105
105
  grpc_channel_element_args* args) {
106
- GPR_ASSERT(elem->filter = &kServerConfigSelectorFilter);
106
+ GPR_ASSERT(elem->filter == &kServerConfigSelectorFilter);
107
107
  RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider =
108
108
  ServerConfigSelectorProvider::GetFromChannelArgs(*args->channel_args);
109
109
  if (server_config_selector_provider == nullptr) {
@@ -127,8 +127,13 @@ ChannelData::ChannelData(
127
127
  GPR_ASSERT(server_config_selector_provider_ != nullptr);
128
128
  auto server_config_selector_watcher =
129
129
  absl::make_unique<ServerConfigSelectorWatcher>(this);
130
- config_selector_ = server_config_selector_provider_->Watch(
130
+ auto config_selector = server_config_selector_provider_->Watch(
131
131
  std::move(server_config_selector_watcher));
132
+ MutexLock lock(&mu_);
133
+ // It's possible for the watcher to have already updated config_selector_
134
+ if (!config_selector_.has_value()) {
135
+ config_selector_ = std::move(config_selector);
136
+ }
132
137
  }
133
138
 
134
139
  ChannelData::~ChannelData() { server_config_selector_provider_->CancelWatch(); }
@@ -23,9 +23,9 @@
23
23
  #include <grpc/support/string_util.h>
24
24
 
25
25
  #include "src/core/ext/filters/client_channel/client_channel.h"
26
- #include "src/core/ext/filters/client_channel/resolver_registry.h"
27
26
  #include "src/core/ext/transport/chttp2/client/chttp2_connector.h"
28
27
  #include "src/core/lib/channel/channel_args.h"
28
+ #include "src/core/lib/resolver/resolver_registry.h"
29
29
  #include "src/core/lib/resource_quota/api.h"
30
30
  #include "src/core/lib/surface/api_trace.h"
31
31
  #include "src/core/lib/surface/channel.h"
@@ -23,11 +23,11 @@
23
23
  #include <grpc/support/string_util.h>
24
24
 
25
25
  #include "src/core/ext/filters/client_channel/client_channel.h"
26
- #include "src/core/ext/filters/client_channel/resolver_registry.h"
27
26
  #include "src/core/ext/transport/chttp2/client/chttp2_connector.h"
28
27
  #include "src/core/lib/address_utils/sockaddr_utils.h"
29
28
  #include "src/core/lib/channel/channel_args.h"
30
29
  #include "src/core/lib/gprpp/memory.h"
30
+ #include "src/core/lib/resolver/resolver_registry.h"
31
31
  #include "src/core/lib/resource_quota/api.h"
32
32
  #include "src/core/lib/security/credentials/credentials.h"
33
33
  #include "src/core/lib/security/security_connector/security_connector.h"
@@ -55,6 +55,7 @@
55
55
  #include "src/core/lib/slice/slice_internal.h"
56
56
  #include "src/core/lib/surface/api_trace.h"
57
57
  #include "src/core/lib/surface/server.h"
58
+ #include "src/core/lib/transport/error_utils.h"
58
59
  #include "src/core/lib/uri/uri_parser.h"
59
60
 
60
61
  namespace grpc_core {
@@ -160,6 +161,7 @@ class Chttp2ServerListener : public Server::ListenerInterface {
160
161
 
161
162
  private:
162
163
  static void OnClose(void* arg, grpc_error_handle error);
164
+ static void OnDrainGraceTimeExpiry(void* arg, grpc_error_handle error);
163
165
 
164
166
  RefCountedPtr<Chttp2ServerListener> listener_;
165
167
  Mutex mu_ ABSL_ACQUIRED_AFTER(&listener_->mu_);
@@ -170,6 +172,10 @@ class Chttp2ServerListener : public Server::ListenerInterface {
170
172
  // created.
171
173
  grpc_chttp2_transport* transport_ ABSL_GUARDED_BY(&mu_) = nullptr;
172
174
  grpc_closure on_close_;
175
+ grpc_timer drain_grace_timer_;
176
+ grpc_closure on_drain_grace_time_expiry_;
177
+ bool drain_grace_timer_expiry_callback_pending_ ABSL_GUARDED_BY(&mu_) =
178
+ false;
173
179
  bool shutdown_ ABSL_GUARDED_BY(&mu_) = false;
174
180
  };
175
181
 
@@ -221,10 +227,9 @@ class Chttp2ServerListener : public Server::ListenerInterface {
221
227
  Chttp2ServerArgsModifier const args_modifier_;
222
228
  ConfigFetcherWatcher* config_fetcher_watcher_ = nullptr;
223
229
  grpc_channel_args* args_;
224
- Mutex connection_manager_mu_;
225
- RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
226
- connection_manager_ ABSL_GUARDED_BY(connection_manager_mu_);
227
230
  Mutex mu_;
231
+ RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
232
+ connection_manager_ ABSL_GUARDED_BY(mu_);
228
233
  // Signals whether grpc_tcp_server_start() has been called.
229
234
  bool started_ ABSL_GUARDED_BY(mu_) = false;
230
235
  // Signals whether grpc_tcp_server_start() has completed.
@@ -250,13 +255,31 @@ void Chttp2ServerListener::ConfigFetcherWatcher::UpdateConnectionManager(
250
255
  connection_manager) {
251
256
  RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
252
257
  connection_manager_to_destroy;
258
+ class GracefulShutdownExistingConnections {
259
+ public:
260
+ ~GracefulShutdownExistingConnections() {
261
+ // Send GOAWAYs on the transports so that they get disconnected when
262
+ // existing RPCs finish, and so that no new RPC is started on them.
263
+ for (auto& connection : connections_) {
264
+ connection.first->SendGoAway();
265
+ }
266
+ }
267
+
268
+ void set_connections(
269
+ std::map<ActiveConnection*, OrphanablePtr<ActiveConnection>>
270
+ connections) {
271
+ GPR_ASSERT(connections_.empty());
272
+ connections_ = std::move(connections);
273
+ }
274
+
275
+ private:
276
+ std::map<ActiveConnection*, OrphanablePtr<ActiveConnection>> connections_;
277
+ } connections_to_shutdown;
253
278
  {
254
- MutexLock lock(&listener_->connection_manager_mu_);
279
+ MutexLock lock(&listener_->mu_);
255
280
  connection_manager_to_destroy = listener_->connection_manager_;
256
281
  listener_->connection_manager_ = std::move(connection_manager);
257
- }
258
- {
259
- MutexLock lock(&listener_->mu_);
282
+ connections_to_shutdown.set_connections(std::move(listener_->connections_));
260
283
  if (listener_->shutdown_) {
261
284
  return;
262
285
  }
@@ -525,7 +548,21 @@ void Chttp2ServerListener::ActiveConnection::SendGoAway() {
525
548
  grpc_chttp2_transport* transport = nullptr;
526
549
  {
527
550
  MutexLock lock(&mu_);
528
- transport = transport_;
551
+ if (transport_ != nullptr && !shutdown_) {
552
+ transport = transport_;
553
+ Ref().release(); // Ref held by OnDrainGraceTimeExpiry
554
+ GRPC_CLOSURE_INIT(&on_drain_grace_time_expiry_, OnDrainGraceTimeExpiry,
555
+ this, nullptr);
556
+ grpc_timer_init(&drain_grace_timer_,
557
+ ExecCtx::Get()->Now() +
558
+ grpc_channel_args_find_integer(
559
+ listener_->args_,
560
+ GRPC_ARG_SERVER_CONFIG_CHANGE_DRAIN_GRACE_TIME_MS,
561
+ {10 * 60 * GPR_MS_PER_SEC, 0, INT_MAX}),
562
+ &on_drain_grace_time_expiry_);
563
+ drain_grace_timer_expiry_callback_pending_ = true;
564
+ shutdown_ = true;
565
+ }
529
566
  }
530
567
  if (transport != nullptr) {
531
568
  grpc_transport_op* op = grpc_make_transport_op(nullptr);
@@ -565,11 +602,35 @@ void Chttp2ServerListener::ActiveConnection::OnClose(
565
602
  connection = std::move(it->second);
566
603
  self->listener_->connections_.erase(it);
567
604
  }
605
+ self->shutdown_ = true;
606
+ }
607
+ // Cancel the drain_grace_timer_ if needed.
608
+ if (self->drain_grace_timer_expiry_callback_pending_) {
609
+ grpc_timer_cancel(&self->drain_grace_timer_);
568
610
  }
569
611
  }
570
612
  self->Unref();
571
613
  }
572
614
 
615
+ void Chttp2ServerListener::ActiveConnection::OnDrainGraceTimeExpiry(
616
+ void* arg, grpc_error_handle error) {
617
+ ActiveConnection* self = static_cast<ActiveConnection*>(arg);
618
+ // If the drain_grace_timer_ was not cancelled, disconnect the transport
619
+ // immediately.
620
+ if (error == GRPC_ERROR_NONE) {
621
+ grpc_chttp2_transport* transport = nullptr;
622
+ {
623
+ MutexLock lock(&self->mu_);
624
+ transport = self->transport_;
625
+ }
626
+ grpc_transport_op* op = grpc_make_transport_op(nullptr);
627
+ op->disconnect_with_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
628
+ "Drain grace time expired. Closing connection immediately.");
629
+ grpc_transport_perform_op(&transport->base, op);
630
+ }
631
+ self->Unref();
632
+ }
633
+
573
634
  //
574
635
  // Chttp2ServerListener
575
636
  //
@@ -700,7 +761,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
700
761
  RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
701
762
  connection_manager;
702
763
  {
703
- MutexLock lock(&self->connection_manager_mu_);
764
+ MutexLock lock(&self->mu_);
704
765
  connection_manager = self->connection_manager_;
705
766
  }
706
767
  auto endpoint_cleanup = [&](grpc_error_handle error) {
@@ -751,8 +812,10 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
751
812
  RefCountedPtr<Chttp2ServerListener> listener_ref;
752
813
  {
753
814
  MutexLock lock(&self->mu_);
754
- // Shutdown the the connection if listener's stopped serving.
755
- if (!self->shutdown_ && self->is_serving_) {
815
+ // Shutdown the the connection if listener's stopped serving or if the
816
+ // connection manager has changed.
817
+ if (!self->shutdown_ && self->is_serving_ &&
818
+ connection_manager == self->connection_manager_) {
756
819
  // This ref needs to be taken in the critical region after having made
757
820
  // sure that the listener has not been Orphaned, so as to avoid
758
821
  // heap-use-after-free issues where `Ref()` is invoked when the ref of
@@ -825,7 +888,7 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
825
888
  args_modifier);
826
889
  }
827
890
  *port_num = -1;
828
- grpc_resolved_addresses* resolved = nullptr;
891
+ absl::StatusOr<std::vector<grpc_resolved_address>> resolved_or;
829
892
  std::vector<grpc_error_handle> error_list;
830
893
  std::string parsed_addr = URI::PercentDecode(addr);
831
894
  absl::string_view parsed_addr_unprefixed{parsed_addr};
@@ -833,26 +896,26 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
833
896
  grpc_error_handle error = [&]() {
834
897
  grpc_error_handle error = GRPC_ERROR_NONE;
835
898
  if (absl::ConsumePrefix(&parsed_addr_unprefixed, kUnixUriPrefix)) {
836
- error =
837
- grpc_resolve_unix_domain_address(parsed_addr_unprefixed, &resolved);
899
+ resolved_or = grpc_resolve_unix_domain_address(parsed_addr_unprefixed);
838
900
  } else if (absl::ConsumePrefix(&parsed_addr_unprefixed,
839
901
  kUnixAbstractUriPrefix)) {
840
- error = grpc_resolve_unix_abstract_domain_address(parsed_addr_unprefixed,
841
- &resolved);
902
+ resolved_or =
903
+ grpc_resolve_unix_abstract_domain_address(parsed_addr_unprefixed);
842
904
  } else {
843
- error = grpc_blocking_resolve_address(parsed_addr.c_str(), "https",
844
- &resolved);
905
+ resolved_or = GetDNSResolver()->ResolveNameBlocking(parsed_addr, "https");
906
+ }
907
+ if (!resolved_or.ok()) {
908
+ return absl_status_to_grpc_error(resolved_or.status());
845
909
  }
846
- if (error != GRPC_ERROR_NONE) return error;
847
910
  // Create a listener for each resolved address.
848
- for (size_t i = 0; i < resolved->naddrs; i++) {
911
+ for (auto& addr : *resolved_or) {
849
912
  // If address has a wildcard port (0), use the same port as a previous
850
913
  // listener.
851
- if (*port_num != -1 && grpc_sockaddr_get_port(&resolved->addrs[i]) == 0) {
852
- grpc_sockaddr_set_port(&resolved->addrs[i], *port_num);
914
+ if (*port_num != -1 && grpc_sockaddr_get_port(&addr) == 0) {
915
+ grpc_sockaddr_set_port(&addr, *port_num);
853
916
  }
854
917
  int port_temp = -1;
855
- error = Chttp2ServerListener::Create(server, &resolved->addrs[i],
918
+ error = Chttp2ServerListener::Create(server, &addr,
856
919
  grpc_channel_args_copy(args),
857
920
  args_modifier, &port_temp);
858
921
  if (error != GRPC_ERROR_NONE) {
@@ -865,17 +928,17 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
865
928
  }
866
929
  }
867
930
  }
868
- if (error_list.size() == resolved->naddrs) {
931
+ if (error_list.size() == resolved_or->size()) {
869
932
  std::string msg =
870
933
  absl::StrFormat("No address added out of total %" PRIuPTR " resolved",
871
- resolved->naddrs);
934
+ resolved_or->size());
872
935
  return GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
873
936
  msg.c_str(), error_list.data(), error_list.size());
874
937
  } else if (!error_list.empty()) {
875
938
  std::string msg = absl::StrFormat(
876
939
  "Only %" PRIuPTR " addresses added out of total %" PRIuPTR
877
940
  " resolved",
878
- resolved->naddrs - error_list.size(), resolved->naddrs);
941
+ resolved_or->size() - error_list.size(), resolved_or->size());
879
942
  error = GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
880
943
  msg.c_str(), error_list.data(), error_list.size());
881
944
  gpr_log(GPR_INFO, "WARNING: %s", grpc_error_std_string(error).c_str());
@@ -888,9 +951,6 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
888
951
  GRPC_ERROR_UNREF(error);
889
952
  }
890
953
  grpc_channel_args_destroy(args);
891
- if (resolved != nullptr) {
892
- grpc_resolved_addresses_destroy(resolved);
893
- }
894
954
  if (error != GRPC_ERROR_NONE) *port_num = 0;
895
955
  return error;
896
956
  }
@@ -21,7 +21,6 @@
21
21
  #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
22
22
  #include "src/core/lib/debug/trace.h"
23
23
  #include "src/core/lib/gprpp/global_config.h"
24
- #include "src/core/lib/transport/metadata.h"
25
24
 
26
25
  GPR_GLOBAL_CONFIG_DEFINE_BOOL(
27
26
  grpc_experimental_disable_flow_control, false,