grpc 1.37.1 → 1.39.0

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

Potentially problematic release.


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

Files changed (636) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +96 -59
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/endpoint_config.h +48 -0
  5. data/include/grpc/event_engine/event_engine.h +334 -0
  6. data/include/grpc/event_engine/port.h +41 -0
  7. data/include/grpc/event_engine/slice_allocator.h +91 -0
  8. data/include/grpc/grpc.h +11 -4
  9. data/include/grpc/grpc_security.h +32 -0
  10. data/include/grpc/grpc_security_constants.h +15 -0
  11. data/include/grpc/impl/codegen/grpc_types.h +28 -13
  12. data/include/grpc/impl/codegen/port_platform.h +22 -0
  13. data/include/grpc/module.modulemap +14 -14
  14. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  15. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  16. data/src/core/ext/filters/client_channel/client_channel.cc +630 -3103
  17. data/src/core/ext/filters/client_channel/client_channel.h +489 -55
  18. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  19. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  20. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  21. data/src/core/ext/filters/client_channel/connector.h +1 -1
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  23. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  24. data/src/core/ext/filters/client_channel/health/health_check_client.cc +28 -27
  25. data/src/core/ext/filters/client_channel/health/health_check_client.h +30 -29
  26. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  27. data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
  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/ring_hash/ring_hash.cc +755 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  37. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +46 -54
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +146 -155
  43. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  44. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  45. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  46. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  47. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -18
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -12
  60. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  61. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  62. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +20 -13
  63. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  64. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -32
  65. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  66. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  67. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  68. data/src/core/ext/filters/client_channel/retry_filter.cc +2449 -0
  69. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  70. data/src/core/ext/filters/client_channel/retry_service_config.cc +306 -0
  71. data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
  72. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  73. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  74. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  75. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  76. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  77. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  78. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  79. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  80. data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
  81. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  82. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +25 -18
  83. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  84. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  85. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  86. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  87. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  88. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  89. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  90. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  91. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  92. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  93. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  94. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  95. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  96. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  97. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +3 -2
  98. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  99. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
  100. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  101. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  102. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +5 -4
  103. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  104. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -120
  105. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  106. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  107. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  108. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  109. data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
  110. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  111. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  112. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  113. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  114. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  115. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  116. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  117. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  118. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  119. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  120. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  121. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  122. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  123. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  124. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  125. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  126. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  127. data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
  128. data/src/core/ext/transport/chttp2/transport/parsing.cc +65 -58
  129. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  130. data/src/core/ext/transport/inproc/inproc_transport.cc +72 -60
  131. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  132. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  133. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  134. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  135. data/src/core/ext/xds/xds_api.cc +348 -199
  136. data/src/core/ext/xds/xds_api.h +21 -12
  137. data/src/core/ext/xds/xds_bootstrap.cc +97 -159
  138. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  139. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  140. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  141. data/src/core/ext/xds/xds_channel_args.h +5 -2
  142. data/src/core/ext/xds/xds_client.cc +310 -178
  143. data/src/core/ext/xds/xds_client.h +41 -27
  144. data/src/core/ext/xds/xds_client_stats.h +3 -2
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  146. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  147. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  148. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +16 -20
  149. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +16 -11
  150. data/src/core/lib/channel/channel_stack.cc +10 -9
  151. data/src/core/lib/channel/channel_stack.h +10 -9
  152. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  153. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  154. data/src/core/lib/channel/channelz.cc +21 -13
  155. data/src/core/lib/channel/channelz.h +3 -0
  156. data/src/core/lib/channel/connected_channel.cc +4 -4
  157. data/src/core/lib/channel/handshaker.cc +7 -6
  158. data/src/core/lib/channel/handshaker.h +5 -5
  159. data/src/core/lib/event_engine/endpoint_config.cc +46 -0
  160. data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
  161. data/src/core/lib/event_engine/event_engine.cc +50 -0
  162. data/src/core/lib/event_engine/slice_allocator.cc +89 -0
  163. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  164. data/src/core/lib/event_engine/sockaddr.h +44 -0
  165. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  166. data/src/core/lib/gprpp/ref_counted.h +28 -14
  167. data/src/core/lib/gprpp/status_helper.cc +407 -0
  168. data/src/core/lib/gprpp/status_helper.h +183 -0
  169. data/src/core/lib/http/httpcli.cc +11 -11
  170. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  171. data/src/core/lib/http/parser.cc +16 -16
  172. data/src/core/lib/http/parser.h +4 -4
  173. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  174. data/src/core/lib/iomgr/buffer_list.h +4 -5
  175. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  176. data/src/core/lib/iomgr/call_combiner.h +12 -14
  177. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  178. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  179. data/src/core/lib/iomgr/closure.h +7 -6
  180. data/src/core/lib/iomgr/combiner.cc +14 -12
  181. data/src/core/lib/iomgr/combiner.h +2 -2
  182. data/src/core/lib/iomgr/endpoint.cc +1 -1
  183. data/src/core/lib/iomgr/endpoint.h +2 -2
  184. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  185. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
  186. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  187. data/src/core/lib/iomgr/error.cc +168 -61
  188. data/src/core/lib/iomgr/error.h +217 -106
  189. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  190. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  191. data/src/core/lib/iomgr/error_internal.h +5 -1
  192. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  193. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  194. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  195. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  196. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  197. data/src/core/lib/iomgr/ev_posix.h +9 -9
  198. data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
  199. data/src/core/lib/iomgr/event_engine/closure.h +33 -0
  200. data/src/core/lib/iomgr/event_engine/endpoint.cc +194 -0
  201. data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
  202. data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
  203. data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
  204. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  205. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  206. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  207. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
  208. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
  209. data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
  210. data/src/core/lib/iomgr/event_engine/tcp.cc +243 -0
  211. data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
  212. data/src/core/lib/iomgr/exec_ctx.cc +12 -4
  213. data/src/core/lib/iomgr/exec_ctx.h +4 -5
  214. data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
  215. data/src/core/lib/iomgr/executor/threadpool.h +2 -2
  216. data/src/core/lib/iomgr/executor.cc +8 -8
  217. data/src/core/lib/iomgr/executor.h +2 -2
  218. data/src/core/lib/iomgr/iomgr.cc +2 -2
  219. data/src/core/lib/iomgr/iomgr.h +1 -1
  220. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  221. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  222. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  223. data/src/core/lib/iomgr/iomgr_posix.cc +3 -1
  224. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -12
  225. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  226. data/src/core/lib/iomgr/load_file.cc +4 -4
  227. data/src/core/lib/iomgr/load_file.h +2 -2
  228. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  229. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  230. data/src/core/lib/iomgr/pollset.cc +5 -5
  231. data/src/core/lib/iomgr/pollset.h +9 -9
  232. data/src/core/lib/iomgr/pollset_custom.cc +7 -7
  233. data/src/core/lib/iomgr/pollset_custom.h +3 -1
  234. data/src/core/lib/iomgr/pollset_uv.cc +3 -1
  235. data/src/core/lib/iomgr/pollset_uv.h +5 -1
  236. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  237. data/src/core/lib/iomgr/port.h +7 -5
  238. data/src/core/lib/iomgr/python_util.h +1 -1
  239. data/src/core/lib/iomgr/resolve_address.cc +8 -4
  240. data/src/core/lib/iomgr/resolve_address.h +12 -6
  241. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  242. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  243. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  244. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  245. data/src/core/lib/iomgr/resource_quota.cc +11 -10
  246. data/src/core/lib/iomgr/sockaddr.h +1 -0
  247. data/src/core/lib/iomgr/socket_mutator.cc +15 -2
  248. data/src/core/lib/iomgr/socket_mutator.h +26 -2
  249. data/src/core/lib/iomgr/socket_utils_common_posix.cc +24 -22
  250. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  251. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  252. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  253. data/src/core/lib/iomgr/tcp_client_posix.cc +22 -19
  254. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  255. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  256. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  257. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  258. data/src/core/lib/iomgr/tcp_posix.cc +78 -73
  259. data/src/core/lib/iomgr/tcp_posix.h +8 -0
  260. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  261. data/src/core/lib/iomgr/tcp_server.h +12 -11
  262. data/src/core/lib/iomgr/tcp_server_custom.cc +26 -25
  263. data/src/core/lib/iomgr/tcp_server_posix.cc +28 -21
  264. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  265. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -18
  266. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  267. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  268. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  269. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  270. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  271. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  272. data/src/core/lib/iomgr/timer.h +6 -1
  273. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  274. data/src/core/lib/iomgr/timer_custom.h +1 -1
  275. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  276. data/src/core/lib/iomgr/udp_server.cc +21 -20
  277. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  278. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  279. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  280. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  281. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  282. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  283. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  284. data/src/core/lib/iomgr/work_serializer.h +17 -1
  285. data/src/core/lib/json/json.h +1 -1
  286. data/src/core/lib/json/json_reader.cc +4 -4
  287. data/src/core/lib/matchers/matchers.cc +39 -39
  288. data/src/core/lib/matchers/matchers.h +28 -28
  289. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  290. data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
  291. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  292. data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
  293. data/src/core/lib/security/authorization/evaluate_args.h +91 -0
  294. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  295. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  296. data/src/core/lib/security/credentials/credentials.h +2 -2
  297. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  298. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  299. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  300. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  301. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  302. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  303. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  304. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  305. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  306. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  307. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  308. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  309. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -10
  310. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  311. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  312. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  313. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  314. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  315. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  316. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  317. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  318. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  319. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  320. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  321. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  322. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  323. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  324. data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
  325. data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
  326. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  327. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  328. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  329. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  330. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  331. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  332. data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -9
  333. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  334. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  335. data/src/core/lib/security/security_connector/ssl_utils.cc +27 -4
  336. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  337. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
  338. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  339. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  340. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  341. data/src/core/lib/security/transport/security_handshaker.cc +33 -32
  342. data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
  343. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  344. data/src/core/lib/security/transport/tsi_error.h +2 -1
  345. data/src/core/lib/security/util/json_util.cc +2 -2
  346. data/src/core/lib/security/util/json_util.h +1 -1
  347. data/src/core/lib/surface/call.cc +67 -46
  348. data/src/core/lib/surface/call.h +13 -2
  349. data/src/core/lib/surface/channel.cc +6 -6
  350. data/src/core/lib/surface/channel.h +3 -2
  351. data/src/core/lib/surface/channel_ping.cc +1 -1
  352. data/src/core/lib/surface/completion_queue.cc +68 -69
  353. data/src/core/lib/surface/completion_queue.h +3 -2
  354. data/src/core/lib/surface/completion_queue_factory.cc +1 -2
  355. data/src/core/lib/surface/init.cc +1 -3
  356. data/src/core/lib/surface/init.h +10 -1
  357. data/src/core/lib/surface/lame_client.cc +11 -11
  358. data/src/core/lib/surface/lame_client.h +1 -1
  359. data/src/core/lib/surface/server.cc +28 -22
  360. data/src/core/lib/surface/server.h +16 -15
  361. data/src/core/lib/surface/validate_metadata.cc +7 -7
  362. data/src/core/lib/surface/validate_metadata.h +3 -2
  363. data/src/core/lib/surface/version.cc +4 -2
  364. data/src/core/lib/transport/byte_stream.cc +5 -5
  365. data/src/core/lib/transport/byte_stream.h +8 -8
  366. data/src/core/lib/transport/connectivity_state.cc +1 -1
  367. data/src/core/lib/transport/error_utils.cc +21 -10
  368. data/src/core/lib/transport/error_utils.h +11 -5
  369. data/src/core/lib/transport/metadata_batch.cc +37 -37
  370. data/src/core/lib/transport/metadata_batch.h +19 -18
  371. data/src/core/lib/transport/transport.cc +4 -3
  372. data/src/core/lib/transport/transport.h +6 -4
  373. data/src/core/lib/transport/transport_op_string.cc +6 -6
  374. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  375. data/src/core/tsi/alts/crypt/gsec.h +6 -0
  376. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  377. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  378. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  379. data/src/core/tsi/ssl_transport_security.cc +32 -14
  380. data/src/core/tsi/ssl_transport_security.h +3 -4
  381. data/src/ruby/bin/math_services_pb.rb +1 -1
  382. data/src/ruby/ext/grpc/extconf.rb +2 -0
  383. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
  384. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +11 -2
  385. data/src/ruby/lib/grpc/version.rb +1 -1
  386. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  387. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  388. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  389. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  390. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  391. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  392. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  393. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  394. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  395. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  396. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  397. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  398. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  399. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  400. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  401. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  402. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  403. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  404. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  405. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  406. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  407. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  408. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  409. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  410. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  411. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  412. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  413. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  414. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  415. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  416. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  417. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  418. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  419. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  420. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  421. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  422. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  423. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  424. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  425. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  426. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  427. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  428. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  429. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  430. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  431. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  432. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  433. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  434. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  435. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  436. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  437. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  438. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  439. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  440. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  441. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  442. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  443. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  444. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  445. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  446. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  447. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  448. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  449. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  450. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  451. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  452. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  453. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  454. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  455. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  456. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  457. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  458. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  459. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  460. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  461. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  462. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  463. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  464. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  465. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  466. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  467. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  468. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  469. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  470. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  471. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  472. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  473. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  474. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  475. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  476. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  477. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  478. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  479. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  480. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  481. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  482. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  483. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  484. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  485. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  486. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  487. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  488. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  489. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  490. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  491. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  492. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  493. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  494. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  495. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  496. data/third_party/boringssl-with-bazel/err_data.c +483 -461
  497. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  498. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +9 -7
  499. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  500. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  501. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  502. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  503. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  504. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
  505. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  506. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  507. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  508. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  509. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  510. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  511. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
  512. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  513. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  514. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  515. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  516. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  517. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
  518. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  519. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  520. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  521. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  522. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  523. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  524. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  525. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
  526. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
  527. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  528. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  529. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  530. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  531. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  532. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  533. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -4
  534. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
  535. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  536. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
  537. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
  538. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  539. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  540. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
  541. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
  542. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
  543. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +367 -315
  544. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  545. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  546. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  547. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
  548. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  549. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
  550. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  551. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  552. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  553. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
  554. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  555. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
  556. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  557. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  558. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  559. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  560. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
  561. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
  562. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
  563. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
  564. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  565. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  566. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
  567. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  568. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  569. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  570. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  571. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  572. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  573. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
  574. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
  575. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  576. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  577. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  578. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
  579. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
  580. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
  581. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  582. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +47 -7
  583. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
  584. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  585. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  586. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  587. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
  588. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  589. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
  590. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  591. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +20 -49
  592. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  593. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
  594. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  595. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
  596. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  597. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  598. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
  599. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +283 -85
  600. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +13 -19
  601. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +445 -152
  602. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
  603. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -1
  604. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
  605. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  606. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
  607. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
  608. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +66 -30
  609. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
  610. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +154 -24
  611. data/third_party/boringssl-with-bazel/src/ssl/internal.h +414 -135
  612. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  613. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  614. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  615. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  616. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  617. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +51 -60
  618. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  619. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
  620. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  621. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
  622. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
  623. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +664 -702
  624. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +65 -7
  625. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
  626. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
  627. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +213 -118
  628. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  629. metadata +94 -46
  630. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  631. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  632. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  633. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  634. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  635. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
  636. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -399,34 +399,42 @@ class XdsApi {
399
399
  // The name to use in the EDS request.
400
400
  // If empty, the cluster name will be used.
401
401
  std::string eds_service_name;
402
+ // For cluster type LOGICAL_DNS.
403
+ // The hostname to lookup in DNS.
404
+ std::string dns_hostname;
405
+ // For cluster type AGGREGATE.
406
+ // The prioritized list of cluster names.
407
+ std::vector<std::string> prioritized_cluster_names;
408
+
402
409
  // Tls Context used by clients
403
410
  CommonTlsContext common_tls_context;
411
+
404
412
  // The LRS server to use for load reporting.
405
413
  // If not set, load reporting will be disabled.
406
414
  // If set to the empty string, will use the same server we obtained the CDS
407
415
  // data from.
408
416
  absl::optional<std::string> lrs_load_reporting_server_name;
417
+
409
418
  // The LB policy to use (e.g., "ROUND_ROBIN" or "RING_HASH").
410
419
  std::string lb_policy;
411
420
  // Used for RING_HASH LB policy only.
412
421
  uint64_t min_ring_size = 1024;
413
422
  uint64_t max_ring_size = 8388608;
414
- enum HashFunction { XX_HASH, MURMUR_HASH_2 };
415
- HashFunction hash_function;
416
423
  // Maximum number of outstanding requests can be made to the upstream
417
424
  // cluster.
418
425
  uint32_t max_concurrent_requests = 1024;
419
- // For cluster type AGGREGATE.
420
- // The prioritized list of cluster names.
421
- std::vector<std::string> prioritized_cluster_names;
422
426
 
423
427
  bool operator==(const CdsUpdate& other) const {
424
428
  return cluster_type == other.cluster_type &&
425
429
  eds_service_name == other.eds_service_name &&
430
+ dns_hostname == other.dns_hostname &&
431
+ prioritized_cluster_names == other.prioritized_cluster_names &&
426
432
  common_tls_context == other.common_tls_context &&
427
433
  lrs_load_reporting_server_name ==
428
434
  other.lrs_load_reporting_server_name &&
429
- prioritized_cluster_names == other.prioritized_cluster_names &&
435
+ lb_policy == other.lb_policy &&
436
+ min_ring_size == other.min_ring_size &&
437
+ max_ring_size == other.max_ring_size &&
430
438
  max_concurrent_requests == other.max_concurrent_requests;
431
439
  }
432
440
 
@@ -609,7 +617,7 @@ class XdsApi {
609
617
  // Otherwise, one of the *_update_map fields will be populated, based
610
618
  // on the type_url field.
611
619
  struct AdsParseResult {
612
- grpc_error* parse_error = GRPC_ERROR_NONE;
620
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
613
621
  std::string version;
614
622
  std::string nonce;
615
623
  std::string type_url;
@@ -628,7 +636,7 @@ class XdsApi {
628
636
  const std::string& type_url,
629
637
  const std::set<absl::string_view>& resource_names,
630
638
  const std::string& version,
631
- const std::string& nonce, grpc_error* error,
639
+ const std::string& nonce, grpc_error_handle error,
632
640
  bool populate_node);
633
641
 
634
642
  // Parses an ADS response.
@@ -648,10 +656,10 @@ class XdsApi {
648
656
  // Parses the LRS response and returns \a
649
657
  // load_reporting_interval for client-side load reporting. If there is any
650
658
  // error, the output config is invalid.
651
- grpc_error* ParseLrsResponse(const grpc_slice& encoded_response,
652
- bool* send_all_clusters,
653
- std::set<std::string>* cluster_names,
654
- grpc_millis* load_reporting_interval);
659
+ grpc_error_handle ParseLrsResponse(const grpc_slice& encoded_response,
660
+ bool* send_all_clusters,
661
+ std::set<std::string>* cluster_names,
662
+ grpc_millis* load_reporting_interval);
655
663
 
656
664
  // Assemble the client config proto message and return the serialized result.
657
665
  std::string AssembleClientConfig(
@@ -664,6 +672,7 @@ class XdsApi {
664
672
  upb::SymbolTable symtab_;
665
673
  const std::string build_version_;
666
674
  const std::string user_agent_name_;
675
+ const std::string user_agent_version_;
667
676
  };
668
677
 
669
678
  } // namespace grpc_core
@@ -30,7 +30,6 @@
30
30
 
31
31
  #include "src/core/ext/xds/certificate_provider_registry.h"
32
32
  #include "src/core/ext/xds/xds_api.h"
33
- #include "src/core/lib/gpr/env.h"
34
33
  #include "src/core/lib/gpr/string.h"
35
34
  #include "src/core/lib/iomgr/load_file.h"
36
35
  #include "src/core/lib/security/credentials/credentials.h"
@@ -81,142 +80,27 @@ bool XdsBootstrap::XdsServer::ShouldUseV3() const {
81
80
  // XdsBootstrap
82
81
  //
83
82
 
84
- namespace {
85
-
86
- std::string BootstrapString(const XdsBootstrap& bootstrap) {
87
- std::vector<std::string> parts;
88
- if (bootstrap.node() != nullptr) {
89
- parts.push_back(absl::StrFormat(
90
- "node={\n"
91
- " id=\"%s\",\n"
92
- " cluster=\"%s\",\n"
93
- " locality={\n"
94
- " region=\"%s\",\n"
95
- " zone=\"%s\",\n"
96
- " sub_zone=\"%s\"\n"
97
- " },\n"
98
- " metadata=%s,\n"
99
- "},\n",
100
- bootstrap.node()->id, bootstrap.node()->cluster,
101
- bootstrap.node()->locality_region, bootstrap.node()->locality_zone,
102
- bootstrap.node()->locality_sub_zone,
103
- bootstrap.node()->metadata.Dump()));
104
- }
105
- parts.push_back(absl::StrFormat(
106
- "servers=[\n"
107
- " {\n"
108
- " uri=\"%s\",\n"
109
- " creds_type=%s,\n",
110
- bootstrap.server().server_uri, bootstrap.server().channel_creds_type));
111
- if (bootstrap.server().channel_creds_config.type() != Json::Type::JSON_NULL) {
112
- parts.push_back(
113
- absl::StrFormat(" creds_config=%s,",
114
- bootstrap.server().channel_creds_config.Dump()));
115
- }
116
- if (!bootstrap.server().server_features.empty()) {
117
- parts.push_back(absl::StrCat(
118
- " server_features=[",
119
- absl::StrJoin(bootstrap.server().server_features, ", "), "],\n"));
120
- }
121
- parts.push_back(" }\n],\n");
122
- if (!bootstrap.server_listener_resource_name_template().empty()) {
123
- parts.push_back(
124
- absl::StrFormat("server_listener_resource_name_template=\"%s\",\n",
125
- bootstrap.server_listener_resource_name_template()));
126
- }
127
- parts.push_back("certificate_providers={\n");
128
- for (const auto& entry : bootstrap.certificate_providers()) {
129
- parts.push_back(
130
- absl::StrFormat(" %s={\n"
131
- " plugin_name=%s\n"
132
- " config=%s\n"
133
- " },\n",
134
- entry.first, entry.second.plugin_name,
135
- entry.second.config->ToString()));
136
- }
137
- parts.push_back("}");
138
- return absl::StrJoin(parts, "");
139
- }
140
-
141
- std::unique_ptr<XdsBootstrap> ParseJsonAndCreate(
142
- XdsClient* client, TraceFlag* tracer, absl::string_view json_string,
143
- absl::string_view bootstrap_source, grpc_error** error) {
83
+ std::unique_ptr<XdsBootstrap> XdsBootstrap::Create(
84
+ absl::string_view json_string, grpc_error_handle* error) {
144
85
  Json json = Json::Parse(json_string, error);
145
86
  if (*error != GRPC_ERROR_NONE) {
146
- grpc_error* error_out = GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
147
- absl::StrCat("Failed to parse bootstrap from ", bootstrap_source)
148
- .c_str(),
149
- error, 1);
87
+ grpc_error_handle error_out =
88
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
89
+ "Failed to parse bootstrap JSON string", error, 1);
150
90
  GRPC_ERROR_UNREF(*error);
151
91
  *error = error_out;
152
92
  return nullptr;
153
93
  }
154
- std::unique_ptr<XdsBootstrap> result =
155
- absl::make_unique<XdsBootstrap>(std::move(json), error);
156
- if (*error == GRPC_ERROR_NONE && GRPC_TRACE_FLAG_ENABLED(*tracer)) {
157
- gpr_log(GPR_INFO,
158
- "[xds_client %p] Bootstrap config for creating xds client:\n%s",
159
- client, BootstrapString(*result).c_str());
160
- }
161
- return result;
162
- }
163
-
164
- } // namespace
165
-
166
- std::unique_ptr<XdsBootstrap> XdsBootstrap::Create(XdsClient* client,
167
- TraceFlag* tracer,
168
- const char* fallback_config,
169
- grpc_error** error) {
170
- // First, try GRPC_XDS_BOOTSTRAP env var.
171
- grpc_core::UniquePtr<char> path(gpr_getenv("GRPC_XDS_BOOTSTRAP"));
172
- if (path != nullptr) {
173
- if (GRPC_TRACE_FLAG_ENABLED(*tracer)) {
174
- gpr_log(GPR_INFO,
175
- "[xds_client %p] Got bootstrap file location from "
176
- "GRPC_XDS_BOOTSTRAP environment variable: %s",
177
- client, path.get());
178
- }
179
- grpc_slice contents;
180
- *error =
181
- grpc_load_file(path.get(), /*add_null_terminator=*/true, &contents);
182
- if (*error != GRPC_ERROR_NONE) return nullptr;
183
- absl::string_view contents_str_view = StringViewFromSlice(contents);
184
- if (GRPC_TRACE_FLAG_ENABLED(*tracer)) {
185
- gpr_log(GPR_DEBUG, "[xds_client %p] Bootstrap file contents: %s", client,
186
- std::string(contents_str_view).c_str());
187
- }
188
- std::string bootstrap_source = absl::StrCat("file ", path.get());
189
- auto result = ParseJsonAndCreate(client, tracer, contents_str_view,
190
- bootstrap_source, error);
191
- grpc_slice_unref_internal(contents);
192
- return result;
193
- }
194
- // Next, try GRPC_XDS_BOOTSTRAP_CONFIG env var.
195
- grpc_core::UniquePtr<char> env_config(
196
- gpr_getenv("GRPC_XDS_BOOTSTRAP_CONFIG"));
197
- if (env_config != nullptr) {
198
- return ParseJsonAndCreate(client, tracer, env_config.get(),
199
- "GRPC_XDS_BOOTSTRAP_CONFIG env var", error);
200
- }
201
- // Finally, try fallback config.
202
- if (fallback_config != nullptr) {
203
- return ParseJsonAndCreate(client, tracer, fallback_config,
204
- "fallback config", error);
205
- }
206
- // No bootstrap config found.
207
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
208
- "Environment variables GRPC_XDS_BOOTSTRAP or GRPC_XDS_BOOTSTRAP_CONFIG "
209
- "not defined");
210
- return nullptr;
94
+ return absl::make_unique<XdsBootstrap>(std::move(json), error);
211
95
  }
212
96
 
213
- XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) {
97
+ XdsBootstrap::XdsBootstrap(Json json, grpc_error_handle* error) {
214
98
  if (json.type() != Json::Type::OBJECT) {
215
99
  *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
216
100
  "malformed JSON in bootstrap file");
217
101
  return;
218
102
  }
219
- std::vector<grpc_error*> error_list;
103
+ std::vector<grpc_error_handle> error_list;
220
104
  auto it = json.mutable_object()->find("xds_servers");
221
105
  if (it == json.mutable_object()->end()) {
222
106
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
@@ -225,7 +109,7 @@ XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) {
225
109
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
226
110
  "\"xds_servers\" field is not an array"));
227
111
  } else {
228
- grpc_error* parse_error = ParseXdsServerList(&it->second);
112
+ grpc_error_handle parse_error = ParseXdsServerList(&it->second);
229
113
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
230
114
  }
231
115
  it = json.mutable_object()->find("node");
@@ -234,7 +118,7 @@ XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) {
234
118
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
235
119
  "\"node\" field is not an object"));
