grpc 1.37.1 → 1.38.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (544) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +64 -58
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/channel_args.h +28 -0
  5. data/include/grpc/event_engine/event_engine.h +336 -0
  6. data/include/grpc/event_engine/port.h +39 -0
  7. data/include/grpc/event_engine/slice_allocator.h +81 -0
  8. data/include/grpc/grpc.h +2 -2
  9. data/include/grpc/grpc_security_constants.h +14 -0
  10. data/include/grpc/impl/codegen/grpc_types.h +11 -0
  11. data/include/grpc/impl/codegen/port_platform.h +5 -0
  12. data/include/grpc/module.modulemap +14 -14
  13. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  14. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  15. data/src/core/ext/filters/client_channel/client_channel.cc +628 -3101
  16. data/src/core/ext/filters/client_channel/client_channel.h +489 -55
  17. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  18. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  20. data/src/core/ext/filters/client_channel/connector.h +1 -1
  21. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  22. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  23. data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
  24. data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
  25. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  26. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
  34. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  35. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
  41. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  42. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  43. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  54. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
  55. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  56. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  57. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -11
  58. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +43 -28
  60. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  61. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  62. data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
  63. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  64. data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
  65. data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
  66. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  67. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  68. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  69. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  70. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  71. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  72. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  73. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  74. data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
  75. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  76. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
  77. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  78. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  79. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  80. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  81. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  82. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  83. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  84. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  85. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  86. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  87. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  88. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  89. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  90. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  91. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
  92. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  93. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
  94. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  95. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  96. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
  97. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  98. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
  99. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  100. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  101. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  102. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  103. data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
  104. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  105. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  106. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  107. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  108. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  109. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  110. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  111. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  112. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  113. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  114. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  115. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  116. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  117. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  118. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  119. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  120. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/internal.h +31 -27
  122. data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
  123. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  124. data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
  125. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  126. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  127. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  128. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  129. data/src/core/ext/xds/xds_api.cc +101 -93
  130. data/src/core/ext/xds/xds_api.h +6 -6
  131. data/src/core/ext/xds/xds_bootstrap.cc +97 -159
  132. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  133. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  134. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  135. data/src/core/ext/xds/xds_channel_args.h +5 -2
  136. data/src/core/ext/xds/xds_client.cc +310 -178
  137. data/src/core/ext/xds/xds_client.h +41 -27
  138. data/src/core/ext/xds/xds_client_stats.h +3 -2
  139. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  140. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  141. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  142. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +3 -20
  143. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
  144. data/src/core/lib/channel/channel_stack.cc +10 -9
  145. data/src/core/lib/channel/channel_stack.h +10 -9
  146. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  147. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  148. data/src/core/lib/channel/channelz.cc +21 -13
  149. data/src/core/lib/channel/connected_channel.cc +4 -4
  150. data/src/core/lib/channel/handshaker.cc +7 -6
  151. data/src/core/lib/channel/handshaker.h +5 -5
  152. data/src/core/lib/event_engine/slice_allocator.cc +59 -0
  153. data/src/core/lib/event_engine/sockaddr.cc +38 -0
  154. data/src/core/lib/gprpp/ref_counted.h +28 -14
  155. data/src/core/lib/gprpp/status_helper.cc +407 -0
  156. data/src/core/lib/gprpp/status_helper.h +180 -0
  157. data/src/core/lib/http/httpcli.cc +11 -11
  158. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  159. data/src/core/lib/http/parser.cc +16 -16
  160. data/src/core/lib/http/parser.h +4 -4
  161. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  162. data/src/core/lib/iomgr/buffer_list.h +4 -5
  163. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  164. data/src/core/lib/iomgr/call_combiner.h +12 -14
  165. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  166. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  167. data/src/core/lib/iomgr/closure.h +7 -6
  168. data/src/core/lib/iomgr/combiner.cc +14 -12
  169. data/src/core/lib/iomgr/combiner.h +2 -2
  170. data/src/core/lib/iomgr/endpoint.cc +1 -1
  171. data/src/core/lib/iomgr/endpoint.h +2 -2
  172. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  173. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  174. data/src/core/lib/iomgr/error.cc +167 -61
  175. data/src/core/lib/iomgr/error.h +217 -106
  176. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  177. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  178. data/src/core/lib/iomgr/error_internal.h +5 -1
  179. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  180. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  181. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  182. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  183. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  184. data/src/core/lib/iomgr/ev_posix.h +9 -9
  185. data/src/core/lib/iomgr/exec_ctx.cc +4 -4
  186. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  187. data/src/core/lib/iomgr/executor.cc +8 -8
  188. data/src/core/lib/iomgr/executor.h +2 -2
  189. data/src/core/lib/iomgr/iomgr.cc +1 -1
  190. data/src/core/lib/iomgr/iomgr.h +1 -1
  191. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  192. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  193. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  194. data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
  195. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  196. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  197. data/src/core/lib/iomgr/load_file.cc +4 -4
  198. data/src/core/lib/iomgr/load_file.h +2 -2
  199. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  200. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  201. data/src/core/lib/iomgr/pollset.cc +5 -5
  202. data/src/core/lib/iomgr/pollset.h +9 -9
  203. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  204. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  205. data/src/core/lib/iomgr/port.h +1 -1
  206. data/src/core/lib/iomgr/python_util.h +1 -1
  207. data/src/core/lib/iomgr/resolve_address.cc +3 -3
  208. data/src/core/lib/iomgr/resolve_address.h +6 -6
  209. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  210. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  211. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  212. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  213. data/src/core/lib/iomgr/resource_quota.cc +11 -10
  214. data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
  215. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  216. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  217. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  218. data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
  219. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  220. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  221. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  222. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  223. data/src/core/lib/iomgr/tcp_posix.cc +36 -34
  224. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  225. data/src/core/lib/iomgr/tcp_server.h +12 -11
  226. data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
  227. data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
  228. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  229. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
  230. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  231. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  232. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  233. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  234. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  235. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  236. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  237. data/src/core/lib/iomgr/timer_custom.h +1 -1
  238. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  239. data/src/core/lib/iomgr/udp_server.cc +21 -20
  240. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  241. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  242. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  243. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  244. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  245. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  246. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  247. data/src/core/lib/iomgr/work_serializer.h +17 -1
  248. data/src/core/lib/json/json.h +1 -1
  249. data/src/core/lib/json/json_reader.cc +4 -4
  250. data/src/core/lib/matchers/matchers.cc +39 -39
  251. data/src/core/lib/matchers/matchers.h +28 -28
  252. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  253. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  254. data/src/core/lib/security/credentials/credentials.h +2 -2
  255. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  256. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  257. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  258. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  259. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  260. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  261. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  262. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  263. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  264. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  265. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  266. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  267. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
  268. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  269. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  270. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  271. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  272. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  273. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  274. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  275. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  276. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  277. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  278. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  279. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  280. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  281. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  282. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  283. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  284. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  285. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  286. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  287. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  288. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
  289. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  290. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  291. data/src/core/lib/security/security_connector/ssl_utils.cc +22 -4
  292. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  293. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
  294. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  295. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  296. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  297. data/src/core/lib/security/transport/security_handshaker.cc +33 -32
  298. data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
  299. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  300. data/src/core/lib/security/transport/tsi_error.h +2 -1
  301. data/src/core/lib/security/util/json_util.cc +2 -2
  302. data/src/core/lib/security/util/json_util.h +1 -1
  303. data/src/core/lib/surface/call.cc +46 -45
  304. data/src/core/lib/surface/call.h +2 -2
  305. data/src/core/lib/surface/channel.cc +6 -6
  306. data/src/core/lib/surface/channel.h +3 -2
  307. data/src/core/lib/surface/channel_ping.cc +1 -1
  308. data/src/core/lib/surface/completion_queue.cc +46 -47
  309. data/src/core/lib/surface/completion_queue.h +2 -1
  310. data/src/core/lib/surface/lame_client.cc +11 -11
  311. data/src/core/lib/surface/lame_client.h +1 -1
  312. data/src/core/lib/surface/server.cc +28 -22
  313. data/src/core/lib/surface/server.h +16 -15
  314. data/src/core/lib/surface/validate_metadata.cc +7 -7
  315. data/src/core/lib/surface/validate_metadata.h +3 -2
  316. data/src/core/lib/surface/version.cc +4 -2
  317. data/src/core/lib/transport/byte_stream.cc +5 -5
  318. data/src/core/lib/transport/byte_stream.h +8 -8
  319. data/src/core/lib/transport/connectivity_state.cc +1 -1
  320. data/src/core/lib/transport/error_utils.cc +19 -8
  321. data/src/core/lib/transport/error_utils.h +11 -5
  322. data/src/core/lib/transport/metadata_batch.cc +37 -37
  323. data/src/core/lib/transport/metadata_batch.h +19 -18
  324. data/src/core/lib/transport/transport.cc +4 -3
  325. data/src/core/lib/transport/transport.h +4 -4
  326. data/src/core/lib/transport/transport_op_string.cc +5 -5
  327. data/src/core/tsi/alts/crypt/gsec.h +4 -0
  328. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  329. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  330. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  331. data/src/core/tsi/ssl_transport_security.cc +32 -14
  332. data/src/core/tsi/ssl_transport_security.h +3 -4
  333. data/src/ruby/bin/math_services_pb.rb +1 -1
  334. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  335. data/src/ruby/lib/grpc/version.rb +1 -1
  336. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  337. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  338. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  339. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  340. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  341. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  342. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  343. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  344. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  345. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  346. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  347. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  348. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  349. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  350. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  351. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  352. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  353. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  354. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  355. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  356. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  357. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  358. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  359. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  360. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  361. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  362. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  363. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  364. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  365. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  366. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  367. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  368. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  369. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  370. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  371. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  372. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  373. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  374. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  375. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  376. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  377. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  378. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  379. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  380. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  381. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  382. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  383. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  384. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  385. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  387. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  388. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  389. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  390. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  391. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  392. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  393. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  394. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  395. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  396. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  397. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  398. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  399. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  400. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  401. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  402. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  403. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  404. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  405. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  406. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  407. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  408. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  409. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  410. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  411. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  412. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  413. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  414. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  415. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  416. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  417. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  418. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  420. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  421. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  422. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  423. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  424. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  425. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  426. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  427. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  428. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  429. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  430. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  431. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  432. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  433. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  434. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  435. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  436. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  437. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  438. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  439. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  440. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  441. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  442. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  443. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  444. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  445. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  446. data/third_party/boringssl-with-bazel/err_data.c +477 -461
  447. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  448. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
  449. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  450. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  451. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  452. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  453. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  454. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  455. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  456. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  457. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  458. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  459. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  460. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  461. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  462. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  463. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
  464. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  465. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  467. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  468. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  469. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
  470. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
  471. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  472. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  473. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  474. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  475. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  476. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  477. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  478. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  479. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  480. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
  481. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
  482. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
  483. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
  484. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
  485. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  486. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  487. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  488. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
  489. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  490. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  491. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  504. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  505. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  506. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  507. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
  508. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  509. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  511. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  512. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  513. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
  514. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  515. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
  516. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  517. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  518. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
  519. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  520. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  521. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +185 -17
  522. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  523. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -121
  524. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
  525. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
  526. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
  527. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
  528. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
  529. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
  530. data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
  531. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
  532. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  533. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  534. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
  535. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +98 -64
  536. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
  537. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
  538. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  539. metadata +68 -45
  540. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  541. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  542. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  543. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  544. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
