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
@@ -113,7 +113,7 @@ LoadBalancingPolicy::PickResult LoadBalancingPolicy::QueuePicker::Pick(
113
113
  auto* parent = parent_->Ref().release(); // ref held by lambda.
114
114
  ExecCtx::Run(DEBUG_LOCATION,
115
115
  GRPC_CLOSURE_CREATE(
116
- [](void* arg, grpc_error* /*error*/) {
116
+ [](void* arg, grpc_error_handle /*error*/) {
117
117
  auto* parent = static_cast<LoadBalancingPolicy*>(arg);
118
118
  parent->work_serializer()->Run(
119
119
  [parent]() {
@@ -230,7 +230,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
230
230
  /// Error to be set when returning a failure.
231
231
  // TODO(roth): Replace this with something similar to grpc::Status,
232
232
  // so that we don't expose grpc_error to this API.
233
- grpc_error* error = GRPC_ERROR_NONE;
233
+ grpc_error_handle error = GRPC_ERROR_NONE;
234
234
 
235
235
  /// Used only if type is PICK_COMPLETE.
236
236
  /// Callback set by LB policy to be notified of trailing metadata.
@@ -243,7 +243,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
243
243
  // TODO(roth): The arguments to this callback should be moved into a
244
244
  // struct, so that we can later add new fields without breaking
245
245
  // existing implementations.
246
- std::function<void(grpc_error*, MetadataInterface*, CallState*)>
246
+ std::function<void(grpc_error_handle, MetadataInterface*, CallState*)>
247
247
  recv_trailing_metadata_ready;
248
248
  };
249
249
 
@@ -387,13 +387,13 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
387
387
  // A picker that returns PICK_TRANSIENT_FAILURE for all picks.
388
388
  class TransientFailurePicker : public SubchannelPicker {
389
389
  public:
390
- explicit TransientFailurePicker(grpc_error* error) : error_(error) {}
390
+ explicit TransientFailurePicker(grpc_error_handle error) : error_(error) {}
391
391
  ~TransientFailurePicker() override { GRPC_ERROR_UNREF(error_); }
392
392
 
393
393
  PickResult Pick(PickArgs args) override;
394
394
 
395
395
  private:
396
- grpc_error* error_;
396
+ grpc_error_handle error_;
397
397
  };
398
398
 
399
399
  protected:
@@ -39,7 +39,7 @@ class LoadBalancingPolicyFactory {
39
39
  virtual const char* name() const = 0;
40
40
 
41
41
  virtual RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
42
- const Json& json, grpc_error** error) const = 0;
42
+ const Json& json, grpc_error_handle* error) const = 0;
43
43
  };
44
44
 
45
45
  } // namespace grpc_core
@@ -109,7 +109,7 @@ bool LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
109
109
  return false;
110
110
  }
111
111
  if (requires_config != nullptr) {
112
- grpc_error* error = GRPC_ERROR_NONE;
112
+ grpc_error_handle error = GRPC_ERROR_NONE;
113
113
  // Check if the load balancing policy allows an empty config
114
114
  *requires_config =
115
115
  factory->ParseLoadBalancingConfig(Json(), &error) == nullptr;
@@ -122,7 +122,7 @@ namespace {
122
122
 
123
123
  // Returns the JSON node of policy (with both policy name and config content)
124
124
  // given the JSON node of a LoadBalancingConfig array.
125
- grpc_error* ParseLoadBalancingConfigHelper(
125
+ grpc_error_handle ParseLoadBalancingConfigHelper(
126
126
  const Json& lb_config_array, Json::Object::const_iterator* result) {
127
127
  if (lb_config_array.type() != Json::Type::ARRAY) {
128
128
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING("type should be array");
@@ -163,8 +163,8 @@ grpc_error* ParseLoadBalancingConfigHelper(
163
163
  } // namespace
164
164
 
165
165
  RefCountedPtr<LoadBalancingPolicy::Config>
166
- LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(const Json& json,
167
- grpc_error** error) {
166
+ LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
167
+ const Json& json, grpc_error_handle* error) {
168
168
  GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
169
169
  GPR_ASSERT(g_state != nullptr);
170
170
  Json::Object::const_iterator policy;
@@ -57,7 +57,7 @@ class LoadBalancingPolicyRegistry {
57
57
  /// Returns a parsed object of the load balancing policy to be used from a
58
58
  /// LoadBalancingConfig array \a json.
59
59
  static RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
60
- const Json& json, grpc_error** error);
60
+ const Json& json, grpc_error_handle* error);
61
61
  };
62
62
 
63
63
  } // namespace grpc_core
@@ -60,8 +60,6 @@ namespace grpc_core {
60
60
 
61
61
  namespace {
62
62
 
63
- const char kDefaultPort[] = "https";
64
-
65
63
  class AresDnsResolver : public Resolver {
66
64
  public:
67
65
  explicit AresDnsResolver(ResolverArgs args);
@@ -80,10 +78,10 @@ class AresDnsResolver : public Resolver {
80
78
  void MaybeStartResolvingLocked();
81
79
  void StartResolvingLocked();
82
80
 
83
- static void OnNextResolution(void* arg, grpc_error* error);
84
- static void OnResolved(void* arg, grpc_error* error);
85
- void OnNextResolutionLocked(grpc_error* error);
86
- void OnResolvedLocked(grpc_error* error);
81
+ static void OnNextResolution(void* arg, grpc_error_handle error);
82
+ static void OnResolved(void* arg, grpc_error_handle error);
83
+ void OnNextResolutionLocked(grpc_error_handle error);
84
+ void OnResolvedLocked(grpc_error_handle error);
87
85
 
88
86
  /// DNS server to use (if not system default)
89
87
  std::string dns_server_;
@@ -193,18 +191,18 @@ void AresDnsResolver::ShutdownLocked() {
193
191
  }
194
192
  }
195
193
 
196
- void AresDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
194
+ void AresDnsResolver::OnNextResolution(void* arg, grpc_error_handle error) {
197
195
  AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
198
196
  GRPC_ERROR_REF(error); // ref owned by lambda
199
197
  r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
200
198
  DEBUG_LOCATION);
201
199
  }
202
200
 
203
- void AresDnsResolver::OnNextResolutionLocked(grpc_error* error) {
201
+ void AresDnsResolver::OnNextResolutionLocked(grpc_error_handle error) {
204
202
  GRPC_CARES_TRACE_LOG(
205
203
  "resolver:%p re-resolution timer fired. error: %s. shutdown_initiated_: "
206
204
  "%d",
207
- this, grpc_error_string(error), shutdown_initiated_);
205
+ this, grpc_error_std_string(error).c_str(), shutdown_initiated_);
208
206
  have_next_resolution_timer_ = false;
209
207
  if (error == GRPC_ERROR_NONE && !shutdown_initiated_) {
210
208
  if (!resolving_) {
@@ -227,7 +225,7 @@ bool ValueInJsonArray(const Json::Array& array, const char* value) {
227
225
  }
228
226
 
229
227
  std::string ChooseServiceConfig(char* service_config_choice_json,
230
- grpc_error** error) {
228
+ grpc_error_handle* error) {
231
229
  Json json = Json::Parse(service_config_choice_json, error);
232
230
  if (*error != GRPC_ERROR_NONE) return "";
233
231
  if (json.type() != Json::Type::ARRAY) {
@@ -236,7 +234,7 @@ std::string ChooseServiceConfig(char* service_config_choice_json,
236
234
  return "";
237
235
  }
238
236
  const Json* service_config = nullptr;
239
- absl::InlinedVector<grpc_error*, 4> error_list;
237
+ absl::InlinedVector<grpc_error_handle, 4> error_list;
240
238
  for (const Json& choice : json.array_value()) {
241
239
  if (choice.type() != Json::Type::OBJECT) {
242
240
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
@@ -305,14 +303,14 @@ std::string ChooseServiceConfig(char* service_config_choice_json,
305
303
  return service_config->Dump();
306
304
  }
307
305
 
308
- void AresDnsResolver::OnResolved(void* arg, grpc_error* error) {
306
+ void AresDnsResolver::OnResolved(void* arg, grpc_error_handle error) {
309
307
  AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
310
308
  GRPC_ERROR_REF(error); // ref owned by lambda
311
309
  r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
312
310
  DEBUG_LOCATION);
313
311
  }
314
312
 
315
- void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
313
+ void AresDnsResolver::OnResolvedLocked(grpc_error_handle error) {
316
314
  GPR_ASSERT(resolving_);
317
315
  resolving_ = false;
318
316
  gpr_free(pending_request_);
@@ -354,7 +352,7 @@ void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
354
352
  backoff_.Reset();
355
353
  } else {
356
354
  GRPC_CARES_TRACE_LOG("resolver:%p dns resolution failed: %s", this,
357
- grpc_error_string(error));
355
+ grpc_error_std_string(error).c_str());
358
356
  std::string error_message =
359
357
  absl::StrCat("DNS resolution failed for service: ", name_to_resolve_);
360
358
  result_handler_->ReturnError(grpc_error_set_int(
@@ -362,10 +360,14 @@ void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
362
360
  &error, 1),
363
361
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
364
362
  // Set retry timer.
363
+ // InvalidateNow to avoid getting stuck re-initializing this timer
364
+ // in a loop while draining the currently-held WorkSerializer.
365
+ // Also see https://github.com/grpc/grpc/issues/26079.
366
+ ExecCtx::Get()->InvalidateNow();
365
367
  grpc_millis next_try = backoff_.NextAttemptTime();
366
368
  grpc_millis timeout = next_try - ExecCtx::Get()->Now();
367
369
  GRPC_CARES_TRACE_LOG("resolver:%p dns resolution failed (will retry): %s",
368
- this, grpc_error_string(error));
370
+ this, grpc_error_std_string(error).c_str());
369
371
  GPR_ASSERT(!have_next_resolution_timer_);
370
372
  have_next_resolution_timer_ = true;
371
373
  // TODO(roth): We currently deal with this ref manually. Once the
@@ -389,6 +391,10 @@ void AresDnsResolver::MaybeStartResolvingLocked() {
389
391
  // can start the next resolution.
390
392
  if (have_next_resolution_timer_) return;
391
393
  if (last_resolution_timestamp_ >= 0) {
394
+ // InvalidateNow to avoid getting stuck re-initializing this timer
395
+ // in a loop while draining the currently-held WorkSerializer.
396
+ // Also see https://github.com/grpc/grpc/issues/26079.
397
+ ExecCtx::Get()->InvalidateNow();
392
398
  const grpc_millis earliest_next_resolution =
393
399
  last_resolution_timestamp_ + min_time_between_resolutions_;
394
400
  const grpc_millis ms_until_next_resolution =
@@ -423,7 +429,7 @@ void AresDnsResolver::StartResolvingLocked() {
423
429
  resolving_ = true;
424
430
  service_config_json_ = nullptr;
425
431
  pending_request_ = grpc_dns_lookup_ares_locked(
426
- dns_server_.c_str(), name_to_resolve_.c_str(), kDefaultPort,
432
+ dns_server_.c_str(), name_to_resolve_.c_str(), kDefaultSecurePort,
427
433
  interested_parties_, &on_resolved_, &addresses_,
428
434
  enable_srv_queries_ ? &balancer_addresses_ : nullptr,
429
435
  request_service_config_ ? &service_config_json_ : nullptr,
@@ -455,7 +461,7 @@ class AresDnsResolverFactory : public ResolverFactory {
455
461
  extern grpc_address_resolver_vtable* grpc_resolve_address_impl;
456
462
  static grpc_address_resolver_vtable* default_resolver;
457
463
 
458
- static grpc_error* blocking_resolve_address_ares(
464
+ static grpc_error_handle blocking_resolve_address_ares(
459
465
  const char* name, const char* default_port,
460
466
  grpc_resolved_addresses** addresses) {
461
467
  return default_resolver->blocking_resolve_address(name, default_port,
@@ -490,7 +496,7 @@ void grpc_resolver_dns_ares_init() {
490
496
  g_use_ares_dns_resolver = true;
491
497
  gpr_log(GPR_DEBUG, "Using ares dns resolver");
492
498
  address_sorting_init();
493
- grpc_error* error = grpc_ares_init();
499
+ grpc_error_handle error = grpc_ares_init();
494
500
  if (error != GRPC_ERROR_NONE) {
495
501
  GRPC_LOG_IF_ERROR("grpc_ares_init() failed", error);
496
502
  return;
@@ -42,7 +42,7 @@ class GrpcPolledFd {
42
42
  virtual bool IsFdStillReadableLocked() = 0;
43
43
  /* Called once and only once. Must cause cancellation of any pending
44
44
  * read/write callbacks. */
45
- virtual void ShutdownLocked(grpc_error* error) = 0;
45
+ virtual void ShutdownLocked(grpc_error_handle error) = 0;
46
46
  /* Get the underlying ares_socket_t that this was created from */
47
47
  virtual ares_socket_t GetWrappedAresSocketLocked() = 0;
48
48
  /* A unique name, for logging */
@@ -0,0 +1,31 @@
1
+ // Copyright 2021 The gRPC Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ #include <grpc/support/port_platform.h>
15
+
16
+ #include "src/core/lib/iomgr/port.h"
17
+ #if GRPC_ARES == 1 && defined(GRPC_USE_EVENT_ENGINE)
18
+
19
+ #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h"
20
+ #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
21
+
22
+ namespace grpc_core {
23
+
24
+ std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
25
+ std::shared_ptr<WorkSerializer> /* work_serializer */) {
26
+ return nullptr;
27
+ }
28
+
29
+ } // namespace grpc_core
30
+
31
+ #endif /* GRPC_ARES == 1 && defined(GRPC_USE_EVENT_ENGINE) */
@@ -75,7 +75,7 @@ class GrpcPolledFdLibuv : public GrpcPolledFd {
75
75
  return false;
76
76
  }
77
77
 
78
- void ShutdownInternalLocked(grpc_error* error) {
78
+ void ShutdownInternalLocked(grpc_error_handle error) {
79
79
  uv_poll_stop(handle_);
80
80
  uv_close(reinterpret_cast<uv_handle_t*>(handle_), ares_uv_poll_close_cb);
81
81
  if (read_closure_ != nullptr) {
@@ -88,7 +88,7 @@ class GrpcPolledFdLibuv : public GrpcPolledFd {
88
88
  }
89
89
  }
90
90
 
91
- void ShutdownLocked(grpc_error* error) override {
91
+ void ShutdownLocked(grpc_error_handle error) override {
92
92
  if (grpc_core::ExecCtx::Get() == nullptr) {
93
93
  grpc_core::ExecCtx exec_ctx;
94
94
  ShutdownInternalLocked(error);
@@ -127,7 +127,7 @@ static void ares_uv_poll_cb_locked(AresUvPollCbArg* arg) {
127
127
  int events = arg_struct->events;
128
128
  GrpcPolledFdLibuv* polled_fd =
129
129
  reinterpret_cast<GrpcPolledFdLibuv*>(handle->data);
130
- grpc_error* error = GRPC_ERROR_NONE;
130
+ grpc_error_handle error = GRPC_ERROR_NONE;
131
131
  if (status < 0) {
132
132
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("cares polling error");
133
133
  error =
@@ -33,10 +33,10 @@
33
33
  #include <grpc/support/string_util.h>
34
34
  #include <grpc/support/time.h>
35
35
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
36
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
36
37
  #include "src/core/lib/gpr/string.h"
37
38
  #include "src/core/lib/iomgr/ev_posix.h"
38
39
  #include "src/core/lib/iomgr/iomgr_internal.h"
39
- #include "src/core/lib/iomgr/sockaddr_utils.h"
40
40
 
41
41
  namespace grpc_core {
42
42
 
@@ -72,7 +72,7 @@ class GrpcPolledFdPosix : public GrpcPolledFd {
72
72
  bytes_available > 0;
73
73
  }
74
74
 
75
- void ShutdownLocked(grpc_error* error) override {
75
+ void ShutdownLocked(grpc_error_handle error) override {
76
76
  grpc_fd_shutdown(fd_, error);
77
77
  }
78
78
 
@@ -30,10 +30,10 @@
30
30
  #include <grpc/support/string_util.h>
31
31
  #include <grpc/support/time.h>
32
32
  #include <string.h>
33
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
33
34
  #include "src/core/lib/gpr/string.h"
34
35
  #include "src/core/lib/gprpp/memory.h"
35
36
  #include "src/core/lib/iomgr/iocp_windows.h"
36
- #include "src/core/lib/iomgr/sockaddr_utils.h"
37
37
  #include "src/core/lib/iomgr/sockaddr_windows.h"
38
38
  #include "src/core/lib/iomgr/socket_windows.h"
39
39
  #include "src/core/lib/iomgr/tcp_windows.h"
@@ -131,12 +131,12 @@ class GrpcPolledFdWindows {
131
131
  grpc_winsocket_destroy(winsocket_);
132
132
  }
133
133
 
134
- void ScheduleAndNullReadClosure(grpc_error* error) {
134
+ void ScheduleAndNullReadClosure(grpc_error_handle error) {
135
135
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, read_closure_, error);
136
136
  read_closure_ = nullptr;
137
137
  }
138
138
 
139
- void ScheduleAndNullWriteClosure(grpc_error* error) {
139
+ void ScheduleAndNullWriteClosure(grpc_error_handle error) {
140
140
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, write_closure_, error);
141
141
  write_closure_ = nullptr;
142
142
  }
@@ -253,7 +253,7 @@ class GrpcPolledFdWindows {
253
253
 
254
254
  bool IsFdStillReadableLocked() { return read_buf_has_data_; }
255
255
 
256
- void ShutdownLocked(grpc_error* error) {
256
+ void ShutdownLocked(grpc_error_handle error) {
257
257
  grpc_winsocket_shutdown(winsocket_);
258
258
  }
259
259
 
@@ -420,7 +420,7 @@ class GrpcPolledFdWindows {
420
420
  abort();
421
421
  }
422
422
 
423
- static void OnTcpConnect(void* arg, grpc_error* error) {
423
+ static void OnTcpConnect(void* arg, grpc_error_handle error) {
424
424
  GrpcPolledFdWindows* grpc_polled_fd =
425
425
  static_cast<GrpcPolledFdWindows*>(arg);
426
426
  GRPC_ERROR_REF(error); // ref owned by lambda
@@ -431,12 +431,12 @@ class GrpcPolledFdWindows {
431
431
  DEBUG_LOCATION);
432
432
  }
433
433
 
434
- void OnTcpConnectLocked(grpc_error* error) {
434
+ void OnTcpConnectLocked(grpc_error_handle error) {
435
435
  GRPC_CARES_TRACE_LOG(
436
436
  "fd:%s InnerOnTcpConnectLocked error:|%s| "
437
437
  "pending_register_for_readable:%d"
438
438
  " pending_register_for_writeable:%d",
439
- GetName(), grpc_error_string(error),
439
+ GetName(), grpc_error_std_string(error).c_str(),
440
440
  pending_continue_register_for_on_readable_locked_,
441
441
  pending_continue_register_for_on_writeable_locked_);
442
442
  GPR_ASSERT(!connect_done_);
@@ -576,7 +576,7 @@ class GrpcPolledFdWindows {
576
576
  return out;
577
577
  }
578
578
 
579
- static void OnIocpReadable(void* arg, grpc_error* error) {
579
+ static void OnIocpReadable(void* arg, grpc_error_handle error) {
580
580
  GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
581
581
  GRPC_ERROR_REF(error); // ref owned by lambda
582
582
  polled_fd->work_serializer_->Run(
@@ -589,7 +589,7 @@ class GrpcPolledFdWindows {
589
589
  // c-ares reads from this socket later, but it shouldn't necessarily cancel
590
590
  // the entire resolution attempt. Doing so will allow the "inject broken
591
591
  // nameserver list" test to pass on Windows.
592
- void OnIocpReadableLocked(grpc_error* error) {
592
+ void OnIocpReadableLocked(grpc_error_handle error) {
593
593
  if (error == GRPC_ERROR_NONE) {
594
594
  if (winsocket_->read_info.wsa_error != 0) {
595
595
  /* WSAEMSGSIZE would be due to receiving more data
@@ -603,7 +603,7 @@ class GrpcPolledFdWindows {
603
603
  "fd:|%s| OnIocpReadableInner winsocket_->read_info.wsa_error "
604
604
  "code:|%d| msg:|%s|",
605
605
  GetName(), winsocket_->read_info.wsa_error,
606
- grpc_error_string(error));
606
+ grpc_error_std_string(error).c_str());
607
607
  }
608
608
  }
609
609
  }
@@ -621,7 +621,7 @@ class GrpcPolledFdWindows {
621
621
  ScheduleAndNullReadClosure(error);
622
622
  }
623
623
 
624
- static void OnIocpWriteable(void* arg, grpc_error* error) {
624
+ static void OnIocpWriteable(void* arg, grpc_error_handle error) {
625
625
  GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
626
626
  GRPC_ERROR_REF(error); // error owned by lambda
627
627
  polled_fd->work_serializer_->Run(
@@ -629,7 +629,7 @@ class GrpcPolledFdWindows {
629
629
  DEBUG_LOCATION);
630
630
  }
631
631
 
632
- void OnIocpWriteableLocked(grpc_error* error) {
632
+ void OnIocpWriteableLocked(grpc_error_handle error) {
633
633
  GRPC_CARES_TRACE_LOG("OnIocpWriteableInner. fd:|%s|", GetName());
634
634
  GPR_ASSERT(socket_type_ == SOCK_STREAM);
635
635
  if (error == GRPC_ERROR_NONE) {
@@ -640,7 +640,7 @@ class GrpcPolledFdWindows {
640
640
  "fd:|%s| OnIocpWriteableInner. winsocket_->write_info.wsa_error "
641
641
  "code:|%d| msg:|%s|",
642
642
  GetName(), winsocket_->write_info.wsa_error,
643
- grpc_error_string(error));
643
+ grpc_error_std_string(error).c_str());
644
644
  }
645
645
  }
646
646
  GPR_ASSERT(tcp_write_state_ == WRITE_PENDING);
@@ -851,7 +851,7 @@ class GrpcPolledFdWindowsWrapper : public GrpcPolledFd {
851
851
  return wrapped_->IsFdStillReadableLocked();
852
852
  }
853
853
 
854
- void ShutdownLocked(grpc_error* error) override {
854
+ void ShutdownLocked(grpc_error_handle error) override {
855
855
  wrapped_->ShutdownLocked(error);
856
856
  }
857
857
 
@@ -38,14 +38,14 @@
38
38
 
39
39
  #include <address_sorting/address_sorting.h>
40
40
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h"
41
+ #include "src/core/lib/address_utils/parse_address.h"
42
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
41
43
  #include "src/core/lib/gpr/string.h"
42
44
  #include "src/core/lib/gprpp/host_port.h"
43
45
  #include "src/core/lib/iomgr/error.h"
44
46
  #include "src/core/lib/iomgr/executor.h"
45
47
  #include "src/core/lib/iomgr/iomgr_internal.h"
46
48
  #include "src/core/lib/iomgr/nameser.h"
47
- #include "src/core/lib/iomgr/parse_address.h"
48
- #include "src/core/lib/iomgr/sockaddr_utils.h"
49
49
  #include "src/core/lib/iomgr/timer.h"
50
50
  #include "src/core/lib/transport/authority_override.h"
51
51
 
@@ -77,7 +77,7 @@ struct grpc_ares_request {
77
77
  size_t pending_queries;
78
78
 
79
79
  /** the errors explaining query failures, appended to in query callbacks */
80
- grpc_error* error;
80
+ grpc_error_handle error;
81
81
  };
82
82
 
83
83
  typedef struct fd_node {
@@ -268,11 +268,13 @@ static grpc_millis calculate_next_ares_backup_poll_alarm_ms(
268
268
  grpc_core::ExecCtx::Get()->Now();
269
269
  }
270
270
 
271
- static void on_timeout_locked(grpc_ares_ev_driver* driver, grpc_error* error) {
271
+ static void on_timeout_locked(grpc_ares_ev_driver* driver,
272
+ grpc_error_handle error) {
272
273
  GRPC_CARES_TRACE_LOG(
273
274
  "request:%p ev_driver=%p on_timeout_locked. driver->shutting_down=%d. "
274
275
  "err=%s",
275
- driver->request, driver, driver->shutting_down, grpc_error_string(error));
276
+ driver->request, driver, driver->shutting_down,
277
+ grpc_error_std_string(error).c_str());
276
278
  if (!driver->shutting_down && error == GRPC_ERROR_NONE) {
277
279
  grpc_ares_ev_driver_shutdown_locked(driver);
278
280
  }
@@ -280,7 +282,7 @@ static void on_timeout_locked(grpc_ares_ev_driver* driver, grpc_error* error) {
280
282
  GRPC_ERROR_UNREF(error);
281
283
  }
282
284
 
283
- static void on_timeout(void* arg, grpc_error* error) {
285
+ static void on_timeout(void* arg, grpc_error_handle error) {
284
286
  grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
285
287
  GRPC_ERROR_REF(error); // ref owned by lambda
286
288
  driver->work_serializer->Run(
@@ -290,9 +292,9 @@ static void on_timeout(void* arg, grpc_error* error) {
290
292
  static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver);
291
293
 
292
294
  static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver,
293
- grpc_error* error);
295
+ grpc_error_handle error);
294
296
 
295
- static void on_ares_backup_poll_alarm(void* arg, grpc_error* error) {
297
+ static void on_ares_backup_poll_alarm(void* arg, grpc_error_handle error) {
296
298
  grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
297
299
  GRPC_ERROR_REF(error);
298
300
  driver->work_serializer->Run(
@@ -309,12 +311,13 @@ static void on_ares_backup_poll_alarm(void* arg, grpc_error* error) {
309
311
  * For the latter, we use this backup poller. Also see
310
312
  * https://github.com/grpc/grpc/pull/17688 description for more details. */
311
313
  static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver,
312
- grpc_error* error) {
314
+ grpc_error_handle error) {
313
315
  GRPC_CARES_TRACE_LOG(
314
316
  "request:%p ev_driver=%p on_ares_backup_poll_alarm_locked. "
315
317
  "driver->shutting_down=%d. "
316
318
  "err=%s",
317
- driver->request, driver, driver->shutting_down, grpc_error_string(error));
319
+ driver->request, driver, driver->shutting_down,
320
+ grpc_error_std_string(error).c_str());
318
321
  if (!driver->shutting_down && error == GRPC_ERROR_NONE) {
319
322
  fd_node* fdn = driver->fds;
320
323
  while (fdn != nullptr) {
@@ -329,6 +332,10 @@ static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver,
329
332
  fdn = fdn->next;
330
333
  }
331
334
  if (!driver->shutting_down) {
335
+ // InvalidateNow to avoid getting stuck re-initializing this timer
336
+ // in a loop while draining the currently-held WorkSerializer.
337
+ // Also see https://github.com/grpc/grpc/issues/26079.
338
+ grpc_core::ExecCtx::Get()->InvalidateNow();
332
339
  grpc_millis next_ares_backup_poll_alarm =
333
340
  calculate_next_ares_backup_poll_alarm_ms(driver);
334
341
  grpc_ares_ev_driver_ref(driver);
@@ -345,7 +352,7 @@ static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver,
345
352
  GRPC_ERROR_UNREF(error);
346
353
  }
347
354
 
348
- static void on_readable_locked(fd_node* fdn, grpc_error* error) {
355
+ static void on_readable_locked(fd_node* fdn, grpc_error_handle error) {
349
356
  GPR_ASSERT(fdn->readable_registered);
350
357
  grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
351
358
  const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked();
@@ -370,14 +377,14 @@ static void on_readable_locked(fd_node* fdn, grpc_error* error) {
370
377
  GRPC_ERROR_UNREF(error);
371
378
  }
372
379
 
373
- static void on_readable(void* arg, grpc_error* error) {
380
+ static void on_readable(void* arg, grpc_error_handle error) {
374
381
  fd_node* fdn = static_cast<fd_node*>(arg);
375
382
  GRPC_ERROR_REF(error); /* ref owned by lambda */
376
383
  fdn->ev_driver->work_serializer->Run(
377
384
  [fdn, error]() { on_readable_locked(fdn, error); }, DEBUG_LOCATION);
378
385
  }
379
386
 
380
- static void on_writable_locked(fd_node* fdn, grpc_error* error) {
387
+ static void on_writable_locked(fd_node* fdn, grpc_error_handle error) {
381
388
  GPR_ASSERT(fdn->writable_registered);
382
389
  grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
383
390
  const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked();
@@ -400,7 +407,7 @@ static void on_writable_locked(fd_node* fdn, grpc_error* error) {
400
407
  GRPC_ERROR_UNREF(error);
401
408
  }
402
409
 
403
- static void on_writable(void* arg, grpc_error* error) {
410
+ static void on_writable(void* arg, grpc_error_handle error) {
404
411
  fd_node* fdn = static_cast<fd_node*>(arg);
405
412
  GRPC_ERROR_REF(error); /* ref owned by lambda */
406
413
  fdn->ev_driver->work_serializer->Run(
@@ -516,7 +523,7 @@ static void noop_inject_channel_config(ares_channel /*channel*/) {}
516
523
  void (*grpc_ares_test_only_inject_config)(ares_channel channel) =
517
524
  noop_inject_channel_config;
518
525
 
519
- grpc_error* grpc_ares_ev_driver_create_locked(
526
+ grpc_error_handle grpc_ares_ev_driver_create_locked(
520
527
  grpc_ares_ev_driver** ev_driver, grpc_pollset_set* pollset_set,
521
528
  int query_timeout_ms,
522
529
  std::shared_ptr<grpc_core::WorkSerializer> work_serializer,
@@ -529,7 +536,7 @@ grpc_error* grpc_ares_ev_driver_create_locked(
529
536
  grpc_ares_test_only_inject_config((*ev_driver)->channel);
530
537
  GRPC_CARES_TRACE_LOG("request:%p grpc_ares_ev_driver_create_locked", request);
531
538
  if (status != ARES_SUCCESS) {
532
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
539
+ grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
533
540
  absl::StrCat("Failed to init ares channel. C-ares error: ",
534
541
  ares_strerror(status))
535
542
  .c_str());
@@ -713,7 +720,8 @@ static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
713
720
  hr->qtype, hr->host, hr->is_balancer, ares_strerror(status));
714
721
  GRPC_CARES_TRACE_LOG("request:%p on_hostbyname_done_locked: %s", r,
715
722
  error_msg.c_str());
716
- grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str());
723
+ grpc_error_handle error =
724
+ GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str());
717
725
  r->error = grpc_error_add_child(error, r->error);
718
726
  }
719
727
  destroy_hostbyname_request_locked(hr);
@@ -757,7 +765,8 @@ static void on_srv_query_done_locked(void* arg, int status, int /*timeouts*/,
757
765
  ares_strerror(status));
758
766
  GRPC_CARES_TRACE_LOG("request:%p on_srv_query_done_locked: %s", r,
759
767
  error_msg.c_str());
760
- grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str());
768
+ grpc_error_handle error =
769
+ GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str());
761
770
  r->error = grpc_error_add_child(error, r->error);
762
771
  }
763
772
  delete q;
@@ -773,7 +782,7 @@ static void on_txt_done_locked(void* arg, int status, int /*timeouts*/,
773
782
  const size_t prefix_len = sizeof(g_service_config_attribute_prefix) - 1;
774
783
  struct ares_txt_ext* result = nullptr;
775
784
  struct ares_txt_ext* reply = nullptr;
776
- grpc_error* error = GRPC_ERROR_NONE;
785
+ grpc_error_handle error = GRPC_ERROR_NONE;
777
786
  if (status != ARES_SUCCESS) goto fail;
778
787
  GRPC_CARES_TRACE_LOG("request:%p on_txt_done_locked name=%s ARES_SUCCESS", r,
779
788
  q->name().c_str());
@@ -825,7 +834,7 @@ void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
825
834
  const char* default_port, grpc_pollset_set* interested_parties,
826
835
  int query_timeout_ms,
827
836
  std::shared_ptr<grpc_core::WorkSerializer> work_serializer) {
828
- grpc_error* error = GRPC_ERROR_NONE;
837
+ grpc_error_handle error = GRPC_ERROR_NONE;
829
838
  grpc_ares_hostbyname_request* hr = nullptr;
830
839
  /* parse name, splitting it into host and port parts */
831
840
  std::string host;
@@ -1116,7 +1125,7 @@ void (*grpc_cancel_ares_request_locked)(grpc_ares_request* r) =
1116
1125
  // Windows. Calling them may cause race conditions when other parts of the
1117
1126
  // binary calls these functions concurrently.
1118
1127
  #ifdef GPR_WINDOWS
1119
- grpc_error* grpc_ares_init(void) {
1128
+ grpc_error_handle grpc_ares_init(void) {
1120
1129
  int status = ares_library_init(ARES_LIB_INIT_ALL);
1121
1130
  if (status != ARES_SUCCESS) {
1122
1131
  return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
@@ -1128,7 +1137,7 @@ grpc_error* grpc_ares_init(void) {
1128
1137
 
1129
1138
  void grpc_ares_cleanup(void) { ares_library_cleanup(); }
1130
1139
  #else
1131
- grpc_error* grpc_ares_init(void) { return GRPC_ERROR_NONE; }
1140
+ grpc_error_handle grpc_ares_init(void) { return GRPC_ERROR_NONE; }
1132
1141
  void grpc_ares_cleanup(void) {}
1133
1142
  #endif // GPR_WINDOWS
1134
1143
 
@@ -1159,7 +1168,7 @@ typedef struct grpc_resolve_address_ares_request {
1159
1168
  } grpc_resolve_address_ares_request;
1160
1169
 
1161
1170
  static void on_dns_lookup_done_locked(grpc_resolve_address_ares_request* r,
1162
- grpc_error* error) {
1171
+ grpc_error_handle error) {
1163
1172
  gpr_free(r->ares_request);
1164
1173
  grpc_resolved_addresses** resolved_addresses = r->addrs_out;
1165
1174
  if (r->addresses == nullptr || r->addresses->empty()) {
@@ -1180,7 +1189,7 @@ static void on_dns_lookup_done_locked(grpc_resolve_address_ares_request* r,
1180
1189
  delete r;
1181
1190
  }
1182
1191
 
1183
- static void on_dns_lookup_done(void* arg, grpc_error* error) {
1192
+ static void on_dns_lookup_done(void* arg, grpc_error_handle error) {
1184
1193
  grpc_resolve_address_ares_request* r =
1185
1194
  static_cast<grpc_resolve_address_ares_request*>(arg);
1186
1195
  GRPC_ERROR_REF(error); // ref owned by lambda