236
120
  } else {
237
- grpc_error* parse_error = ParseNode(&it->second);
121
+ grpc_error_handle parse_error = ParseNode(&it->second);
238
122
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
239
123
  }
240
124
  }
@@ -255,7 +139,7 @@ XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) {
255
139
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
256
140
  "\"certificate_providers\" field is not an object"));
257
141
  } else {
258
- grpc_error* parse_error = ParseCertificateProviders(&it->second);
142
+ grpc_error_handle parse_error = ParseCertificateProviders(&it->second);
259
143
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
260
144
  }
261
145
  }
@@ -264,15 +148,15 @@ XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) {
264
148
  &error_list);
265
149
  }
266
150
 
267
- grpc_error* XdsBootstrap::ParseXdsServerList(Json* json) {
268
- std::vector<grpc_error*> error_list;
151
+ grpc_error_handle XdsBootstrap::ParseXdsServerList(Json* json) {
152
+ std::vector<grpc_error_handle> error_list;
269
153
  for (size_t i = 0; i < json->mutable_array()->size(); ++i) {
270
154
  Json& child = json->mutable_array()->at(i);
271
155
  if (child.type() != Json::Type::OBJECT) {
272
156
  error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
273
157
  absl::StrCat("array element ", i, " is not an object").c_str()));
274
158
  } else {
275
- grpc_error* parse_error = ParseXdsServer(&child, i);
159
+ grpc_error_handle parse_error = ParseXdsServer(&child, i);
276
160
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
277
161
  }
278
162
  }