@@ -48,7 +48,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
48
48
  public:
49
49
  virtual ~ListenerWatcherInterface() = default;
50
50
  virtual void OnListenerChanged(XdsApi::LdsUpdate listener) = 0;
51
- virtual void OnError(grpc_error* error) = 0;
51
+ virtual void OnError(grpc_error_handle error) = 0;
52
52
  virtual void OnResourceDoesNotExist() = 0;
53
53
  };
54
54
 
@@ -57,7 +57,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
57
57
  public:
58
58
  virtual ~RouteConfigWatcherInterface() = default;
59
59
  virtual void OnRouteConfigChanged(XdsApi::RdsUpdate route_config) = 0;
60
- virtual void OnError(grpc_error* error) = 0;
60
+ virtual void OnError(grpc_error_handle error) = 0;
61
61
  virtual void OnResourceDoesNotExist() = 0;
62
62
  };
63
63
 
@@ -66,7 +66,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
66
66
  public:
67
67
  virtual ~ClusterWatcherInterface() = default;
68
68
  virtual void OnClusterChanged(XdsApi::CdsUpdate cluster_data) = 0;
69
- virtual void OnError(grpc_error* error) = 0;
69
+ virtual void OnError(grpc_error_handle error) = 0;
70
70
  virtual void OnResourceDoesNotExist() = 0;
71
71
  };
72
72
 
@@ -75,17 +75,19 @@ class XdsClient : public DualRefCounted<XdsClient> {
75
75
  public:
76
76
  virtual ~EndpointWatcherInterface() = default;
77
77
  virtual void OnEndpointChanged(XdsApi::EdsUpdate update) = 0;
78
- virtual void OnError(grpc_error* error) = 0;
78
+ virtual void OnError(grpc_error_handle error) = 0;
79
79
  virtual void OnResourceDoesNotExist() = 0;
80
80
  };
81
81
 
82
82
  // Factory function to get or create the global XdsClient instance.
83
83
  // If *error is not GRPC_ERROR_NONE upon return, then there was
84
84
  // an error initializing the client.
85
- static RefCountedPtr<XdsClient> GetOrCreate(grpc_error** error);
85
+ static RefCountedPtr<XdsClient> GetOrCreate(const grpc_channel_args* args,
86
+ grpc_error_handle* error);
86
87
 
87
- // Callers should not instantiate directly. Use GetOrCreate() instead.
88
- explicit XdsClient(grpc_error** error);
88
+ // Most callers should not instantiate directly. Use GetOrCreate() instead.
89
+ XdsClient(std::unique_ptr<XdsBootstrap> bootstrap,
90
+ const grpc_channel_args* args);
89
91
  ~XdsClient() override;