@@ -280,8 +164,8 @@ grpc_error* XdsBootstrap::ParseXdsServerList(Json* json) {
280
164
  &error_list);
281
165
  }
282
166
 
283
- grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) {
284
- std::vector<grpc_error*> error_list;
167
+ grpc_error_handle XdsBootstrap::ParseXdsServer(Json* json, size_t idx) {
168
+ std::vector<grpc_error_handle> error_list;
285
169
  servers_.emplace_back();
286
170
  XdsServer& server = servers_[servers_.size() - 1];
287
171
  auto it = json->mutable_object()->find("server_uri");
@@ -302,7 +186,8 @@ grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) {
302
186
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
303
187
  "\"channel_creds\" field is not an array"));
304
188
  } else {
305
- grpc_error* parse_error = ParseChannelCredsArray(&it->second, &server);
189
+ grpc_error_handle parse_error =
190
+ ParseChannelCredsArray(&it->second, &server);
306
191
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
307
192
  }
308
193
  it = json->mutable_object()->find("server_features");
@@ -311,14 +196,15 @@ grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) {
311
196
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
312
197
  "\"server_features\" field is not an array"));
313
198
  } else {
314
- grpc_error* parse_error = ParseServerFeaturesArray(&it->second, &server);
199
+ grpc_error_handle parse_error =
200
+ ParseServerFeaturesArray(&it->second, &server);
315
201
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
316
202
  }