90
92
 
91
93
  const XdsBootstrap& bootstrap() const {
@@ -200,6 +202,11 @@ class XdsClient : public DualRefCounted<XdsClient> {
200
202
  // implementation.
201
203
  std::string DumpClientConfigBinary();
202
204
 
205
+ // Helpers for encoding the XdsClient object in channel args.
206
+ grpc_arg MakeChannelArg() const;
207
+ static RefCountedPtr<XdsClient> GetFromChannelArgs(
208
+ const grpc_channel_args& args);
209
+
203
210
  private:
204
211
  // Contains a channel to the xds server and all the data related to the
205
212
  // channel. Holds a ref to the xds client object.
@@ -236,9 +243,11 @@ class XdsClient : public DualRefCounted<XdsClient> {
236
243
  void StartConnectivityWatchLocked();
237
244
  void CancelConnectivityWatchLocked();
238
245
 
239
- void Subscribe(const std::string& type_url, const std::string& name);
240
- void Unsubscribe(const std::string& type_url, const std::string& name,
241
- bool delay_unsubscription);
246
+ void SubscribeLocked(const std::string& type_url, const std::string& name)
247
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
248
+ void UnsubscribeLocked(const std::string& type_url, const std::string& name,
249
+ bool delay_unsubscription)
250
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
242
251
 
243
252
  private:
244
253
  class StateWatcher;
@@ -308,48 +317,53 @@ class XdsClient : public DualRefCounted<XdsClient> {
308
317
  };
309
318
 
310
319
  // Sends an error notification to all watchers.
311
- void NotifyOnErrorLocked(grpc_error* error);
320
+ void NotifyOnErrorLocked(grpc_error_handle error)
321
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
312
322
 
313
323
  XdsApi::ClusterLoadReportMap BuildLoadReportSnapshotLocked(
314
- bool send_all_clusters, const std::set<std::string>& clusters);
324
+ bool send_all_clusters, const std::set<std::string>& clusters)
325
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
315
326
 
316
- void UpdateResourceMetadataWithFailedParseResult(
317
- grpc_millis update_time, const XdsApi::AdsParseResult& result);
318
- void UpdatePendingResources(
319
- const std::string& type_url,
320
- XdsApi::ResourceMetadataMap* resource_metadata_map);
327
+ void UpdateResourceMetadataWithFailedParseResultLocked(
328
+ grpc_millis update_time, const XdsApi::AdsParseResult& result)
329
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
321
330
 
331
+ std::unique_ptr<XdsBootstrap> bootstrap_;
332
+ grpc_channel_args* args_;
322
333
  const grpc_millis request_timeout_;
323
334
  grpc_pollset_set* interested_parties_;
324
- std::unique_ptr<XdsBootstrap> bootstrap_;
325
335
  OrphanablePtr<CertificateProviderStore> certificate_provider_store_;
326
336
  XdsApi api_;
327
337
 
328
338
  Mutex mu_;
329
339
 
330
340
  // The channel for communicating with the xds server.
331
- OrphanablePtr<ChannelState> chand_;
341
+ OrphanablePtr<ChannelState> chand_ ABSL_GUARDED_BY(mu_);
332
342
 
333
343
  // One entry for each watched LDS resource.
334
- std::map<std::string /*listener_name*/, ListenerState> listener_map_;
344
+ std::map<std::string /*listener_name*/, ListenerState> listener_map_
345
+ ABSL_GUARDED_BY(mu_);
335
346
  // One entry for each watched RDS resource.
336
347
  std::map<std::string /*route_config_name*/, RouteConfigState>
337
- route_config_map_;
348
+ route_config_map_ ABSL_GUARDED_BY(mu_);
338
349
  // One entry for each watched CDS resource.
339
- std::map<std::string /*cluster_name*/, ClusterState> cluster_map_;
350
+ std::map<std::string /*cluster_name*/, ClusterState> cluster_map_
351
+ ABSL_GUARDED_BY(mu_);
340
352
  // One entry for each watched EDS resource.
341
- std::map<std::string /*eds_service_name*/, EndpointState> endpoint_map_;
353
+ std::map<std::string /*eds_service_name*/, EndpointState> endpoint_map_
354
+ ABSL_GUARDED_BY(mu_);
342
355
 
343
356
  // Load report data.
344
357
  std::map<
345
358
  std::pair<std::string /*cluster_name*/, std::string /*eds_service_name*/>,
346
359
  LoadReportState>
347
- load_report_map_;
360
+ load_report_map_ ABSL_GUARDED_BY(mu_);
348
361
 
349
362
  // Stores the most recent accepted resource version for each resource type.
350
- std::map<std::string /*type*/, std::string /*version*/> resource_version_map_;
363
+ std::map<std::string /*type*/, std::string /*version*/> resource_version_map_
364
+ ABSL_GUARDED_BY(mu_);
351
365
 
352
- bool shutting_down_ = false;
366
+ bool shutting_down_ ABSL_GUARDED_BY(mu_) = false;
353
367
  };
354
368
 
355
369
  namespace internal {
@@ -362,4 +376,4 @@ void SetXdsFallbackBootstrapConfig(const char* config);
362
376
 
363
377
  } // namespace grpc_core
364
378
 
365
- #endif /* GRPC_CORE_EXT_XDS_XDS_CLIENT_H */
379
+ #endif // GRPC_CORE_EXT_XDS_XDS_CLIENT_H
@@ -149,7 +149,7 @@ class XdsClusterDropStats : public RefCounted<XdsClusterDropStats> {
149
149
  // dropped_requests can be accessed by both the picker (from data plane
150
150
  // mutex) and the load reporting thread (from the control plane combiner).
151
151
  Mutex mu_;
152
- CategorizedDropsMap categorized_drops_;
152
+ CategorizedDropsMap categorized_drops_ ABSL_GUARDED_BY(mu_);
153
153
  };
154
154
 
155
155
  // Locality stats for an xds cluster.
@@ -231,7 +231,8 @@ class XdsClusterLocalityStats : public RefCounted<XdsClusterLocalityStats> {
231
231
  // call's recv_trailing_metadata (not from the control plane work serializer)
232
232
  // and the load reporting thread (from the control plane work serializer).
233
233
  Mutex backend_metrics_mu_;
234
- std::map<std::string, BackendMetric> backend_metrics_;
234
+ std::map<std::string, BackendMetric> backend_metrics_
235
+ ABSL_GUARDED_BY(backend_metrics_mu_);
235
236
  };
236
237
 
237
238
  } // namespace grpc_core
@@ -22,10 +22,10 @@
22
22
 
23
23
  #include "src/core/ext/xds/xds_certificate_provider.h"
24
24
  #include "src/core/ext/xds/xds_client.h"
25
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
25
26
  #include "src/core/lib/channel/channel_args.h"
26
27
  #include "src/core/lib/gprpp/host_port.h"
27
28
  #include "src/core/lib/iomgr/sockaddr.h"
28
- #include "src/core/lib/iomgr/sockaddr_utils.h"
29
29
  #include "src/core/lib/iomgr/socket_utils.h"
30
30
  #include "src/core/lib/security/credentials/xds/xds_credentials.h"
31
31
  #include "src/core/lib/surface/api_trace.h"
@@ -163,8 +163,14 @@ const XdsApi::LdsUpdate::FilterChainData* FindFilterChainDataForSourceType(
163
163
  return nullptr;
164
164
  }
165
165
  grpc_resolved_address source_addr;
166
- grpc_string_to_sockaddr(&source_addr, host.c_str(),
167
- 0 /* port doesn't matter here */);
166
+ grpc_error_handle error = grpc_string_to_sockaddr(
167
+ &source_addr, host.c_str(), 0 /* port doesn't matter here */);
168
+ if (error != GRPC_ERROR_NONE) {
169
+ gpr_log(GPR_DEBUG, "Could not parse string to socket address: %s",
170
+ host.c_str());
171
+ GRPC_ERROR_UNREF(error);
172
+ return nullptr;
173
+ }
168
174
  // Use kAny only if kSameIporLoopback and kExternal are empty