317
203
  }
318
204
  // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
319
205
  // string is not static in this case.
320
206
  if (error_list.empty()) return GRPC_ERROR_NONE;
321
- grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
207
+ grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
322
208
  absl::StrCat("errors parsing index ", idx).c_str());
323
209
  for (size_t i = 0; i < error_list.size(); ++i) {
324
210
  error = grpc_error_add_child(error, error_list[i]);
@@ -326,16 +212,16 @@ grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) {
326
212
  return error;
327
213
  }
328
214
 
329
- grpc_error* XdsBootstrap::ParseChannelCredsArray(Json* json,
330
- XdsServer* server) {
331
- std::vector<grpc_error*> error_list;
215
+ grpc_error_handle XdsBootstrap::ParseChannelCredsArray(Json* json,
216
+ XdsServer* server) {
217
+ std::vector<grpc_error_handle> error_list;
332
218
  for (size_t i = 0; i < json->mutable_array()->size(); ++i) {
333
219
  Json& child = json->mutable_array()->at(i);
334
220
  if (child.type() != Json::Type::OBJECT) {
335
221
  error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
336
222
  absl::StrCat("array element ", i, " is not an object").c_str()));
337
223
  } else {
338
- grpc_error* parse_error = ParseChannelCreds(&child, i, server);
224
+ grpc_error_handle parse_error = ParseChannelCreds(&child, i, server);
339
225
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
340
226
  }
341
227
  }