169
175
  if (source_types_array[static_cast<int>(
170
176
  XdsApi::LdsUpdate::FilterChainMap::
@@ -208,8 +214,14 @@ const XdsApi::LdsUpdate::FilterChainData* FindFilterChainDataForDestinationIp(
208
214
  return nullptr;
209
215
  }
210
216
  grpc_resolved_address destination_addr;
211
- grpc_string_to_sockaddr(&destination_addr, host.c_str(),
212
- 0 /* port doesn't matter here */);
217
+ grpc_error_handle error = grpc_string_to_sockaddr(
218
+ &destination_addr, host.c_str(), 0 /* port doesn't matter here */);
219
+ if (error != GRPC_ERROR_NONE) {
220
+ gpr_log(GPR_DEBUG, "Could not parse string to socket address: %s",
221
+ host.c_str());
222
+ GRPC_ERROR_UNREF(error);
223
+ return nullptr;
224
+ }
213
225
  const XdsApi::LdsUpdate::FilterChainMap::DestinationIp* best_match = nullptr;
214
226
  for (const auto& entry : destination_ip_vector) {
215
227
  // Special case for catch-all
@@ -413,8 +425,8 @@ class XdsServerConfigFetcher : public grpc_server_config_fetcher {
413
425
  return;
414
426
  }
415
427
  if (filter_chain_match_manager_ == nullptr) {
416
- if (serving_status_notifier_.on_serving_status_change != nullptr) {
417
- serving_status_notifier_.on_serving_status_change(
428
+ if (serving_status_notifier_.on_serving_status_update != nullptr) {
429
+ serving_status_notifier_.on_serving_status_update(
418
430
  serving_status_notifier_.user_data, listening_address_.c_str(),
419
431
  GRPC_STATUS_OK, "");
420
432
  } else {
@@ -436,23 +448,25 @@ class XdsServerConfigFetcher : public grpc_server_config_fetcher {
436
448
  }
437
449
  }
438
450
 
439
- void OnError(grpc_error* error) override {
451
+ void OnError(grpc_error_handle error) override {
440
452
  if (filter_chain_match_manager_ != nullptr) {
441
453
  gpr_log(GPR_ERROR,
442
454
  "ListenerWatcher:%p XdsClient reports error: %s for %s; "
443
455
  "ignoring in favor of existing resource",
444
- this, grpc_error_string(error), listening_address_.c_str());
456
+ this, grpc_error_std_string(error).c_str(),
457
+ listening_address_.c_str());
445
458
  } else {
446
- if (serving_status_notifier_.on_serving_status_change != nullptr) {
447
- serving_status_notifier_.on_serving_status_change(
459
+ if (serving_status_notifier_.on_serving_status_update != nullptr) {
460
+ serving_status_notifier_.on_serving_status_update(
448
461
  serving_status_notifier_.user_data, listening_address_.c_str(),
449
- GRPC_STATUS_UNAVAILABLE, grpc_error_string(error));
462
+ GRPC_STATUS_UNAVAILABLE, grpc_error_std_string(error).c_str());
450
463
  } else {
451
464
  gpr_log(
452
465
  GPR_ERROR,
453
466
  "ListenerWatcher:%p error obtaining xDS Listener resource: %s; "
454
467
  "not serving on %s",
455
- this, grpc_error_string(error), listening_address_.c_str());
468
+ this, grpc_error_std_string(error).c_str(),
469
+ listening_address_.c_str());
456
470
  }
457
471
  }
458
472
  GRPC_ERROR_UNREF(error);
@@ -469,8 +483,8 @@ class XdsServerConfigFetcher : public grpc_server_config_fetcher {
469
483
  server_config_watcher_->StopServing();
470
484
  filter_chain_match_manager_.reset();
471
485
  }
472
- if (serving_status_notifier_.on_serving_status_change != nullptr) {
473
- serving_status_notifier_.on_serving_status_change(
486
+ if (serving_status_notifier_.on_serving_status_update != nullptr) {
487
+ serving_status_notifier_.on_serving_status_update(
474
488
  serving_status_notifier_.user_data, listening_address_.c_str(),
475
489
  static_cast<grpc_status_code>(status.raw_code()),
476
490
  std::string(status.message()).c_str());
@@ -500,23 +514,23 @@ class XdsServerConfigFetcher : public grpc_server_config_fetcher {
500
514
  grpc_server_xds_status_notifier serving_status_notifier_;
501
515
  Mutex mu_;
502
516
  std::map<grpc_server_config_fetcher::WatcherInterface*, WatcherState>
503
- watchers_;
517
+ watchers_ ABSL_GUARDED_BY(mu_);
504
518
  };
505
519
 
506
520
  } // namespace
507
521
  } // namespace grpc_core
508
522
 
509
523
  grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
510
- grpc_server_xds_status_notifier notifier) {
524
+ grpc_server_xds_status_notifier notifier, const grpc_channel_args* args) {
511
525
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
512
526
  grpc_core::ExecCtx exec_ctx;
513
527
  GRPC_API_TRACE("grpc_server_config_fetcher_xds_create()", 0, ());
514
- grpc_error* error = GRPC_ERROR_NONE;
528
+ grpc_error_handle error = GRPC_ERROR_NONE;
515
529
  grpc_core::RefCountedPtr<grpc_core::XdsClient> xds_client =
516
- grpc_core::XdsClient::GetOrCreate(&error);
530
+ grpc_core::XdsClient::GetOrCreate(args, &error);
517
531
  if (error != GRPC_ERROR_NONE) {
518
532
  gpr_log(GPR_ERROR, "Failed to create xds client: %s",
519
- grpc_error_string(error));
533
+ grpc_error_std_string(error).c_str());
520
534
  GRPC_ERROR_UNREF(error);
521
535
  return nullptr;
522
536
  }
@@ -18,7 +18,7 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include "src/core/lib/iomgr/parse_address.h"
21
+ #include "src/core/lib/address_utils/parse_address.h"
22
22
 
23
23
  #include <stdio.h>
24
24
  #include <string.h>
@@ -52,10 +52,10 @@ bool grpc_parse_unix(const grpc_core::URI& uri,
52
52
  uri.scheme().c_str());
53
53
  return false;
54
54
  }
55
- grpc_error* error =
55
+ grpc_error_handle error =
56
56
  grpc_core::UnixSockaddrPopulate(uri.path(), resolved_addr);
57
57
  if (error != GRPC_ERROR_NONE) {
58
- gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
58
+ gpr_log(GPR_ERROR, "%s", grpc_error_std_string(error).c_str());
59
59
  GRPC_ERROR_UNREF(error);
60
60
  return false;
61
61
  }
@@ -69,10 +69,10 @@ bool grpc_parse_unix_abstract(const grpc_core::URI& uri,
69
69
  uri.scheme().c_str());
70
70
  return false;
71
71
  }
72
- grpc_error* error =
72
+ grpc_error_handle error =
73
73
  grpc_core::UnixAbstractSockaddrPopulate(uri.path(), resolved_addr);
74
74
  if (error != GRPC_ERROR_NONE) {
75
- gpr_log(GPR_ERROR, "%s", grpc_error_string(error));
75
+ gpr_log(GPR_ERROR, "%s", grpc_error_std_string(error).c_str());
76
76
  GRPC_ERROR_UNREF(error);
77
77
  return false;
78
78
  }
@@ -81,8 +81,8 @@ bool grpc_parse_unix_abstract(const grpc_core::URI& uri,
81
81
 
82
82
  namespace grpc_core {
83
83
 
84
- grpc_error* UnixSockaddrPopulate(absl::string_view path,
85
- grpc_resolved_address* resolved_addr) {
84
+ grpc_error_handle UnixSockaddrPopulate(absl::string_view path,
85
+ grpc_resolved_address* resolved_addr) {
86
86
  struct sockaddr_un* un =
87
87
  reinterpret_cast<struct sockaddr_un*>(resolved_addr->addr);
88
88
  const size_t maxlen = sizeof(un->sun_path) - 1;
@@ -99,8 +99,8 @@ grpc_error* UnixSockaddrPopulate(absl::string_view path,
99
99
  return GRPC_ERROR_NONE;
100
100
  }
101
101
 
102
- grpc_error* UnixAbstractSockaddrPopulate(absl::string_view path,
103
- grpc_resolved_address* resolved_addr) {
102
+ grpc_error_handle UnixAbstractSockaddrPopulate(
103
+ absl::string_view path, grpc_resolved_address* resolved_addr) {
104
104
  struct sockaddr_un* un =
105
105
  reinterpret_cast<struct sockaddr_un*>(resolved_addr->addr);
106
106
  const size_t maxlen = sizeof(un->sun_path) - 1;
@@ -122,25 +122,25 @@ grpc_error* UnixAbstractSockaddrPopulate(absl::string_view path,
122
122
 
123
123
  #else /* GRPC_HAVE_UNIX_SOCKET */
124
124
 
125
- bool grpc_parse_unix(const grpc_core::URI& uri,
126
- grpc_resolved_address* resolved_addr) {
125
+ bool grpc_parse_unix(const grpc_core::URI& /* uri */,
126
+ grpc_resolved_address* /* resolved_addr */) {
127
127
  abort();
128
128
  }
129
129
 
130
- bool grpc_parse_unix_abstract(const grpc_core::URI& uri,
131
- grpc_resolved_address* resolved_addr) {
130
+ bool grpc_parse_unix_abstract(const grpc_core::URI& /* uri */,
131
+ grpc_resolved_address* /* resolved_addr */) {
132
132
  abort();
133
133
  }
134
134
 
135
135
  namespace grpc_core {
136
136
 
137
- grpc_error* UnixSockaddrPopulate(absl::string_view path,
138
- grpc_resolved_address* resolved_addr) {
137
+ grpc_error_handle UnixSockaddrPopulate(
138
+ absl::string_view /* path */, grpc_resolved_address* /* resolved_addr */) {
139
139
  abort();
140
140
  }
141
141
 
142
- grpc_error* UnixAbstractSockaddrPopulate(absl::string_view path,
143
- grpc_resolved_address* resolved_addr) {
142
+ grpc_error_handle UnixAbstractSockaddrPopulate(
143
+ absl::string_view /* path */, grpc_resolved_address* /* resolved_addr */) {
144
144
  abort();
145
145
  }
146
146
 
@@ -16,8 +16,8 @@
16
16
  *
17
17
  */
18
18
 
19
- #ifndef GRPC_CORE_LIB_IOMGR_PARSE_ADDRESS_H
20
- #define GRPC_CORE_LIB_IOMGR_PARSE_ADDRESS_H
19
+ #ifndef GRPC_CORE_LIB_ADDRESS_UTILS_PARSE_ADDRESS_H
20
+ #define GRPC_CORE_LIB_ADDRESS_UTILS_PARSE_ADDRESS_H
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
@@ -64,14 +64,14 @@ uint16_t grpc_strhtons(const char* port);
64
64
  namespace grpc_core {
65
65
 
66
66
  /** Populate \a resolved_addr to be a unix socket at |path| */
67
- grpc_error* UnixSockaddrPopulate(absl::string_view path,
68
- grpc_resolved_address* resolved_addr);
67
+ grpc_error_handle UnixSockaddrPopulate(absl::string_view path,
68
+ grpc_resolved_address* resolved_addr);
69
69
 
70
70
  /** Populate \a resolved_addr to be a unix socket in the abstract namespace
71
71
  * at |path| */
72
- grpc_error* UnixAbstractSockaddrPopulate(absl::string_view path,
73
- grpc_resolved_address* resolved_addr);
72
+ grpc_error_handle UnixAbstractSockaddrPopulate(
73
+ absl::string_view path, grpc_resolved_address* resolved_addr);
74
74
 
75
75
  } // namespace grpc_core
76
76
 
77
- #endif /* GRPC_CORE_LIB_IOMGR_PARSE_ADDRESS_H */
77
+ #endif /* GRPC_CORE_LIB_ADDRESS_UTILS_PARSE_ADDRESS_H */
@@ -18,7 +18,7 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include "src/core/lib/iomgr/sockaddr_utils.h"
21
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
22
22
 
23
23
  #include <errno.h>
24
24
  #include <inttypes.h>
@@ -198,25 +198,8 @@ std::string grpc_sockaddr_to_string(const grpc_resolved_address* resolved_addr,
198
198
  return out;
199
199
  }
200
200
 
201
- void grpc_string_to_sockaddr(grpc_resolved_address* out, const char* addr,
202
- int port) {
203
- memset(out, 0, sizeof(grpc_resolved_address));
204
- grpc_sockaddr_in6* addr6 = reinterpret_cast<grpc_sockaddr_in6*>(out->addr);
205
- grpc_sockaddr_in* addr4 = reinterpret_cast<grpc_sockaddr_in*>(out->addr);
206
- if (grpc_inet_pton(GRPC_AF_INET6, addr, &addr6->sin6_addr) == 1) {
207
- addr6->sin6_family = GRPC_AF_INET6;
208
- out->len = sizeof(grpc_sockaddr_in6);
209
- } else if (grpc_inet_pton(GRPC_AF_INET, addr, &addr4->sin_addr) == 1) {
210
- addr4->sin_family = GRPC_AF_INET;
211
- out->len = sizeof(grpc_sockaddr_in);
212
- } else {
213
- GPR_ASSERT(0);
214
- }
215
- grpc_sockaddr_set_port(out, port);
216
- }
217
-
218
- grpc_error* grpc_string_to_sockaddr_new(grpc_resolved_address* out,
219
- const char* addr, int port) {
201
+ grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address* out,
202
+ const char* addr, int port) {
220
203
  memset(out, 0, sizeof(grpc_resolved_address));
221
204
  grpc_sockaddr_in6* addr6 = reinterpret_cast<grpc_sockaddr_in6*>(out->addr);
222
205
  grpc_sockaddr_in* addr4 = reinterpret_cast<grpc_sockaddr_in*>(out->addr);