@@ -347,9 +233,9 @@ grpc_error* XdsBootstrap::ParseChannelCredsArray(Json* json,
347
233
  &error_list);
348
234
  }
349
235
 
350
- grpc_error* XdsBootstrap::ParseChannelCreds(Json* json, size_t idx,
351
- XdsServer* server) {
352
- std::vector<grpc_error*> error_list;
236
+ grpc_error_handle XdsBootstrap::ParseChannelCreds(Json* json, size_t idx,
237
+ XdsServer* server) {
238
+ std::vector<grpc_error_handle> error_list;
353
239
  std::string type;
354
240
  auto it = json->mutable_object()->find("type");
355
241
  if (it == json->mutable_object()->end()) {
@@ -385,7 +271,7 @@ grpc_error* XdsBootstrap::ParseChannelCreds(Json* json, size_t idx,
385
271
  // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
386
272
  // string is not static in this case.
387
273
  if (error_list.empty()) return GRPC_ERROR_NONE;
388
- grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
274
+ grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
389
275
  absl::StrCat("errors parsing index ", idx).c_str());
390
276
  for (size_t i = 0; i < error_list.size(); ++i) {
391
277
  error = grpc_error_add_child(error, error_list[i]);
@@ -393,9 +279,9 @@ grpc_error* XdsBootstrap::ParseChannelCreds(Json* json, size_t idx,
393
279
  return error;
394
280
  }
395
281
 
396
- grpc_error* XdsBootstrap::ParseServerFeaturesArray(Json* json,
397
- XdsServer* server) {
398
- std::vector<grpc_error*> error_list;
282
+ grpc_error_handle XdsBootstrap::ParseServerFeaturesArray(Json* json,
283
+ XdsServer* server) {
284
+ std::vector<grpc_error_handle> error_list;
399
285
  for (size_t i = 0; i < json->mutable_array()->size(); ++i) {
400
286
  Json& child = json->mutable_array()->at(i);
401
287
  if (child.type() == Json::Type::STRING &&
@@ -407,8 +293,8 @@ grpc_error* XdsBootstrap::ParseServerFeaturesArray(Json* json,
407
293
  "errors parsing \"server_features\" array", &error_list);
408
294
  }
409
295
 
410
- grpc_error* XdsBootstrap::ParseNode(Json* json) {
411
- std::vector<grpc_error*> error_list;
296
+ grpc_error_handle XdsBootstrap::ParseNode(Json* json) {
297
+ std::vector<grpc_error_handle> error_list;
412
298
  node_ = absl::make_unique<Node>();
413
299
  auto it = json->mutable_object()->find("id");
414
300
  if (it != json->mutable_object()->end()) {
@@ -434,7 +320,7 @@ grpc_error* XdsBootstrap::ParseNode(Json* json) {
434
320
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
435
321
  "\"locality\" field is not an object"));
436
322
  } else {
437
- grpc_error* parse_error = ParseLocality(&it->second);
323
+ grpc_error_handle parse_error = ParseLocality(&it->second);
438
324
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
439
325
  }
440
326
  }
@@ -451,8 +337,8 @@ grpc_error* XdsBootstrap::ParseNode(Json* json) {
451
337
  &error_list);
452
338
  }
453
339
 
454
- grpc_error* XdsBootstrap::ParseLocality(Json* json) {
455
- std::vector<grpc_error*> error_list;
340
+ grpc_error_handle XdsBootstrap::ParseLocality(Json* json) {
341
+ std::vector<grpc_error_handle> error_list;
456
342
  auto it = json->mutable_object()->find("region");
457
343
  if (it != json->mutable_object()->end()) {
458
344
  if (it->second.type() != Json::Type::STRING) {
@@ -484,8 +370,8 @@ grpc_error* XdsBootstrap::ParseLocality(Json* json) {
484
370
  &error_list);
485
371
  }
486
372
 
487
- grpc_error* XdsBootstrap::ParseCertificateProviders(Json* json) {
488
- std::vector<grpc_error*> error_list;
373
+ grpc_error_handle XdsBootstrap::ParseCertificateProviders(Json* json) {
374
+ std::vector<grpc_error_handle> error_list;
489
375
  for (auto& certificate_provider : *(json->mutable_object())) {
490
376
  if (certificate_provider.second.type() != Json::Type::OBJECT) {
491
377
  error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
@@ -493,7 +379,7 @@ grpc_error* XdsBootstrap::ParseCertificateProviders(Json* json) {
493
379
  "\" is not an object")
494
380
  .c_str()));
495
381
  } else {
496
- grpc_error* parse_error = ParseCertificateProvider(
382
+ grpc_error_handle parse_error = ParseCertificateProvider(
497
383
  certificate_provider.first, &certificate_provider.second);
498
384
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
499
385
  }
@@ -502,9 +388,9 @@ grpc_error* XdsBootstrap::ParseCertificateProviders(Json* json) {
502
388
  "errors parsing \"certificate_providers\" object", &error_list);
503
389
  }
504
390
 
505
- grpc_error* XdsBootstrap::ParseCertificateProvider(
391
+ grpc_error_handle XdsBootstrap::ParseCertificateProvider(
506
392
  const std::string& instance_name, Json* certificate_provider_json) {
507
- std::vector<grpc_error*> error_list;
393
+ std::vector<grpc_error_handle> error_list;
508
394
  auto it = certificate_provider_json->mutable_object()->find("plugin_name");
509
395
  if (it == certificate_provider_json->mutable_object()->end()) {
510
396
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
@@ -525,14 +411,14 @@ grpc_error* XdsBootstrap::ParseCertificateProvider(
525
411
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
526
412
  "\"config\" field is not an object"));
527
413
  } else {
528
- grpc_error* parse_error = GRPC_ERROR_NONE;
414
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
529
415
  config = factory->CreateCertificateProviderConfig(it->second,
530
416
  &parse_error);
531
417
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
532
418
  }
533
419
  } else {
534
420
  // "config" is an optional field, so create an empty JSON object.
535
- grpc_error* parse_error = GRPC_ERROR_NONE;
421
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
536
422
  config = factory->CreateCertificateProviderConfig(Json::Object(),
537
423
  &parse_error);
538
424
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
@@ -544,7 +430,7 @@ grpc_error* XdsBootstrap::ParseCertificateProvider(
544
430
  // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
545
431
  // string is not static in this case.
546
432
  if (error_list.empty()) return GRPC_ERROR_NONE;
547
- grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
433
+ grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
548
434
  absl::StrCat("errors parsing element \"", instance_name, "\"").c_str());
549
435
  for (size_t i = 0; i < error_list.size(); ++i) {
550
436
  error = grpc_error_add_child(error, error_list[i]);
@@ -552,4 +438,56 @@ grpc_error* XdsBootstrap::ParseCertificateProvider(
552
438
  return error;
553
439
  }
554
440
 
441
+ std::string XdsBootstrap::ToString() const {
442
+ std::vector<std::string> parts;
443
+ if (node_ != nullptr) {
444
+ parts.push_back(absl::StrFormat(
445
+ "node={\n"
446
+ " id=\"%s\",\n"
447
+ " cluster=\"%s\",\n"
448
+ " locality={\n"
449
+ " region=\"%s\",\n"
450
+ " zone=\"%s\",\n"
451
+ " sub_zone=\"%s\"\n"
452
+ " },\n"
453
+ " metadata=%s,\n"
454
+ "},\n",
455
+ node_->id, node_->cluster, node_->locality_region, node_->locality_zone,
456
+ node_->locality_sub_zone, node_->metadata.Dump()));
457
+ }
458
+ parts.push_back(
459
+ absl::StrFormat("servers=[\n"
460
+ " {\n"
461
+ " uri=\"%s\",\n"
462
+ " creds_type=%s,\n",
463
+ server().server_uri, server().channel_creds_type));
464
+ if (server().channel_creds_config.type() != Json::Type::JSON_NULL) {
465
+ parts.push_back(absl::StrFormat(" creds_config=%s,",
466
+ server().channel_creds_config.Dump()));
467
+ }
468
+ if (!server().server_features.empty()) {
469
+ parts.push_back(absl::StrCat(" server_features=[",
470
+ absl::StrJoin(server().server_features, ", "),
471
+ "],\n"));
472
+ }
473
+ parts.push_back(" }\n],\n");
474
+ if (!server_listener_resource_name_template_.empty()) {
475
+ parts.push_back(
476
+ absl::StrFormat("server_listener_resource_name_template=\"%s\",\n",
477
+ server_listener_resource_name_template_));
478
+ }
479
+ parts.push_back("certificate_providers={\n");
480
+ for (const auto& entry : certificate_providers_) {
481
+ parts.push_back(
482
+ absl::StrFormat(" %s={\n"
483
+ " plugin_name=%s\n"
484
+ " config=%s\n"
485
+ " },\n",
486
+ entry.first, entry.second.plugin_name,
487
+ entry.second.config->ToString()));
488
+ }
489
+ parts.push_back("}");
490
+ return absl::StrJoin(parts, "");
491
+ }
492
+
555
493
  } // namespace grpc_core